Recordad que para pedir soporte alguno, debéis facilitar los datos de soporte oportunos por favor, mirad aquí y leer las Normas generales del foro, esto nos servirá de ayuda para dar el mejor soporte..

Gracias.

La Administración de phpBB España.

Ayuda para programar estoTema Solucionado

Foros donde podréis dejar vuestras dudas sobre phpBB 3.0.x
Cerrado
Hereze
Usuario/a
Mensajes: 66
Registrado: 28 Ago 2012, 13:30

Ayuda para programar esto  Tema Solucionado

#1

Mensaje por Hereze »

Hola,

me gustaría que cuando un usuario es baneado ya sea de forma temporal o permanente, aparezca un cartel en TODOS los mensajes que ha escrito indicando que el Usuario: xxxx han sido baneado durante: xxxxx por el siguiente motivo: xxxxx

Obviamente los xxxx saldrían de la base de datos.

Cuando me voy a Benar dentro del perfil de un usuario, hay dos campos que son los que me interesa, uno es el banlength que indica la duración de la exclusión, y el otro es el banreason que indica el motivo. Por lo que he visto, los datos los guarda en la tabla ban_list siendo los campos que me interesaría el ban_userid, ban_end y ban_reason.

Bien lo que no sé es como programarlo, en plan: Si ban_userid=id usuario del mensaje then mostrar El usuario xxx ha sido baneado hasta el: ban_end por el siguiente motivo: ban_reason
y que apareciera en todos sus mensajes. Vamos es como si a mi me banearan de esta web y en este mensaje justo encima de donde pone Hola, aparecería ese mensaje.

Saludos.
URL: http://www.exiliadosfc.com
Plantilla(s) usuada(s): art_deluxe
MODs instalados: Automod, Prime Warnings, Advanced BBCode Box 3, Prime Trash Bin, AOS notifications, Share Topic Plus, Askimet, Alternate Login, NV newspage, Tapatalk.
Versión de phpBB: 3.0.11
Servidor: pago

Avatar de Usuario
Alorse
Ex Staff
Mensajes: 5144
Registrado: 22 Mar 2008, 02:14
Género:
Edad: 37

Mostrar estado de baneado y tiempo de baneo en viewtopic

#2

Mensaje por Alorse »

He tocado algunas cosas y he logrado lo que deseas... así que abre el archivo viewtopic.php y busca:

Código: Seleccionar todo

unset($id_cache); 
Antes agrega:

Código: Seleccionar todo

/* Usuarios baneados por Alorse */
$sql = 'SELECT b.*
    FROM ' . BANLIST_TABLE . ' b
    WHERE (b.ban_end >= ' . time() . '
        OR b.ban_end = 0)';

$result = $db->sql_query($sql);
$ban_list = array();
while ($row2 = $db->sql_fetchrow($result))
{
    $ban_list['ban_userid'][] = $row2['ban_userid'];
    $ban_list['ban_end'][] = $row2['ban_end'];
    $ban_list['ban_reason'][] = $row2['ban_reason'];
    $ban_list['ban_start'][] = $row2['ban_start'];
}
$db->sql_freeresult($result);

/* Usuarios baneados por Alorse */
Busca:

