Compare commits
9 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| a3c8f48d55 | |||
| 6b966a3b5f | |||
| 75c0f07eab | |||
| f0946be1fc | |||
| d836297c89 | |||
| d9ff5e891c | |||
| 5cf588ffe3 | |||
| a734ffc933 | |||
| 908188ddf2 |
@@ -407,5 +407,14 @@ traducción inmediata, avisar a Rafa directamente además de pedírselo a Hermes
|
||||
| Asignar `_carta_id` a un artículo | `POST /wp-json/fea/v1/carta-id/{id}` con body `{"carta_id": N}` |
|
||||
| Borrar `_carta_id` de un artículo | `DELETE /wp-json/fea/v1/carta-id/{id}` |
|
||||
|
||||
## Regla para la sección Evangelio y comentarios al Evangelio
|
||||
|
||||
La sección empieza siempre con el enlace al post del evangelio de esa semana (por
|
||||
ejemplo, `MATEO 14, 22-33`) y después van los comentarios. Si ese post no existe,
|
||||
avisad antes de publicar la carta: no empecéis la sección por un comentario.
|
||||
|
||||
No hay que completar ningún campo nuevo. A partir de ese enlace, el sitio asigna la
|
||||
cita bíblica automáticamente a los comentarios nuevos.
|
||||
|
||||
Campos útiles del post: `title`, `content` (HTML), `status` (`draft`/`publish`/`future`),
|
||||
`date` (ISO 8601 para programar), `categories` (array de IDs), `featured_media` (ID de adjunto).
|
||||
|
||||
@@ -84,6 +84,14 @@ add_action('wp_head', function () {
|
||||
}
|
||||
#fea-theme-btn:hover { background: rgba(0,0,0,0.06); }
|
||||
|
||||
/* La luna debe destacar también sobre cabeceras claras. */
|
||||
html:not([data-fea-theme="dark"]) #fea-theme-btn {
|
||||
background: #000;
|
||||
border-color: #000;
|
||||
color: #f6c744;
|
||||
}
|
||||
html:not([data-fea-theme="dark"]) #fea-theme-btn:hover { background: #242424; }
|
||||
|
||||
/* ══════════════════════════════════════════════════════════════════
|
||||
MODO OSCURO — activado por [data-fea-theme="dark"] en <html>
|
||||
══════════════════════════════════════════════════════════════════ */
|
||||
@@ -105,7 +113,8 @@ add_action('wp_head', function () {
|
||||
--wp--preset--color--base: #0d0d0d;
|
||||
--wp--preset--color--contrast: #ececec;
|
||||
}
|
||||
html[data-fea-theme="dark"] a { color: <?php echo esc_html($accent_dark); ?>; }
|
||||
html[data-fea-theme="dark"] a,
|
||||
html[data-fea-theme="dark"] a:visited { color: <?php echo esc_html($accent_dark); ?>; }
|
||||
html[data-fea-theme="dark"] a:focus-visible,
|
||||
html[data-fea-theme="dark"] button:focus-visible {
|
||||
outline-color: <?php echo esc_html($accent_dark); ?> !important;
|
||||
@@ -184,6 +193,117 @@ add_action('wp_head', function () {
|
||||
color: #b8afa8;
|
||||
}
|
||||
|
||||
/* Comentarios al evangelio: el panel usa colores editoriales claros fijos. */
|
||||
html[data-fea-theme="dark"] .fea-com-evangelio {
|
||||
background: #1a1711;
|
||||
border-left-color: #c9973e;
|
||||
color: #ececec;
|
||||
}
|
||||
html[data-fea-theme="dark"] .fea-com-evangelio-details summary {
|
||||
color: #f0c674;
|
||||
}
|
||||
|
||||
/* Elementos editoriales presentes en artículos y resultados. */
|
||||
html[data-fea-theme="dark"] .fea-audio {
|
||||
background: #161311;
|
||||
border-color: #3a302b;
|
||||
border-left-color: <?php echo esc_html($accent_dark); ?>;
|
||||
}
|
||||
html[data-fea-theme="dark"] .fea-byline-name { color: #ececec; }
|
||||
html[data-fea-theme="dark"] .fea-byline-cat,
|
||||
html[data-fea-theme="dark"] .fea-eed-link .fecha { color: #b8afa8; }
|
||||
html[data-fea-theme="dark"] .fea-share-rule { border-top-color: #3a302b; }
|
||||
html[data-fea-theme="dark"] .fea-share-row { color: #d5cbc3; }
|
||||
html[data-fea-theme="dark"] .fea-share-label,
|
||||
html[data-fea-theme="dark"] .fea-share-sep { color: #b8afa8; }
|
||||
|
||||
/* Formulario y filtros de búsqueda avanzada. */
|
||||
html[data-fea-theme="dark"] .fea-adv-details {
|
||||
background: #161311; border-color: #3a302b;
|
||||
}
|
||||
html[data-fea-theme="dark"] .fea-adv-summary {
|
||||
background: #24181c; border-bottom-color: #3a302b;
|
||||
color: <?php echo esc_html($accent_dark); ?>;
|
||||
}
|
||||
html[data-fea-theme="dark"] .fea-adv-label,
|
||||
html[data-fea-theme="dark"] .fea-adv-chips-label,
|
||||
html[data-fea-theme="dark"] .fea-adv-meta,
|
||||
html[data-fea-theme="dark"] .fea-archive-card .fea-adv-byline { color: #b8afa8; }
|
||||
html[data-fea-theme="dark"] .fea-adv-chip {
|
||||
background: #2a1b20; border-color: #56343d; color: #ececec;
|
||||
}
|
||||
html[data-fea-theme="dark"] .fea-adv-input,
|
||||
html[data-fea-theme="dark"] .fea-adv-select {
|
||||
background: #1c1c1c; border-color: #3a3a3a; color: #ececec;
|
||||
}
|
||||
html[data-fea-theme="dark"] .fea-adv-count { color: #b8afa8; }
|
||||
|
||||
/* Recopilatorios y galería multimedia. */
|
||||
html[data-fea-theme="dark"] .fea-recop-year { border-bottom-color: #3a302b; }
|
||||
html[data-fea-theme="dark"] .fea-recop-list li { border-bottom-color: #2a2320; }
|
||||
html[data-fea-theme="dark"] .fea-recop-list a,
|
||||
html[data-fea-theme="dark"] .fea-mm-title { color: #ececec; }
|
||||
html[data-fea-theme="dark"] .fea-recop-date,
|
||||
html[data-fea-theme="dark"] .fea-mm-date,
|
||||
html[data-fea-theme="dark"] .fea-mm-excerpt { color: #b8afa8; }
|
||||
html[data-fea-theme="dark"] .fea-mm-card { background: #161311; border-color: #2a2320; }
|
||||
html[data-fea-theme="dark"] .fea-mm-thumb { background: #241f1c; }
|
||||
|
||||
/* Galerías de pensamientos y navegación del tema base. */
|
||||
html[data-fea-theme="dark"] .fea-gallery-item {
|
||||
background: #161311; border-color: #3a302b;
|
||||
}
|
||||
html[data-fea-theme="dark"] .fea-lightbox-frame img { background: #161311; }
|
||||
html[data-fea-theme="dark"] .fea-lightbox button { background: #2a2320; color: #ececec; }
|
||||
html[data-fea-theme="dark"] .wp-block-navigation .wp-block-navigation-item__content {
|
||||
color: #ececec;
|
||||
}
|
||||
html[data-fea-theme="dark"] .wp-block-navigation__submenu-container {
|
||||
background: #161311; border-color: #3a302b;
|
||||
}
|
||||
|
||||
/* Página de apoyo: plantilla propia con colores claros explícitos. */
|
||||
html[data-fea-theme="dark"] .fea-support-page {
|
||||
--fea-support-ink: #ececec;
|
||||
--fea-support-warm: #161311;
|
||||
--fea-support-line: #3a302b;
|
||||
--fea-support-card: #161311;
|
||||
}
|
||||
html[data-fea-theme="dark"] .fea-support-hero,
|
||||
html[data-fea-theme="dark"] .fea-support-banner {
|
||||
background: #1a1711 !important;
|
||||
border-color: #3a302b !important;
|
||||
}
|
||||
html[data-fea-theme="dark"] .fea-support-card,
|
||||
html[data-fea-theme="dark"] .fea-support-button.is-secondary {
|
||||
background: #161311 !important;
|
||||
border-color: #3a302b !important;
|
||||
color: #ececec !important;
|
||||
}
|
||||
html[data-fea-theme="dark"] .fea-support-card__title,
|
||||
html[data-fea-theme="dark"] .fea-support-progress__numbers span,
|
||||
html[data-fea-theme="dark"] .fea-support-progress__note,
|
||||
html[data-fea-theme="dark"] .fea-support-sidebar__small { color: #b8afa8; }
|
||||
html[data-fea-theme="dark"] .fea-support-progress__track { background: #3a302b; }
|
||||
|
||||
/* Colaboradores: stylesheet propio del tema con tarjetas claras y !important. */
|
||||
html[data-fea-theme="dark"] .entry-content .wrapper {
|
||||
background: #161311 !important;
|
||||
border-color: #3a302b !important;
|
||||
color: #ececec !important;
|
||||
box-shadow: 0 2px 4px rgba(0,0,0,.45) !important;
|
||||
}
|
||||
html[data-fea-theme="dark"] .entry-content .wrapper strong {
|
||||
color: #ececec !important;
|
||||
}
|
||||
html[data-fea-theme="dark"] .entry-content .wrapper a,
|
||||
html[data-fea-theme="dark"] .entry-content .wrapper a:visited {
|
||||
color: #ececec !important;
|
||||
}
|
||||
html[data-fea-theme="dark"] .entry-content .wrapper a:hover {
|
||||
color: <?php echo esc_html($accent_dark); ?> !important;
|
||||
}
|
||||
|
||||
/* Selector de idioma (fea-homepage.php) */
|
||||
html[data-fea-theme="dark"] #fea-lang-btn { border-color: rgba(255,255,255,0.3); }
|
||||
html[data-fea-theme="dark"] #fea-lang-btn:hover,
|
||||
@@ -240,6 +360,10 @@ add_action('wp_footer', function () {
|
||||
?>
|
||||
<script>
|
||||
(function() {
|
||||
// El footer puede renderizarse más de una vez en algunos templates FSE.
|
||||
// Evitamos crear un segundo toggle en ese caso.
|
||||
if (document.getElementById('fea-theme-btn')) return;
|
||||
|
||||
var btn = document.createElement('button');
|
||||
btn.id = 'fea-theme-btn';
|
||||
btn.type = 'button';
|
||||
|
||||
@@ -0,0 +1,159 @@
|
||||
<?php
|
||||
/**
|
||||
* Plugin Name: Fe Adulta — Evangelio en comentarios
|
||||
* Description: Deriva la cita de la carta semanal y muestra la lectura en los comentarios al evangelio.
|
||||
* Version: 1.0
|
||||
*/
|
||||
|
||||
function fea_evangelio_category($es_id) {
|
||||
return function_exists('fea_cat') ? (int) fea_cat($es_id) : (int) $es_id;
|
||||
}
|
||||
|
||||
function fea_evangelio_is_comment($post_id) {
|
||||
return has_category(fea_evangelio_category(1647), $post_id);
|
||||
}
|
||||
|
||||
/** Lee el meta del comentario; las traducciones heredan el dato editorial del original ES. */
|
||||
function fea_evangelio_comment_meta($post_id, $key) {
|
||||
$value = get_post_meta($post_id, $key, true);
|
||||
if ($value !== '' && $value !== null) return $value;
|
||||
if (!function_exists('pll_get_post')) return $value;
|
||||
|
||||
$source_id = (int) pll_get_post((int) $post_id, 'es');
|
||||
return $source_id && $source_id !== (int) $post_id
|
||||
? get_post_meta($source_id, $key, true)
|
||||
: $value;
|
||||
}
|
||||
|
||||
function fea_evangelio_reading_title($cita) {
|
||||
$cita = trim(wp_strip_all_tags((string) $cita));
|
||||
if (!preg_match('/^(Mt|Mc|Lc|Jn)\s+(.+)$/u', $cita, $m)) return '';
|
||||
$books = ['Mt' => 'MATEO', 'Mc' => 'MARCOS', 'Lc' => 'LUCAS', 'Jn' => 'JUAN'];
|
||||
return $books[$m[1]] . ' ' . preg_replace('/\s+/u', ' ', trim($m[2]));
|
||||
}
|
||||
|
||||
/** Localiza la lectura española, sin depender del slug (que puede llevar sufijos). */
|
||||
function fea_evangelio_reading_id($cita) {
|
||||
global $wpdb;
|
||||
static $cache = [];
|
||||
$title = fea_evangelio_reading_title($cita);
|
||||
if ($title === '') return 0;
|
||||
if (isset($cache[$title])) return $cache[$title];
|
||||
// La coincidencia se hace siempre contra la lectura original en español; después
|
||||
// Polylang la sustituye por la traducción del comentario cuando exista.
|
||||
$cat = 1645;
|
||||
$sql = $wpdb->prepare(
|
||||
"SELECT p.ID FROM {$wpdb->posts} p
|
||||
INNER JOIN {$wpdb->term_relationships} tr ON tr.object_id = p.ID
|
||||
INNER JOIN {$wpdb->term_taxonomy} tt ON tt.term_taxonomy_id = tr.term_taxonomy_id
|
||||
WHERE p.post_type = 'post' AND p.post_status = 'publish' AND p.post_title = %s
|
||||
AND tt.taxonomy = 'category' AND tt.term_id = %d
|
||||
ORDER BY p.post_date DESC LIMIT 1",
|
||||
$title, $cat
|
||||
);
|
||||
return $cache[$title] = (int) $wpdb->get_var($sql);
|
||||
}
|
||||
|
||||
/** Devuelve los evangelios enlazados en la sección pertinente de una carta. */
|
||||
function fea_evangelio_from_carta($carta_id) {
|
||||
if (!function_exists('fea_parse_carta_sections')) return [];
|
||||
if (function_exists('pll_get_post')) $carta_id = (int) (pll_get_post((int) $carta_id, 'es') ?: $carta_id);
|
||||
$links = fea_parse_carta_sections((int) $carta_id)['evangelio'] ?? [];
|
||||
$result = [];
|
||||
foreach ($links as $id) {
|
||||
$post = get_post($id);
|
||||
if (!$post) continue;
|
||||
$cita = get_post_meta($id, '* Cita biblica', true);
|
||||
if (!$cita && preg_match('/^(MATEO|MARCOS|LUCAS|JUAN)\s+(.+)$/u', trim($post->post_title), $m)) {
|
||||
$abbr = ['MATEO' => 'Mt', 'MARCOS' => 'Mc', 'LUCAS' => 'Lc', 'JUAN' => 'Jn'][$m[1]];
|
||||
$cita = $abbr . ' ' . $m[2];
|
||||
}
|
||||
if (fea_evangelio_reading_title($cita)) $result[(string) $id] = trim($cita);
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
|
||||
/** Busca una carta en las tres categorías históricas, dentro de cuatro días. */
|
||||
function fea_evangelio_nearest_carta_id(WP_Post $post) {
|
||||
$date = mysql2date('Y-m-d', $post->post_date, false);
|
||||
$cartas = get_posts([
|
||||
'post_type' => 'post', 'post_status' => 'publish', 'posts_per_page' => 10,
|
||||
'category__in' => array_map('fea_evangelio_category', [6, 21, 22]),
|
||||
'date_query' => [[
|
||||
'after' => date('Y-m-d', strtotime($date . ' -4 days')),
|
||||
'before' => date('Y-m-d', strtotime($date . ' +4 days')), 'inclusive' => true,
|
||||
]],
|
||||
'orderby' => 'date', 'order' => 'DESC',
|
||||
]);
|
||||
if (!$cartas) return 0;
|
||||
usort($cartas, function($a, $b) use ($post) {
|
||||
return abs(strtotime($a->post_date) - strtotime($post->post_date)) <=> abs(strtotime($b->post_date) - strtotime($post->post_date));
|
||||
});
|
||||
return (int) $cartas[0]->ID;
|
||||
}
|
||||
|
||||
/** Escribe solo metadatos ausentes cuando la carta identifica un único evangelio. */
|
||||
function fea_evangelio_capture_meta($post_id) {
|
||||
$post = get_post($post_id);
|
||||
if (!$post || $post->post_type !== 'post' || $post->post_status !== 'publish' || !fea_evangelio_is_comment($post_id)) return false;
|
||||
if (get_post_meta($post_id, '_cita_evangelio', true)) return false;
|
||||
$carta_id = (int) get_post_meta($post_id, '_carta_id', true);
|
||||
if (!$carta_id) $carta_id = fea_evangelio_nearest_carta_id($post);
|
||||
if (!$carta_id) return false;
|
||||
$evangelios = fea_evangelio_from_carta($carta_id);
|
||||
if (count($evangelios) !== 1) {
|
||||
error_log(sprintf('Fe Adulta: comentario %d sin cita; carta %d tiene %d evangelios.', $post_id, $carta_id, count($evangelios)));
|
||||
return false;
|
||||
}
|
||||
update_post_meta($post_id, '_cita_evangelio', reset($evangelios));
|
||||
if (!get_post_meta($post_id, '_carta_id', true)) update_post_meta($post_id, '_carta_id', $carta_id);
|
||||
return true;
|
||||
}
|
||||
|
||||
function fea_evangelio_summary_label($lang) {
|
||||
$labels = [
|
||||
'es' => 'Leer el evangelio', 'en' => 'Read the Gospel', 'fr' => 'Lire l’Évangile',
|
||||
'it' => 'Leggi il Vangelo', 'pt' => 'Ler o Evangelho',
|
||||
];
|
||||
return $labels[$lang] ?? $labels['es'];
|
||||
}
|
||||
|
||||
add_action('transition_post_status', function($new_status, $old_status, $post) {
|
||||
if ($new_status === 'publish' && $old_status !== 'publish') fea_evangelio_capture_meta($post->ID);
|
||||
}, 20, 3);
|
||||
|
||||
/** Añade referencia y texto plegado, cerrado por defecto, antes del comentario. */
|
||||
add_filter('the_content', function($content) {
|
||||
if (!is_single() || is_admin()) return $content;
|
||||
global $post;
|
||||
if (!$post || !fea_evangelio_is_comment($post->ID)) return $content;
|
||||
$cita = trim((string) fea_evangelio_comment_meta($post->ID, '_cita_evangelio'));
|
||||
if (!$cita) return $content;
|
||||
$reading_id = fea_evangelio_reading_id($cita);
|
||||
$lang = function_exists('pll_current_language') ? pll_current_language() : 'es';
|
||||
if ($reading_id && $lang && $lang !== 'es' && function_exists('pll_get_post')) $reading_id = (int) (pll_get_post($reading_id, $lang) ?: $reading_id);
|
||||
$reading = $reading_id ? get_post($reading_id) : null;
|
||||
$starts_with_cita = preg_match('/^\s*' . preg_quote($cita, '/') . '(?:[\s\.,:;\-–—]|$)/iu', wp_strip_all_tags($content));
|
||||
$html = '<section class="fea-com-evangelio" aria-label="' . esc_attr(fea_evangelio_summary_label($lang)) . '">';
|
||||
if (!$starts_with_cita) $html .= '<p class="fea-com-evangelio-cita">' . esc_html($cita) . '</p>';
|
||||
if ($reading && trim(wp_strip_all_tags($reading->post_content)) !== '') {
|
||||
$html .= '<details class="fea-com-evangelio-details"><summary>' . esc_html(fea_evangelio_summary_label($lang)) . '</summary>'
|
||||
. wpautop(do_shortcode($reading->post_content)) . '</details>';
|
||||
}
|
||||
return $html . '</section>' . $content;
|
||||
}, 8);
|
||||
|
||||
add_action('wp_head', function() {
|
||||
if (!is_single()) return;
|
||||
global $post;
|
||||
if (!$post || !fea_evangelio_is_comment($post->ID)) return;
|
||||
?>
|
||||
<style>
|
||||
.fea-com-evangelio { margin: 0 0 1.75rem; padding: 1rem 1.15rem; background: #f7f4ed; border-left: 4px solid #a77b2d; }
|
||||
.fea-com-evangelio-cita { margin: 0 0 .65rem; font-weight: 700; }
|
||||
.fea-com-evangelio-details summary { cursor: pointer; font-weight: 700; color: #51401e; }
|
||||
.fea-com-evangelio-details > :last-child { margin-bottom: 0; }
|
||||
.fea-com-evangelio-details[open] summary { margin-bottom: .85rem; }
|
||||
</style>
|
||||
<?php
|
||||
});
|
||||
@@ -2044,8 +2044,12 @@ add_filter('the_content', function($content) {
|
||||
global $post;
|
||||
if (!in_category('comentarios-al-evangelio', $post)) return $content;
|
||||
|
||||
$carta_id = get_post_meta($post->ID, '_carta_id', true);
|
||||
$cita = get_post_meta($post->ID, '_cita_evangelio', true);
|
||||
$carta_id = function_exists('fea_evangelio_comment_meta')
|
||||
? fea_evangelio_comment_meta($post->ID, '_carta_id')
|
||||
: get_post_meta($post->ID, '_carta_id', true);
|
||||
$cita = function_exists('fea_evangelio_comment_meta')
|
||||
? fea_evangelio_comment_meta($post->ID, '_cita_evangelio')
|
||||
: get_post_meta($post->ID, '_cita_evangelio', true);
|
||||
|
||||
if (!$carta_id && !$cita) return $content;
|
||||
|
||||
@@ -2066,23 +2070,6 @@ add_filter('the_content', function($content) {
|
||||
}
|
||||
}
|
||||
|
||||
// --- Cita del evangelio — link directo al anchor en el índice ---
|
||||
if ($cita) {
|
||||
$book_post_id = ['Mt' => 43908, 'Mc' => 43909, 'Lc' => 43907, 'Jn' => 43906];
|
||||
$abbr = substr($cita, 0, 2);
|
||||
$anchor = fea_cita_to_anchor($cita);
|
||||
$index_url = isset($book_post_id[$abbr])
|
||||
? esc_url(get_permalink($book_post_id[$abbr]) . '#' . $anchor)
|
||||
: '';
|
||||
|
||||
$html .= '<div class="fea-com-row fea-com-cita">'
|
||||
. '<span class="fea-com-label">Evangelio</span>'
|
||||
. ($index_url
|
||||
? '<a href="' . $index_url . '">' . esc_html($cita) . '</a>'
|
||||
: '<span>' . esc_html($cita) . '</span>')
|
||||
. '</div>';
|
||||
}
|
||||
|
||||
// --- Otros comentarios de esta misma cita ---
|
||||
if ($cita) {
|
||||
$others = get_posts([
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
<?php
|
||||
/** Propuesta/aplicación segura del backfill de _cita_evangelio. */
|
||||
/** Uso: wp eval-file scripts/backfill_evangelio_meta.php [--apply] --path=/var/www/html */
|
||||
|
||||
$apply = in_array('--apply', $_SERVER['argv'] ?? [], true);
|
||||
$posts = get_posts([
|
||||
'post_type' => 'post', 'post_status' => 'publish', 'posts_per_page' => -1,
|
||||
'category__in' => [fea_evangelio_category(1647)],
|
||||
'meta_query' => [['key' => '_cita_evangelio', 'compare' => 'NOT EXISTS']],
|
||||
'orderby' => 'date', 'order' => 'ASC',
|
||||
]);
|
||||
$out = fopen('php://output', 'w');
|
||||
fputcsv($out, ['post_id', 'fecha', 'carta_id', 'cita_propuesta', 'resultado']);
|
||||
foreach ($posts as $post) {
|
||||
$before_carta = (int) get_post_meta($post->ID, '_carta_id', true);
|
||||
// Las cartas deducidas solo se proponen: la cola histórica requiere revisión humana.
|
||||
$carta_id = $before_carta ?: fea_evangelio_nearest_carta_id($post);
|
||||
$evangelios = $carta_id ? fea_evangelio_from_carta($carta_id) : [];
|
||||
$cita = $before_carta && count($evangelios) === 1 ? reset($evangelios) : '';
|
||||
$result = $cita ? ($apply ? 'aplicado' : 'propuesta') : (!$before_carta ? 'revision_manual_carta_por_fecha' : (count($evangelios) > 1 ? 'revision_manual_multi_evangelio' : 'sin_evangelio'));
|
||||
if ($apply && $cita) {
|
||||
update_post_meta($post->ID, '_cita_evangelio', $cita);
|
||||
if (!$before_carta) update_post_meta($post->ID, '_carta_id', $carta_id);
|
||||
}
|
||||
fputcsv($out, [$post->ID, $post->post_date, $carta_id ?: '', $cita, $result]);
|
||||
}
|
||||
Reference in New Issue
Block a user