¡Bienvenido a PHPost!

Para participar en el foro, descargar complementos y acceder al chat, necesitas una cuenta activa.

Descarga Risus Nova 2.0   (Ver notas de la versión) (ACT-15/06/2026)

Regístrate Descargar Risus Nova
Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5

COMPLEMENTOS Comentarios de Visitantes (Act 1.3)
#1

1
Mejor respuesta del mensaje Comentarios de Visitantes (Act 1.3)Funciones de esta versión
  • Los visitantes puede comentar los posts.
  • Anti-flood para visitantes (60 segundos entre cada comentario).
  • Deben introducir nombre y email.
  • Validador de email.
  • Solo el administrador pueden ver los emails.
  • Cuando un invitado comenta no aparecerá en el monitor.
  • Los comentarios de invitados se "fusionan" con los otros para la paginación.
  • Arreglada paginación de una manera "rustica" pero funcional.


Capturas

[img]Registrate o inicia tu sesión para ver este contenido[/img]

[img]Registrate o inicia tu sesión para ver este contenido[/img]



Ejecutar esta consulta

ALTER TABLE `p_comentarios` ADD `c_anon` VARCHAR(200) NULL DEFAULT NULL ;


En ajax.comentario.php --> inc --> php --> ajax --> ajax.comentario.php

Buscar:

'comentario-preview' => array('n' => 2'p' => 'preview'),
'comentario-agregar' => array('n' => 2'p' => 'preview'), 


Reemplazar por:

'comentario-preview' => array('n' => 0'p' => 'preview'),
'comentario-agregar' => array('n' => 0'p' => 'preview'), 


Buscar:

$preview = array(0,$tsCore->parseBBCode($comentario),'',time(),$auser$comentario$_SERVER['REMOTE_ADDR']); 


Reemplazar por:

$preview = array(0,$tsCore->parseBBCode($comentario),'',time(),$auser$comentario$_SERVER['REMOTE_ADDR'], $tsCore->setSecure($_POST['na'])); 


En c.posts.php --> inc --> class --> c.posts.php

Buscar:

$q1 db_exec('fetch_row'db_exec(array(__FILE____LINE__), 'query''SELECT COUNT(u.user_name) AS c FROM u_miembros AS u LEFT JOIN p_comentarios AS c ON u.user_id = c.c_user WHERE c.c_post_id = \''.(int)$post_id.'\' && c.c_status = \'0\' && u.user_activo = \'1\' && u.user_baneado = \'0\'')); 


Reemplazar por:

$q1 db_exec('fetch_row'db_exec(array(__FILE____LINE__), 'query''SELECT COUNT(cid) FROM p_comentarios WHERE c_post_id = \''.(int)$post_id.'\' '.($tsUser->is_admod '' ' AND c_status = \'0\'').'')); 


Buscar:

