01-25-2021, 01:48 PM
1
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:
Código PHP: ( Seleccionar Todo )
'comentario-preview' => array('n' => 2, 'p' => 'preview'),
'comentario-agregar' => array('n' => 2, 'p' => 'preview'),
Reemplazar por:
Código PHP: ( Seleccionar Todo )
'comentario-preview' => array('n' => 0, 'p' => 'preview'),
'comentario-agregar' => array('n' => 0, 'p' => 'preview'),
Buscar:
Código PHP: ( Seleccionar Todo )
$preview = array(0,$tsCore->parseBBCode($comentario),'',time(),$auser, $comentario, $_SERVER['REMOTE_ADDR']);
Reemplazar por:
Código PHP: ( Seleccionar Todo )
$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:
Código PHP: ( Seleccionar Todo )
$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:
Código PHP: ( Seleccionar Todo )
$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:
Código PHP: ( Seleccionar Todo )
/*
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:
Código PHP: ( Seleccionar Todo )
/*
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($aux, SORT_ASC, $com);
//COMO NO NOS VALIA LA FUNCION DEL SCRIPT, CREAMOS UN PROPIO SISTEMA
$page = $_GET['page'] == 1 ? 0 : (int)$_GET['page'];
$limits[0] = empty($page) ? 0 : (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:
Código PHP: ( Seleccionar Todo )
/*
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ón';
/* ------ */
$most_resp = $_POST['mostrar_resp'];
$fecha = time();
//
if($data['post_user']){
if($data['post_block_comments'] != 1 || $data['post_user'] == $tsUser->uid || $tsUser->is_admod || $tsUser->permisos['mocepc']){
if(empty($tsUser->is_admod) && $tsUser->permisos['gopcp'] == false) return '0: No deberí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ó un error inténtalo más tarde.';
} else return '0: El post se encuentra cerrado y no se permiten comentarios.';
} else return '0: El post no existe.';
}
Reemplazar por:
Código PHP: ( Seleccionar Todo )
/*
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 > 0 ? 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á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ón';
/* ------ */
$most_resp = $_POST['mostrar_resp'];
$fecha = time();
//
if($data['post_user']){
if($data['post_block_comments'] != 1 || $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í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ó un error inténtalo má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:
Código PHP: ( Seleccionar Todo )
$limit = $tsUser->permisos['goaf'];
Reemplazar por:
Código PHP: ( Seleccionar Todo )
$limit = empty($tsUser->permisos['goaf']) ? 60 : $tsUser->permisos['goaf'];
En t.posts.tpl --> themes --> default --> templates --> t.posts.tpl
Buscar:
Código PHP: ( Seleccionar Todo )
{if !$tsUser->is_member}
<div class="emptyData clearfix">
Para poder comentar necesitas estar <a onclick="registro_load_form(); return false" href="">Registrado.</a> O.. ya tienes usuario? <a onclick="open_login_box('open')" href="#">Logueate!</a>
</div>
{elseif $tsPost.block > 0}
<div class="emptyData clearfix">
¿Te has portado mal? {$tsPost.user_name} te ha bloqueado y no podrás comentar sus post.
</div>
{/if}
Reemplazar por:
Código PHP: ( Seleccionar Todo )
{if $tsPost.block > 0}
<div class="emptyData clearfix">
¿Te has portado mal? {$tsPost.user_name} te ha bloqueado y no podrás comentar sus post.
</div>
{/if}
En m.post_comments.tpl --> themes --> default --> templates --> modules --> m.post_comments.tpl
Buscar:
Código PHP: ( Seleccionar Todo )
{elseif $tsUser->is_admod == 0 && $tsUser->permisos.gopcp == false}
Reemplazar por:
Código PHP: ( Seleccionar Todo )
{elseif $tsUser->is_admod == 0 && $tsUser->permisos.gopcp == false && $tsUser->is_member}
Buscar:
Código PHP: ( Seleccionar Todo )
{elseif $tsUser->is_member && ($tsPost.post_block_comments != 1 || $tsPost.post_user == $tsUser->uid || $tsUser->is_admod || $tsUser->permisos.gopcp) && $tsPost.block == 0}
Reemplazar por:
Código PHP: ( Seleccionar Todo )
{elseif ($tsPost.post_block_comments != 1 || $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:
Código PHP: ( Seleccionar Todo )
<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:
Código PHP: ( Seleccionar Todo )
{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:
Código PHP: ( Seleccionar Todo )
<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:
Código PHP: ( Seleccionar Todo )
{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:
Código PHP: ( Seleccionar Todo )
{if $tsUser->is_member}
<div class="floatR answerOptions" id="opt_{$c.cid}">
Reemplazar por:
Código PHP: ( Seleccionar Todo )
{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:
Código PHP: ( Seleccionar Todo )
<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:
Código PHP: ( Seleccionar Todo )
{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:
Código PHP: ( Seleccionar Todo )
data: 'comentario=' + encodeURIComponent(text) + '&postid=' + gget('postid') + '&mostrar_resp=' + mostrar_resp + '&auser=' + auser,
Reemplazar por:
Código PHP: ( Seleccionar Todo )
data: 'comentario=' + encodeURIComponent(text) + '&postid=' + gget('postid') + '&mostrar_resp=' + mostrar_resp + '&auser=' + auser + '&em=' + $('#em').val() + '&na=' + $('#na').val(),
Buscar:
Código PHP: ( Seleccionar Todo )
data: 'comentario=' + encodeURIComponent(text) + '&auser=' + auser,
Reemplazar por:
Código PHP: ( Seleccionar Todo )
data: 'comentario=' + encodeURIComponent(text) + '&auser=' + auser + '&na=' + $('#na').val(),
Creditos: Debes agradecer para ver el contenido...



Facebook
Twitter
Reddit
Digg
del.icio.us
Tumblr
Pinterest
Blogger
Fark
LinkedIn
Mix
Google