Lo que hace es añadirte un botón de gracias debajo de cada mensaje de otros usuarios, de forma que puedas dar las gracias no solo al que ha creado el tema, sino a cualquiera que conteste.
Otra cosa buena es que no cambia de página como el botón original, sino que simula el botón de gracias de vbulletin que se carga sin cambiar de página.
Capturas de mi foro:
Antes de pinchar en el botón:
Una vez se ha presionado:
nota: Lo podeis probar antes en mi foro si quiereis ver como funciona. Mi versión es la última y funciona bien por el momento.
Además añade las gracias dadas de este modo al perfil de cada usuario, eso si, aparte del MOD original, de forma que conviene desactivar el primero (En la captura de arriba se ve que hay doble agradecimiento. Es el de más abajo).
Inconveniente: Tal y como advirtió spydie, aumenta las consultas a la BD y por consiguiente la carga de la CPU ( consume más recursos).
No lo recomienda en sitios con mucha carga, o Bases de Datos muy grandes
Un saludo y espero que a alguien le sirva
## Author: esnola (webmaster@todo-mods.com)
## Author Web: http://www.todo-mods.com
##
## Descripción en español:
Añade un botón para dar gracias al posteador del post al estilo de VBulletin.
Y muestra los resultados en cada post que haya sido agradecido.
##
##
## Installation Level: Easy (Fácil)
## Installation Time: 2 Minutes
## Ficheros a Editar:(2) viewtopic.php,
## templates/mg_themes/viewtopic_body.tpl
## * Deberás editar este archivo en todos los estilos o plantillas que tengas.
#########################################################
## Antes realizar cualquier modificación en los ficheros de tu foro realiza una copia de seguridad de los mismos.
## Before Adding This MOD To Your Forum, You Should Back Up All Files Related To This MOD
#########################################################
#
#-----[ SQL ]------------------------------------------
#
CREATE TABLE IF NOT EXISTS `ip_thanks_2` (
`topic_id` mediumint(8) NOT NULL,
`user_id` mediumint(8) NOT NULL,
`user_poster` mediumint(8) NOT NULL,
`post_id` mediumint(8) NOT NULL,
`thanks_time` int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
#
#-----[ ABRIR / OPEN ]------------------------------------------
#
viewtopic.php
#
#-----[ Buscar / FIND ]------------------------------------------
#
// End add - Birthday MOD
#
#-----[ AÑADIR DESPUES / AFTER ADD ]------------------------------------------
#
$activar_gracias = 1; // Poner en 1 para activar, Poner en 0 para desactivar.
if ($activar_gracias == 1)
{
$nom_gracias = "";
$boton_gra = ($userdata['user_id'] != ANONYMOUS) ? TRUE : FALSE;
$forma_tiem = "d F";
$sql = mysql_query("SELECT thanks_time
FROM ip_thanks_2
WHERE user_id =". $userdata['user_id']."
AND post_id =".$post_id) ;
$ya_votado = mysql_num_rows($sql);
if($ya_votado) $boton_gra = false ;
if($_REQUEST['mode'] == "thanks_2" && !$ya_votado)
{
$sql = mysql_query("SELECT thanks_time
FROM ip_thanks_2
WHERE user_id =". $userdata['user_id']."
AND post_id =".$_REQUEST['p']) ;
$ya_votado2 = mysql_num_rows($sql);
if(!$ya_votado2 && $userdata['user_id'] != $postrow[$i]['poster_id'] && $userdata['user_id'] != ANONYMOUS)
{
$sql = "INSERT INTO ip_thanks_2 (post_id, topic_id, user_poster, user_id, thanks_time)
VALUES(".$_REQUEST['p'].", ".$_REQUEST['t'].",".$_REQUEST['poster'].",".$userdata['user_id'].", ".time().")";
if ( !($result = $DB->sql_query($sql)) )
{
message_die(GENERAL_ERROR, "No se actualiza la tabla thanks2", '', __LINE__, __FILE__, $sql);
}
}
}
$sql = "SELECT user_id, thanks_time
FROM ip_thanks_2
WHERE post_id =". $postrow[$i]['post_id'];
if ( !($result = $DB->sql_query($sql)) )
{
message_die(GENERAL_ERROR, "No se puede obtener datos de gracias", '', __LINE__, __FILE__, $sql);
}
$j=0;
$num_agrad = "";
$cuantos = $DB->sql_numrows($result);
while($gracias = $DB->sql_fetchrow($result))
{
$j++;
$agradecido = colorize_username($gracias['user_id']);
$nom_gracias .= '<span class="gensmall">' .$agradecido."(".create_date_ip($forma_tiem, $gracias['thanks_time'], $board_config['board_timezone']).")</span>";
$nom_gracias .= ($cuantos > 1 && $cuantos > $j) ? ", " : "";
}
$sql = "SELECT user_poster
FROM ip_thanks_2
WHERE user_poster =". $postrow[$i]['poster_id'];
if ( !($result = $DB->sql_query($sql)) )
{
message_die(GENERAL_ERROR, "No se puede obtener datos de gracias", '', __LINE__, __FILE__, $sql);
}
if($DB->sql_numrows($result))
{
$num_agrad = "<br />Agradecimientos recibidos: ".$DB->sql_numrows($result);
}
$lectura_gracias = ($userdata['user_id'] != $postrow[$i]['poster_id'])? "Agradecimientos a " . colorize_username($postrow[$i]['poster_id']) : "Has recibido agradecimientos";
$lectura_gracias .= " por este post de:";
}
#
#-----[ BUSCAR / FIND ]------------------------------------------
#
$template->assign_block_vars('postrow', array(
#
#-----[ AÑADIR DESPUES / AFTER ADD ]------------------------------------------
#
'U_THANKS_2' => append_sid('viewtopic.'. PHP_EXT .'?mode=thanks_2&f='.$forum_id .'&t='.$topic_id .'&poster='.$postrow[$i]['poster_id'].'&p='.$post_id.'#p'.$post_id),
'THANKS_IMG_2' => ($boton_gra) ? $images['thanks'] : "",
'THANKS_POSTER' => $lectura_gracias,
'LISTA_GRACIAS' => $nom_gracias,
'NO_BOTON' => ($boton_gra && $userdata['user_id'] != $postrow[$i]['poster_id'] ) ? true : false,
'VECES_AGRAD' => $num_agrad,
#
#-----[ ABRIR / OPEN ]------------------------------------------
#
templates/mg_themes (yo lo tengo en default)/viewtopic_body.tpl
#
#-----[ BUSCAR / FIND ]------------------------------------------
#
<!-- END switch_poster_info -->
#
#-----[ AÑADIR DESPUES / AFTER ADD ]------------------------------------------
#
{postrow.VECES_AGRAD}
#
#-----[ BUSCAR / FIND ]------------------------------------------
#
{postrow.ALBUM_IMG}
</div>
#
#-----[ AÑADIR DESPUES / AFTER ADD ]------------------------------------------
#
<!-- IF postrow.NO_BOTON --><a href="{postrow.U_THANKS_2}"><img src="{postrow.THANKS_IMG_2}" alt="Agradecer contribución" title="Agradecer contribución" width="62" /></a><!-- ENDIF -->
#
#-----[ BUSCAR / FIND ]------------------------------------------
#
<a href="{U_BACK_BOTTOM}"><img src="{IMG_ARD}" alt="{L_BACK_BOTTOM}" title="{L_BACK_BOTTOM}" /></a>
</div>
#
#-----[ AÑADIR DESPUES / AFTER ADD ]------------------------------------------
#
<!-- IF postrow.LISTA_GRACIAS -->
<tr><th colspan="3" align="left">{postrow.THANKS_POSTER}</th></tr>
<tr><td colspan="3" class="row-post" valign="top" align="left"><span class="gensmall">{postrow.thanks.THANKS} </span>
{postrow.LISTA_GRACIAS}
</td></tr>
<tr><td>
</td></tr>
<!-- ENDIF -->
## Author Web: http://www.todo-mods.com
##
## Descripción en español:
Añade un botón para dar gracias al posteador del post al estilo de VBulletin.
Y muestra los resultados en cada post que haya sido agradecido.
##
##
## Installation Level: Easy (Fácil)
## Installation Time: 2 Minutes
## Ficheros a Editar:(2) viewtopic.php,
## templates/mg_themes/viewtopic_body.tpl
## * Deberás editar este archivo en todos los estilos o plantillas que tengas.
#########################################################
## Antes realizar cualquier modificación en los ficheros de tu foro realiza una copia de seguridad de los mismos.
## Before Adding This MOD To Your Forum, You Should Back Up All Files Related To This MOD
#########################################################
#
#-----[ SQL ]------------------------------------------
#
CREATE TABLE IF NOT EXISTS `ip_thanks_2` (
`topic_id` mediumint(8) NOT NULL,
`user_id` mediumint(8) NOT NULL,
`user_poster` mediumint(8) NOT NULL,
`post_id` mediumint(8) NOT NULL,
`thanks_time` int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
#
#-----[ ABRIR / OPEN ]------------------------------------------
#
viewtopic.php
#
#-----[ Buscar / FIND ]------------------------------------------
#
// End add - Birthday MOD
#
#-----[ AÑADIR DESPUES / AFTER ADD ]------------------------------------------
#
$activar_gracias = 1; // Poner en 1 para activar, Poner en 0 para desactivar.
if ($activar_gracias == 1)
{
$nom_gracias = "";
$boton_gra = ($userdata['user_id'] != ANONYMOUS) ? TRUE : FALSE;
$forma_tiem = "d F";
$sql = mysql_query("SELECT thanks_time
FROM ip_thanks_2
WHERE user_id =". $userdata['user_id']."
AND post_id =".$post_id) ;
$ya_votado = mysql_num_rows($sql);
if($ya_votado) $boton_gra = false ;
if($_REQUEST['mode'] == "thanks_2" && !$ya_votado)
{
$sql = mysql_query("SELECT thanks_time
FROM ip_thanks_2
WHERE user_id =". $userdata['user_id']."
AND post_id =".$_REQUEST['p']) ;
$ya_votado2 = mysql_num_rows($sql);
if(!$ya_votado2 && $userdata['user_id'] != $postrow[$i]['poster_id'] && $userdata['user_id'] != ANONYMOUS)
{
$sql = "INSERT INTO ip_thanks_2 (post_id, topic_id, user_poster, user_id, thanks_time)
VALUES(".$_REQUEST['p'].", ".$_REQUEST['t'].",".$_REQUEST['poster'].",".$userdata['user_id'].", ".time().")";
if ( !($result = $DB->sql_query($sql)) )
{
message_die(GENERAL_ERROR, "No se actualiza la tabla thanks2", '', __LINE__, __FILE__, $sql);
}
}
}
$sql = "SELECT user_id, thanks_time
FROM ip_thanks_2
WHERE post_id =". $postrow[$i]['post_id'];
if ( !($result = $DB->sql_query($sql)) )
{
message_die(GENERAL_ERROR, "No se puede obtener datos de gracias", '', __LINE__, __FILE__, $sql);
}
$j=0;
$num_agrad = "";
$cuantos = $DB->sql_numrows($result);
while($gracias = $DB->sql_fetchrow($result))
{
$j++;
$agradecido = colorize_username($gracias['user_id']);
$nom_gracias .= '<span class="gensmall">' .$agradecido."(".create_date_ip($forma_tiem, $gracias['thanks_time'], $board_config['board_timezone']).")</span>";
$nom_gracias .= ($cuantos > 1 && $cuantos > $j) ? ", " : "";
}
$sql = "SELECT user_poster
FROM ip_thanks_2
WHERE user_poster =". $postrow[$i]['poster_id'];
if ( !($result = $DB->sql_query($sql)) )
{
message_die(GENERAL_ERROR, "No se puede obtener datos de gracias", '', __LINE__, __FILE__, $sql);
}
if($DB->sql_numrows($result))
{
$num_agrad = "<br />Agradecimientos recibidos: ".$DB->sql_numrows($result);
}
$lectura_gracias = ($userdata['user_id'] != $postrow[$i]['poster_id'])? "Agradecimientos a " . colorize_username($postrow[$i]['poster_id']) : "Has recibido agradecimientos";
$lectura_gracias .= " por este post de:";
}
#
#-----[ BUSCAR / FIND ]------------------------------------------
#
$template->assign_block_vars('postrow', array(
#
#-----[ AÑADIR DESPUES / AFTER ADD ]------------------------------------------
#
'U_THANKS_2' => append_sid('viewtopic.'. PHP_EXT .'?mode=thanks_2&f='.$forum_id .'&t='.$topic_id .'&poster='.$postrow[$i]['poster_id'].'&p='.$post_id.'#p'.$post_id),
'THANKS_IMG_2' => ($boton_gra) ? $images['thanks'] : "",
'THANKS_POSTER' => $lectura_gracias,
'LISTA_GRACIAS' => $nom_gracias,
'NO_BOTON' => ($boton_gra && $userdata['user_id'] != $postrow[$i]['poster_id'] ) ? true : false,
'VECES_AGRAD' => $num_agrad,
#
#-----[ ABRIR / OPEN ]------------------------------------------
#
templates/mg_themes (yo lo tengo en default)/viewtopic_body.tpl
#
#-----[ BUSCAR / FIND ]------------------------------------------
#
<!-- END switch_poster_info -->
#
#-----[ AÑADIR DESPUES / AFTER ADD ]------------------------------------------
#
{postrow.VECES_AGRAD}
#
#-----[ BUSCAR / FIND ]------------------------------------------
#
{postrow.ALBUM_IMG}
</div>
#
#-----[ AÑADIR DESPUES / AFTER ADD ]------------------------------------------
#
<!-- IF postrow.NO_BOTON --><a href="{postrow.U_THANKS_2}"><img src="{postrow.THANKS_IMG_2}" alt="Agradecer contribución" title="Agradecer contribución" width="62" /></a><!-- ENDIF -->
#
#-----[ BUSCAR / FIND ]------------------------------------------
#
<a href="{U_BACK_BOTTOM}"><img src="{IMG_ARD}" alt="{L_BACK_BOTTOM}" title="{L_BACK_BOTTOM}" /></a>
</div>
#
#-----[ AÑADIR DESPUES / AFTER ADD ]------------------------------------------
#
<!-- IF postrow.LISTA_GRACIAS -->
<tr><th colspan="3" align="left">{postrow.THANKS_POSTER}</th></tr>
<tr><td colspan="3" class="row-post" valign="top" align="left"><span class="gensmall">{postrow.thanks.THANKS} </span>
{postrow.LISTA_GRACIAS}
</td></tr>
<tr><td>
</td></tr>
<!-- ENDIF -->















