/*
getComentarios()
*/
function getComentarios($post_id){
global 
$tsCore$tsUser;
//
$start $tsCore->setPageLimit($tsCore->settings['c_max_com']);
$query db_exec(array(__FILE____LINE__), 'query''SELECT u.user_name, u.user_activo, u.user_baneado, c.* FROM u_miembros AS u LEFT JOIN p_comentarios AS c ON u.user_id = c.c_user WHERE c.c_post_id = \''.(int)$post_id.'\' '.($tsUser->is_admod '' 'AND c.c_status = \'0\' AND u.user_activo = \'1\' && u.user_baneado = \'0\'').' ORDER BY c.cid LIMIT '.$start);
// COMENTARIOS TOTALES
$return['num'] = db_exec('num_rows'db_exec(array(__FILE____LINE__), 'query''SELECT cid FROM p_comentarios WHERE c_post_id = \''.(int)$post_id.'\' '.($tsUser->is_admod '' 'AND c_status = \'0\'').''));
//
$comments result_array($query);


// PARSEAR EL BBCODE
$i 0;
foreach(
$comments as $comment){
// CON ESTE IF NOS AHORRAMOS CONSULTAS
if($comment['c_votos'] != 0){
$query db_exec(array(__FILE____LINE__), 'query''SELECT voto_id FROM p_votos WHERE tid = \''.(int)$comment['cid'].'\' AND tuser = \''.$tsUser->uid.'\' AND type = \'2\' LIMIT 1');
$votado db_exec('num_rows'$query);

} else 
$votado 0;

// BLOQUEADO
$return['block'] = db_exec('num_rows'db_exec(array(__FILE____LINE__), 'query''SELECT bid, b_user, b_auser FROM `u_bloqueos` WHERE b_user = \''.(int)$comment['c_user'].'\' AND b_auser = \''.$tsUser->uid.'\' LIMIT 1'));

//
$return['data'][$i] = $comment;
$return['data'][$i]['votado'] = $votado;
$return['data'][$i]['c_html'] = $tsCore->parseBadWords($tsCore->parseBBCode($return['data'][$i]['c_body']), true);
$i++;
}
//
return $return;



Reemplazar por:

/*
getComentarios()
*/
function getComentarios($post_id){
global 
$tsCore$tsUser;
//
$start $tsCore->setPageLimit($tsCore->settings['c_max_com']);
$query db_exec(array(__FILE____LINE__), 'query''SELECT u.user_name, u.user_activo, u.user_baneado, c.* FROM u_miembros AS u LEFT JOIN p_comentarios AS c ON u.user_id = c.c_user WHERE c.c_post_id = \''.(int)$post_id.'\' && c.c_user != \'0\' '.($tsUser->is_admod '' 'AND c.c_status = \'0\' AND u.user_activo = \'1\' && u.user_baneado = \'0\'').' ORDER BY c.cid');
$comn result_array($query);
$queryanon db_exec(array(__FILE____LINE__), 'query''SELECT * FROM p_comentarios WHERE c_post_id = \''.(int)$post_id.'\' && c_user = \'0\' '.($tsUser->is_admod '' 'AND c_status = \'0\'').' ORDER BY cid');
$comanon result_array($queryanon);
$i 0;
foreach(
$comanon as $coma){
$anon_datos unserialize($coma['c_anon']);
$comanon[$i]['anon'] = 1;
$comanon[$i]['user_activo'] = 1;
$comanon[$i]['user_name'] = $anon_datos['name'];
$comanon[$i]['user_email'] = $anon_datos['email'];
$i++;
}


// COMENTARIOS TOTALES
$return['num'] = db_exec('num_rows'db_exec(array(__FILE____LINE__), 'query''SELECT cid FROM p_comentarios WHERE c_post_id = \''.(int)$post_id.'\' '.($tsUser->is_admod '' ' AND c_status = \'0\'').''));
//
$com array_merge((array)$comn, (array)$comanon);
// ORDENAR COMENTARIOS
foreach ($com as $key => $row) {
$aux[$key] = $row['cid'];
}
array_multisort($auxSORT_ASC$com);
//COMO NO NOS VALIA LA FUNCION DEL SCRIPT, CREAMOS UN PROPIO SISTEMA
$page $_GET['page'] == : (int)$_GET['page'];

$limits[0] = empty($page) ? : (int) ((($page 1) * $tsCore->settings['c_max_com']));
$limits[1] = $limits[0]+$tsCore->settings['c_max_com']-1;



//LOS GUARDAMOS ORDENADITOS
while($limits[0] <= $limits[1]){
if(!empty(
$com[$limits[0]]))
$comments[] = $com[$limits[0]];

$limits[0]++;
}
// PARSEAR EL BBCODE
$i 0;
foreach(
$comments as $comment){
// CON ESTE IF NOS AHORRAMOS CONSULTAS
if($comment['c_votos'] != 0){
$query db_exec(array(__FILE____LINE__), 'query''SELECT voto_id FROM p_votos WHERE tid = \''.(int)$comment['cid'].'\' AND tuser = \''.$tsUser->uid.'\' AND type = \'2\' LIMIT 1');
$votado db_exec('num_rows'$query);

} else 
$votado 0;

// BLOQUEADO
$return['block'] = db_exec('num_rows'db_exec(array(__FILE____LINE__), 'query''SELECT bid, b_user, b_auser FROM `u_bloqueos` WHERE b_user = \''.(int)$comment['c_user'].'\' AND b_auser = \''.$tsUser->uid.'\' LIMIT 1'));

//
$return['data'][$i] = $comment;
$return['data'][$i]['votado'] = $votado;
$return['data'][$i]['c_html'] = $tsCore->parseBadWords($tsCore->parseBBCode($return['data'][$i]['c_body']), true);
$i++;
}
//
return $return;



Buscar:

/*
newComentario()
*/
function newComentario(){
global 
$tsCore$tsUser$tsActividad;

// NO MAS DE 1500 CARACTERES PUES NADIE COMENTA TANTO xD
$comentario substr($_POST['comentario'],0,1500);
$post_id = ($_POST['postid']);
/* DE QUIEN ES EL POST */
$query db_exec(array(__FILE____LINE__), 'query''SELECT post_user, post_block_comments FROM p_posts WHERE post_id = \''.(int)$post_id.'\' LIMIT 1');
$data db_exec('fetch_assoc'$query);

/* COMPROBACIONES */
$tsText preg_replace('# +#',"",$comentario);
$tsText str_replace("\n","",$tsText);
if(
$tsText == '') return '0: El campo <b>Comentario</b> es requerido para esta operaci&oacute;n';
/* ------ */
$most_resp $_POST['mostrar_resp'];
$fecha time();
//
if($data['post_user']){
if(
$data['post_block_comments'] != || $data['post_user'] == $tsUser->uid || $tsUser->is_admod || $tsUser->permisos['mocepc']){
if(empty(
$tsUser->is_admod) && $tsUser->permisos['gopcp'] == false) return '0: No deber&iacute;as hacer estas pruebas.';
// ANTI FLOOD
$tsCore->antiFlood();
$_SERVER['REMOTE_ADDR'] = $_SERVER['X_FORWARDED_FOR'] ? $_SERVER['X_FORWARDED_FOR'] : $_SERVER['REMOTE_ADDR'];
if(!
filter_var($_SERVER['REMOTE_ADDR'], FILTER_VALIDATE_IP)) { die('0: Su ip no se pudo validar.'); }
if(
db_exec(array(__FILE____LINE__), 'query''INSERT INTO `p_comentarios` (`c_post_id`, `c_user`, `c_date`, `c_body`, `c_ip`) VALUES (\''.(int)$post_id.'\', \''.$tsUser->uid.'\', \''.$fecha.'\', \''.$comentario.'\', \''.$_SERVER['REMOTE_ADDR'].'\')')) {
$cid db_exec('insert_id');
//SUMAMOS A LAS ESTADÍSTICAS
db_exec(array(__FILE____LINE__), 'query''UPDATE w_stats SET stats_comments = stats_comments + 1 WHERE stats_no = \'1\'');
db_exec(array(__FILE____LINE__), 'query''UPDATE p_posts SET post_comments = post_comments + 1 WHERE post_id = \''.(int)$post_id.'\'');
db_exec(array(__FILE____LINE__), 'query''UPDATE u_miembros SET user_comentarios = user_comentarios + 1 WHERE user_id = \''.$tsUser->uid.'\'');
// NOTIFICAR SI FUE CITADO Y A LOS QUE SIGUEN ESTE POST, DUEÑO
$this->quoteNoti($post_id$data['post_user'], $cid$comentario);
// ACTIVIDAD
$tsActividad->setActividad(5$post_id);
// array(comid, comhtml, combbc, fecha, autor_del_post)
if(!empty($most_resp)) return array($cid$tsCore->parseBadWords($tsCore->parseBBCode($comentario), true),$comentario$fecha$_POST['auser'], ''$_SERVER['REMOTE_ADDR']);
else return 
'1: Tu comentario fue agregado satisfactoriamente.';
} else return 
'0: Ocurri&oacute; un error int&eacute;ntalo m&aacute;s tarde.';
} else return 
'0: El post se encuentra cerrado y no se permiten comentarios.';
} else return 
'0: El post no existe.';



Reemplazar por:

/*
newComentario()
*/
function newComentario(){
global 
$tsCore$tsUser$tsActividad;

// NO MAS DE 1500 CARACTERES PUES NADIE COMENTA TANTO xD
$comentario substr($_POST['comentario'],0,1500);
$post_id = ($_POST['postid']);
$anon $tsUser->uid NULL 1;
/* COMENTARIOS DE VISITANTES */
if($anon){
if(
filter_var($_POST['em'], FILTER_VALIDATE_EMAIL))
$anon serialize(array('email' => $tsCore->setSecure($_POST['em']), 'name' => $tsCore->setSecure($_POST['na'])));
elseif(empty(
$_POST['em']) || empty($_POST['na']))
return 
'0: Rellene todos los campos';
else
return 
'0: Introduzca un email v&aacute;lido';
}
/* DE QUIEN ES EL POST */
$query db_exec(array(__FILE____LINE__), 'query''SELECT post_user, post_block_comments FROM p_posts WHERE post_id = \''.(int)$post_id.'\' LIMIT 1');
$data db_exec('fetch_assoc'$query);

/* COMPROBACIONES */
$tsText preg_replace('# +#',"",$comentario);
$tsText str_replace("\n","",$tsText);
if(
$tsText == '') return '0: El campo <b>Comentario</b> es requerido para esta operaci&oacute;n';
/* ------ */
$most_resp $_POST['mostrar_resp'];
$fecha time();
//
if($data['post_user']){
if(
$data['post_block_comments'] != || $data['post_user'] == $tsUser->uid || $tsUser->is_admod || $tsUser->permisos['mocepc']){
if(empty(
$tsUser->is_admod) && $tsUser->permisos['gopcp'] == false && $anon == NULL) return '0: No deber&iacute;as hacer estas pruebas.';
// ANTI FLOOD
$tsCore->antiFlood();
$_SERVER['REMOTE_ADDR'] = $_SERVER['X_FORWARDED_FOR'] ? $_SERVER['X_FORWARDED_FOR'] : $_SERVER['REMOTE_ADDR'];
if(!
filter_var($_SERVER['REMOTE_ADDR'], FILTER_VALIDATE_IP)) { die('0: Su ip no se pudo validar.'); }
if(
db_exec(array(__FILE____LINE__), 'query''INSERT INTO `p_comentarios` (`c_post_id`, `c_user`, `c_date`, `c_body`, `c_ip`, `c_anon`) VALUES (\''.(int)$post_id.'\', \''.$tsUser->uid.'\', \''.$fecha.'\', \''.$comentario.'\', \''.$_SERVER['REMOTE_ADDR'].'\', \''.$anon.'\')')) {
$cid db_exec('insert_id');
//SUMAMOS A LAS ESTADÍSTICAS
db_exec(array(__FILE____LINE__), 'query''UPDATE w_stats SET stats_comments = stats_comments + 1 WHERE stats_no = \'1\'');
db_exec(array(__FILE____LINE__), 'query''UPDATE p_posts SET post_comments = post_comments + 1 WHERE post_id = \''.(int)$post_id.'\'');
if(
$anon == NULL)
db_exec(array(__FILE____LINE__), 'query''UPDATE u_miembros SET user_comentarios = user_comentarios + 1 WHERE user_id = \''.$tsUser->uid.'\'');
// NOTIFICAR SI FUE CITADO Y A LOS QUE SIGUEN ESTE POST, DUEÑO
$this->quoteNoti($post_id$data['post_user'], $cid$comentario);
// ACTIVIDAD
$tsActividad->setActividad(5$post_id);
// array(comid, comhtml, combbc, fecha, autor_del_post)
if(!empty($most_resp)) return array($cid$tsCore->parseBadWords($tsCore->parseBBCode($comentario), true),$comentario$fecha$_POST['auser'], ''$_SERVER['REMOTE_ADDR'], $tsCore->setSecure($_POST['na']));
else return 
'1: Tu comentario fue agregado satisfactoriamente.';
} else return 
'0: Ocurri&oacute; un error int&eacute;ntalo m&aacute;s tarde.';
} else return 
'0: El post se encuentra cerrado y no se permiten comentarios.';
} else return 
'0: El post no existe.';



En c.core.php --> inc --> class --> c.core.php

Buscar:

$limit $tsUser->permisos['goaf']; 


Reemplazar por:

$limit = empty($tsUser->permisos['goaf']) ? 60 $tsUser->permisos['goaf']; 


En t.posts.tpl --> themes --> default --> templates --> t.posts.tpl

Buscar:

{if !$tsUser->is_member}
<
div class="emptyData clearfix">
Para poder comentar necesitas estar <a onclick="registro_load_form(); return false" href="">Registrado.</aO.. ya tienes usuario? <a onclick="open_login_box('open')" href="#">Logueate!</a>
</
div>
{elseif 
$tsPost.block 0}
<
div class="emptyData clearfix">
&
iquest;Te has portado mal? {$tsPost.user_namete ha bloqueado y no podr&aacute;s comentar sus post.
</
div>
{/if} 


Reemplazar por:

{if $tsPost.block 0}
<
div class="emptyData clearfix">
&
iquest;Te has portado mal? {$tsPost.user_namete ha bloqueado y no podr&aacute;s comentar sus post.
</
div>
{/if} 


En m.post_comments.tpl --> themes --> default --> templates --> modules --> m.post_comments.tpl

Buscar:

{elseif $tsUser->is_admod == && $tsUser->permisos.gopcp == false


Reemplazar por:

{elseif $tsUser->is_admod == && $tsUser->permisos.gopcp == false && $tsUser->is_member


Buscar:

{elseif $tsUser->is_member && ($tsPost.post_block_comments != || $tsPost.post_user == $tsUser->uid || $tsUser->is_admod || $tsUser->permisos.gopcp) && $tsPost.block == 0


Reemplazar por:

{elseif ($tsPost.post_block_comments != || $tsPost.post_user == $tsUser->uid || $tsUser->is_admod || $tsUser->permisos.gopcp) && $tsPost.block == 0


En m.post_comments_form.tpl --> themes --> default --> templates --> modules --> m.post_comments_form.tpl

Buscar:

<textarea id="body_comm" class="onblur_effect autogrow" tabindex="1" title="Escribir un comentario..." style="resize:none;" onfocus="onfocus_input(this)" onblur="onblur_input(this)">Escribir un comentario...</textarea


Arriba agregar:

{if !$tsUser->is_member}
<
input type="text" id="na" name="na" placeholder="Nombre" />
<
input type="text" id="em" name="em" placeholder="Email" />
{/if} 


En p.comentario.ajax.tpl --> themes --> default --> templates --> t.php_files --> p.comentario.ajax.tpl

Buscar:

<a href="{$tsConfig.url}/perfil/{$c.user_name}class="nick">{$c.user_name}</a> {if $tsUser->is_admod}(<span style="color:red;">IP:</span> <a href="{$tsConfig.url}/moderacion/buscador/1/1/{$c.c_ip}class="geoip" target="_blank">{$c.c_ip}</a>){/if} dijo 


Reemplazar por:

{if $c.anon}<b>{$c.user_name}</b> {if $tsUser->is_admod}({$c.user_email}){if $tsUser->is_admod}(<span style="color:red;">IP:</span> <a href="{$tsConfig.url}/moderacion/buscador/1/1/{$c.c_ip}class="geoip" target="_blank">{$c.c_ip}</a>){/if}{/if}{else}<a href="{$tsConfig.url}/perfil/{$c.user_name}class="nick">{$c.user_name}</a> {if $tsUser->is_admod}(<span style="color:red;">IP:</span> <a href="{$tsConfig.url}/moderacion/buscador/1/1/{$c.c_ip}class="geoip" target="_blank">{$c.c_ip}</a>){/if}{/if} dijo 


Buscar:

{if $tsUser->is_member}

<
div class="floatR answerOptions" id="opt_{$c.cid}"


Reemplazar por:

{if !$tsUser->is_member}

<
div class="floatR answerOptions" id="opt_{$c.cid}">

<
ul id="ul_cmt_{$c.cid}">

{*if 
$tsUser->info.user_rango || $tsUser->info.user_rango_post != 3*}

<
li class="numbersvotes" {if $c.c_votos == 0}style="display: none"{/if}>

<
div class="overview">

<
span class="{if $c.c_votos >= 0}positivo{else}negativo{/if}" id="votos_total_{$c.cid}">{if $c.c_votos != 0}{if $c.c_votos >= 0}+{/if}{$c.c_votos}{/if}</span>

</
div>

</
li>
</
ul>
</
div>
{/if}
{if 
$tsUser->is_member}

<
div class="floatR answerOptions" id="opt_{$c.cid}"


En p.comentario.preview.tpl --> themes --> default --> templates --> t.php_files --> p.comentario.preview.tpl

Buscar:

<a href="{$tsConfig.url}/perfil/{$tsUser->nick}class="nick">{$tsUser->nick}</a> {if $tsUser->is_admod}(<span style="color:red;">IP:</span> <a href="{$tsConfig.url}/moderacion/buscador/1/1/{$tsComment.6}class="geoip" target="_blank">{$tsComment.6}</a>){/if} dijo 


Reemplazar por:

{if $tsUser->is_member}<a href="{$tsConfig.url}/perfil/{$tsUser->nick}class="nick">{$tsUser->nick}</a>{else}<b>{$tsComment.7}</b>{/if} {if $tsUser->is_admod}(<span style="color:red;">IP:</span> <a href="{$tsConfig.url}/moderacion/buscador/1/1/{$tsComment.6}class="geoip" target="_blank">{$tsComment.6}</a>){/if} dijo 


En funciones.js --> themes --> default --> js --> funciones.js

Buscar:

data'comentario=' encodeURIComponent(text) + '&postid=' gget('postid') + '&mostrar_resp=' mostrar_resp '&auser=' auser


Reemplazar por:

data'comentario=' encodeURIComponent(text) + '&postid=' gget('postid') + '&mostrar_resp=' mostrar_resp '&auser=' auser '&em=' + $('#em').val() + '&na=' + $('#na').val(), 


Buscar:

data'comentario=' encodeURIComponent(text) + '&auser=' auser


Reemplazar por:

data'comentario=' encodeURIComponent(text) + '&auser=' auser '&na=' + $('#na').val(), 





Creditos: Debes agradecer para ver el contenido...
Responder
#2

0
Gracias
Responder


Compartir en:

Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)