phpBB es un potente sistema de foros gratuito que actualmente corre por la versión 2.0.21. Aunque lo llevo usando desde hace mucho tiempo debido a su sencillez y su correcto funcionamiento, una de las cosas que se hechan en falta es más facilidad para instalarle plugins. Hoy por hoy, es necesario abrir el código siguiendo una pauta y meterle mano por dentro.
La parte buena es que se coge soltura con el código con relativa facilidad y a la que realizas una actualización manual más un par de MODs ya lo ves más cómo un jugete tipo Lego (que puedes cambiar lo que sea, vaya)
El segundo problema es que si se te cuela un usuario conflictivo con ganas de tocar la moral y hacerse notar a toda costa la seguridad que te proporciona es limitada y se tiene que añadir algún MOD y algun ajuste a mano.
En el caso de hoy sólo hablaré de la pincelada final. Puede que más adelante explique de forma exhaustiva los cambios que he realizado para poder olvidarme de los Trolls, pero hoy toca variar la forma en que phpBB muestra el último usuario registrado.
En primer lugar se debe saber que al seleccionar el modo de activación "Administrador", cuando un usuario se registra queda pendiente de activación por parte del administrador. Pero el usuario ya se muestra en la pantalla inicial anque no esté activado. Ésto puede generar problemas, ya que si el Troll no se siente aludido o no se da por vencido habiéndolo baneado del foro y quiere seguir dejando algún mensaje de mal gusto, puede utilizar el nombre de usuario para poner un mensaje despectivo.
La siguiente (y simple) modificación se trata de variar la query que selecciona el último usuario registrado, añadiendo el parámetro de activación. La función que se encarga de hacer ésto está en el archivo
[/root_del_foro]/includes/functions.php
La primera función se llama get_db_stat() y justo al inicio hay un switch:
PHP:
-
switch( $mode )
-
{
-
case 'usercount':
-
$sql = "SELECT COUNT(user_id) AS total
-
FROM " . USERS_TABLE . "
-
WHERE user_id <> " . ANONYMOUS;
-
break;
-
case 'newestuser':
-
$sql = "SELECT user_id, username
-
FROM " . USERS_TABLE . "
-
WHERE user_id <> " . ANONYMOUS . "
-
ORDER BY user_id DESC
-
LIMIT 1";
-
break;
-
-
case 'postcount':
-
case 'topiccount':
-
$sql = "SELECT SUM(forum_topics) AS topic_total, SUM(forum_posts) AS post_total
-
FROM " . FORUMS_TABLE;
-
break;
-
}
En el case "newestuser" debemos añadir lo siguiente al final de la línia del WHERE de la query (OJO! con un espacio enmedio!):
AND user_active=1
de forma que el switch quedará de la siguiente forma:
PHP:
-
switch( $mode )
-
{
-
case 'usercount':
-
$sql = "SELECT COUNT(user_id) AS total
-
FROM " . USERS_TABLE . "
-
WHERE user_id <> " . ANONYMOUS;
-
break;
-
case 'newestuser':
-
$sql = "SELECT user_id, username
-
FROM " . USERS_TABLE . "
-
WHERE user_id <> " . ANONYMOUS . " AND user_active=1
-
ORDER BY user_id DESC
-
LIMIT 1";
-
break;
-
-
case 'postcount':
-
case 'topiccount':
-
$sql = "SELECT SUM(forum_topics) AS topic_total, SUM(forum_posts) AS post_total
-
FROM " . FORUMS_TABLE;
-
break;
-
}
Guardamos y lo subimos al servidor.
Podemos hacer la prueba, registrando un usuario. Con el procedimiento normal el usuario pendiente de activación ya se mostraría en la pantalla inicial. Con esta modificación el usuario no se muestra hasta que está activado.
Salut!
Tag: PHP
[ # 116 ] Comment desde FuriKuri [09 de Marzo de 2007, 10:12]
Prueba smf, es un sistema de foros mucho mejor y te permite hacer importación desde phpbb sin perder ni posts, in usuarios.
Además los pluggins no se basan en “abre template.php y busca la siguiente linea y sustituyela por esta otra”, sino que son archivos que subes a través del administrador de una manera mucho más comoda.
salu2