Código: Seleccionar todo

    //
    $postrow = array(
Antes agrega:

Código: Seleccionar todo

        
    /* Usuarios baneados por Alorse */
    if(sizeof($ban_list)){
        $user->setup('acp/ban');
        $user_ban = (in_array($poster_id, $ban_list['ban_userid'])) ? true : false;
        $key_ban = (array_search($poster_id, $ban_list['ban_userid']));
        $ban_end_text = array(0 => $user->lang['PERMANENT'], 30 => $user->lang['30_MINS'], 60 => $user->lang['1_HOUR'], 360 => $user->lang['6_HOURS'], 1440 => $user->lang['1_DAY'], 10080 => $user->lang['7_DAYS'], 20160 => $user->lang['2_WEEKS'], 40320 => $user->lang['1_MONTH'], -1 => $user->lang['UNTIL'] . ' -> ');
        $time_length = ($ban_list['ban_end'][$key_ban]) ? ($ban_list['ban_end'][$key_ban] - $ban_list['ban_start'][$key_ban]) / 60 : 0;
    }else{
        $user_ban = false;
    }
    /* Usuarios baneados por Alorse */
Busca:

Código: Seleccionar todo

        'U_SEARCH'        => $user_cache[$poster_id]['search'],
Después agrega:

Código: Seleccionar todo

        /* Usuarios baneados por Alorse */
        'S_USER_BANNED'         => $user_ban,
        'S_USER_BANNED_TIME'    => $user_ban ? ($time_length == 0) ? $user->lang['PERMANENT'] : sprintf($user->lang['BANNED_UNTIL_DURATION'], $ban_end_text[$time_length], $user->format_date($ban_list['ban_end'][$key_ban], false, true)) : 0,
        'S_USER_BANNED_REASON'  => $user_ban ? $ban_list['ban_reason'][$key_ban] : "",
        /* Usuarios baneados por Alorse */ 
Abre viewtopic_body.html de tu plantilla y busca:

Código: Seleccionar todo

<div class="content">{postrow.MESSAGE}</div>
Antes agrega:

Código: Seleccionar todo

                        <!-- IF postrow.S_USER_BANNED -->
                        <p class="rules">
                                <!-- IF postrow.S_USER_BANNED -->El usuario {postrow.POST_AUTHOR_FULL} ha sido baneado durante: {postrow.S_USER_BANNED_TIME} por el siguiente motivo: {postrow.S_USER_BANNED_REASON}<!-- ELSEIF postrow.POSTER_WARNINGS -->{L_WARNINGS}: {postrow.POSTER_WARNINGS}<!-- ENDIF -->
			</p>
                        <!-- ENDIF -->
Y eso es todo, no olvides limpiar el caché despues de hacer los cambios.

Hereze
Usuario/a
Mensajes: 66
Registrado: 28 Ago 2012, 13:30

Re: Mostrar estado de baneado y tiempo de baneo en viewtopic

#3

Mensaje por Hereze »

Alorse escribió:Por favor no cites mensajes tan grandes.
Sencillamente IMPRESIONANTE.
Sólo una duda, ¿hay alguna forma de que en la dureción sólo salga las semanas sin el hasta? por ejemplo, si baneo a un usuario 2 semanas, que ponga:
El usuario xzxx ha sido baneado durante 2 semanas.... sin el (hasta el ...). Imagino que eso será ya porque la base de datos lo guarda así.

Muchísimas Gracias de verdad.

Un saludo.
Última edición por Alorse el 24 Ene 2013, 20:27, editado 3 veces en total.
Razón: Editar citado
URL: http://www.exiliadosfc.com
Plantilla(s) usuada(s): art_deluxe
MODs instalados: Automod, Prime Warnings, Advanced BBCode Box 3, Prime Trash Bin, AOS notifications, Share Topic Plus, Askimet, Alternate Login, NV newspage, Tapatalk.
Versión de phpBB: 3.0.11
Servidor: pago

Avatar de Usuario
Alorse
Ex Staff
Mensajes: 5144
Registrado: 22 Mar 2008, 02:14
Género:
Edad: 37

Re: Ayuda para programar esto

#4

Mensaje por Alorse »

Lo que pasa es que si baneas a alguien por 2 semanas, y solo falta un día para que se quite el baneo, ya a seguir saliendo 2 semanas y ni tú vas a saber cuanto es que hace falta.
Intenta hacer la resta para que mostrara solo tiempo que hace falta, pero se alargaba mucho, porque eran muchas condiciones, si faltan minutos, ni puede mostrar horas, días, semanas, meses, si faltan días, no puede mostrar semanas y meses, en fin, se volvía algo larguísimo.

Si quieres modificarlo la variable $time_length es la que tiene el tiempo de baneo y 'S_USER_BANNED_TIME' es el encargado de mostrar el aviso del tiempo, puedes jugar con ellas, pero como te digo no es sencillo porque pueden haber muchos casos de tiempo de baneo.

Te recomiendo que lo dejes así.

Hereze
Usuario/a
Mensajes: 66
Registrado: 28 Ago 2012, 13:30

Re: Ayuda para programar esto

#5

Mensaje por Hereze »

Alorse escribió:Lo que pasa es que si baneas a alguien por 2 semanas, y solo falta un día para que se quite el baneo, ya a seguir saliendo 2 semanas y ni tú vas a saber cuanto es que hace falta.
Intenta hacer la resta para que mostrara solo tiempo que hace falta, pero se alargaba mucho, porque eran muchas condiciones, si faltan minutos, ni puede mostrar horas, días, semanas, meses, si faltan días, no puede mostrar semanas y meses, en fin, se volvía algo larguísimo.

Si quieres modificarlo la variable $time_length es la que tiene el tiempo de baneo y 'S_USER_BANNED_TIME' es el encargado de mostrar el aviso del tiempo, puedes jugar con ellas, pero como te digo no es sencillo porque pueden haber muchos casos de tiempo de baneo.

Te recomiendo que lo dejes así.
OK, tienes razón, no había caido en eso. Ahora tengo que mirar como puedo hacer que cuando sale el usuario, lo haga sin el link para ver su perfil, ya que me descuadra la linea.

Imagen

Saludos.
URL: http://www.exiliadosfc.com
Plantilla(s) usuada(s): art_deluxe
MODs instalados: Automod, Prime Warnings, Advanced BBCode Box 3, Prime Trash Bin, AOS notifications, Share Topic Plus, Askimet, Alternate Login, NV newspage, Tapatalk.
Versión de phpBB: 3.0.11
Servidor: pago

Avatar de Usuario
Alorse
Ex Staff
Mensajes: 5144
Registrado: 22 Mar 2008, 02:14
Género:
Edad: 37

Re: Ayuda para programar esto

#6

Mensaje por Alorse »

Edité tu mensaje anterior porque citabas contenido, por favor no lo hagas a menos que en realidad sea necesario.

Para hacer lo que quieres en el viretopic_body.html cambia {postrow.POST_AUTHOR_FULL} por {postrow.POST_AUTHOR}.
Es todo.

Hereze
Usuario/a
Mensajes: 66
Registrado: 28 Ago 2012, 13:30

Re: Ayuda para programar esto

#7

Mensaje por Hereze »

Alorse escribió:Edité tu mensaje anterior porque citabas contenido, por favor no lo hagas a menos que en realidad sea necesario.

Para hacer lo que quieres en el viretopic_body.html cambia {postrow.POST_AUTHOR_FULL} por {postrow.POST_AUTHOR}.
Es todo.
OK.
Pues ya está, ahora sale perfecto.

Gracias de nuevo.
URL: http://www.exiliadosfc.com
Plantilla(s) usuada(s): art_deluxe
MODs instalados: Automod, Prime Warnings, Advanced BBCode Box 3, Prime Trash Bin, AOS notifications, Share Topic Plus, Askimet, Alternate Login, NV newspage, Tapatalk.
Versión de phpBB: 3.0.11
Servidor: pago

Cerrado

Volver a “Foros de Soporte 3.0.x”