-
Cómo funcionan las Mision...
Foro: Guías y Tutoriales
Último mensaje por: Tronlar
Ayer, 09:46 PM
» Respuestas: 0
» Vistas: 80 -
V6 Original/Dark/Memes (A...
Foro: Diseños Terminados
Último mensaje por: carlos007r
Ayer, 11:08 AM
» Respuestas: 26
» Vistas: 6,344 -
V5
Foro: Diseños Terminados
Último mensaje por: Aeikox
06-13-2026, 12:16 AM
» Respuestas: 8
» Vistas: 1,449 -
Risus 1.3 Actualizado jQu...
Foro: Risus 1.3
Último mensaje por: Tronlar
06-12-2026, 10:45 PM
» Respuestas: 55
» Vistas: 10,663 -
Preguntas Frecuentes y So...
Foro: Guías y Tutoriales
Último mensaje por: Tronlar
06-12-2026, 06:17 PM
» Respuestas: 0
» Vistas: 64 -
Cómo registrar tu comunid...
Foro: Guías y Tutoriales
Último mensaje por: Tronlar
06-12-2026, 05:32 PM
» Respuestas: 0
» Vistas: 57 -
Cómo monetizar tu comunid...
Foro: Guías y Tutoriales
Último mensaje por: Tronlar
06-11-2026, 07:19 PM
» Respuestas: 0
» Vistas: 56 -
Introducción al SEO para ...
Foro: Guías y Tutoriales
Último mensaje por: Tronlar
06-11-2026, 06:58 PM
» Respuestas: 0
» Vistas: 59 -
Guía completa de SEO para...
Foro: Guías y Tutoriales
Último mensaje por: Tronlar
06-11-2026, 06:48 PM
» Respuestas: 0
» Vistas: 62 -
Diccionario de términos b...
Foro: Guías y Tutoriales
Último mensaje por: Tronlar
06-11-2026, 01:41 PM
» Respuestas: 0
» Vistas: 88
- Mensajes del foro:1,957
- Temas del foro:614
- Miembros:1,036
- Último miembro:carlos007r
hola necesito ayuda he probado varios script que ya son viejo y que el capcha no le funciona..
como el script moovax ex voope.. o el smline el script de versiones antigua de phpost... como se puede hacer para que el capcha quede
otra ves actualizado que codigo hay que tocar.... y que vuelve a verse el capcha en el registro de usuario....
todo esto esta relacionado con el capcha de google....
gracias...!!!
¡Hola a todos los del foro!
Me llamo Víctor y soy de México.
Ya tenía años que no me registraba en ningún foro y pues llegue aquí cuando estaba buscando un script para implementarlo en mi web. No se nada de programación y estoy aprendiendo poco a poco con los tutoriales y los consejos de @ Tronlar
Recién puse en funcionamiento el sitio y quiero presentarlo aquí al foro para que ustedes los expertos me den su visto bueno, sus comentarios y sugerencias para mejorarlo.
Gracias a los que se tomen la molestia de visitarlo y a los que no, también.

@ Tronlar Sería un honor para mí que seas mi sponsor
Captura
Demo
http://Registrate o inicia tu sesión par... contenido
Usercralke
1q2w3e4r5t
Instalación desde cero:
- Se instala igual que el script Risus, suben los archivos de la carpeta y hacen los paso de la instalación, al terminar la instalación tienes que ejecutar las consultas en tu base de datos que están dentro del archivo que te descargas.
Descargar archivos
Mega
http://Registrate o inicia tu sesión par... contenido
Googe Drive
http://Registrate o inicia tu sesión par... contenido
Mediafire
http://Registrate o inicia tu sesión par... contenido
Instalación teniendo ya otro tema o la web avanzada:
- Si tienes mods instalados que hayas tenido que editar los archivos c.borradores.php, c.cuenta.php y c.posts.php tienes que seguir el tutorial para instalarlo, si no has editado esos archivos, dejo esos archivos ya editados y lo puedes sustituir y hacer una instalación normal como cualquier otro tema más ejecutar las consultas.
Tutorial
- Imagen de portada en los posts Kmario19
Ejecutar estas consultas
ALTER TABLE p_posts ADD post_portada VARCHAR( 180 ) NOT NULL;
ALTER TABLE p_borradores ADD b_portada VARCHAR( 180 ) NOT NULL
En c.posts.php --> inc --> class --> c.posts.php
Buscar:
/*
getPreview()
*/
function getPreview(){
global $tsCore;
//
$titulo = $tsCore->setSecure($_POST['titulo'], true);
$cuerpo = $tsCore->setSecure($_POST['cuerpo'], true);
//
return array('titulo' => $titulo, 'cuerpo' => $tsCore->parseBadWords($tsCore->parseBBCode($cuerpo), true));
}
Reemplazar por:
/*
getPreview()
*/
function getPreview(){
global $tsCore;
//
$titulo = $tsCore->setSecure($_POST['titulo'], true);
$imagen = $tsCore->setSecure($_POST['imagen'], true);
$cuerpo = $tsCore->setSecure($_POST['cuerpo'], true);
//
return array('titulo' => $titulo, 'imagen' => $imagen, 'cuerpo' => $tsCore->parseBadWords($tsCore->parseBBCode($cuerpo), true));
}
Buscar:
'title' => $tsCore->parseBadWords($tsCore->setSecure($_POST['titulo'], true)),2,
Debajo agregar:
'portada' => $tsCore->setSecure($_POST['imagen']),
Buscar:
// CATEGORIAS
$query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT c.c_nombre, c.c_seo FROM p_categorias AS c WHERE c.cid = \''.$postData['post_category'].'\'');
$postData['categoria'] = db_exec('fetch_assoc', $query);
Reemplazar por:
// CATEGORIAS
$query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT c.c_nombre, c.c_img, c.c_seo FROM p_categorias AS c WHERE c.cid = \''.$postData['post_category'].'\'');
$postData['categoria'] = db_exec('fetch_assoc', $query);
Buscar:
// INSERTAMOS
$_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_posts` (post_user, post_category, post_title, post_body, post_date, post_tags, post_ip, post_private, post_block_comments, post_sponsored, post_sticky, post_smileys, post_visitantes, post_status) VALUES (\''.$tsUser->uid.'\', \''.(int)$postData['category'].'\', \''.$postData['title'].'\', \''.$postData['body'].'\', \''.$postData['date'].'\', \''.$postData['tags'].'\', \''.$_SERVER['REMOTE_ADDR'].'\', \''.(int)$postData['private'].'\', \''.(int)$postData['block_comments'].'\', \''.(int)$postData['sponsored'].'\', \''.(int)$postData['sticky'].'\', \''.(int)$postData['smileys'].'\', \''.(int)$postData['visitantes'].'\', '.(!$tsUser->is_admod && ($tsCore->settings['c_desapprove_post'] == 1 || $tsUser->permisos['gorpap'] == true) ? '\'3\'' : '\'0\'').')')) {
$postID = db_exec('insert_id');
Reemplazar por:
// INSERTAMOS
$_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_posts` (post_user, post_category, post_title, post_portada, post_body, post_date, post_tags, post_ip, post_private, post_block_comments, post_sponsored, post_sticky, post_smileys, post_visitantes, post_status) VALUES (\''.$tsUser->uid.'\', \''.(int)$postData['category'].'\', \''.$postData['title'].'\', \''.$postData['portada'].'\', \''.$postData['body'].'\', \''.$postData['date'].'\', \''.$postData['tags'].'\', \''.$_SERVER['REMOTE_ADDR'].'\', \''.(int)$postData['private'].'\', \''.(int)$postData['block_comments'].'\', \''.(int)$postData['sponsored'].'\', \''.(int)$postData['sticky'].'\', \''.(int)$postData['smileys'].'\', \''.(int)$postData['visitantes'].'\', '.(!$tsUser->is_admod && ($tsCore->settings['c_desapprove_post'] == 1 || $tsUser->permisos['gorpap'] == true) ? '\'3\'' : '\'0\'').')')) {
$postID = db_exec('insert_id');
Buscar:
'title' => $tsCore->parseBadWords($_POST['titulo'], true),
Debajo agregar:
'portada' => $tsCore->setSecure($_POST['imagen'], true),
Buscar:
// ACTUALIZAMOS
if($tsUser->uid == $data['post_user'] || !empty($tsUser->is_admod) || !empty($tsUser->permisos['moedpo'])){
if(db_exec(array(__FILE__, __LINE__), 'query', 'UPDATE p_posts SET post_title = \''.$postData['title'].'\', post_body = \''.$postData['body'].'\', post_tags = \''.$tsCore->setSecure($postData['tags']).'\', post_category = \''.(int)$postData['category'].'\', post_private = \''.$postData['private'].'\', post_block_comments = \''.$postData['block_comments'].'\', post_sponsored = \''.$postData['sponsored'].'\', post_smileys = \''.$postData['smileys'].'\', post_visitantes = \''.$postData['visitantes'].'\', post_sticky = \''.$postData['sticky'].'\' WHERE post_id = \''.(int)$post_id.'\'') or exit( show_error('Error al ejecutar la consulta de la línea '.__LINE__.' de '.__FILE__.'.', 'db') )) {
Reemplazar por:
// ACTUALIZAMOS
if($tsUser->uid == $data['post_user'] || !empty($tsUser->is_admod) || !empty($tsUser->permisos['moedpo'])){
if(db_exec(array(__FILE__, __LINE__), 'query', 'UPDATE p_posts SET post_title = \''.$postData['title'].'\', post_portada = \''.$postData['portada'].'\', post_body = \''.$postData['body'].'\', post_tags = \''.$tsCore->setSecure($postData['tags']).'\', post_category = \''.(int)$postData['category'].'\', post_private = \''.$postData['private'].'\', post_block_comments = \''.$postData['block_comments'].'\', post_sponsored = \''.$postData['sponsored'].'\', post_smileys = \''.$postData['smileys'].'\', post_visitantes = \''.$postData['visitantes'].'\', post_sticky = \''.$postData['sticky'].'\' WHERE post_id = \''.(int)$post_id.'\'') or exit( show_error('Error al ejecutar la consulta de la línea '.__LINE__.' de '.__FILE__.'.', 'db') )) {
Buscar:
// ES SU POST EL Q INTENTA BORRAR?
$query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT post_id, post_title, post_user, post_body, post_category FROM p_posts WHERE post_id = \''.(int)$post_id.'\' AND post_user = \''.$tsUser->uid.'\'');
$data = db_exec('fetch_assoc', $query);
db_exec(array(__FILE__, __LINE__), 'query', 'UPDATE `w_stats` SET `stats_posts` = stats_posts - \'1\' WHERE `stats_no` = \'1\'');
db_exec(array(__FILE__, __LINE__), 'query', 'UPDATE `u_miembros` SET `user_posts` = user_posts - \'1\' WHERE `user_id` = \''.$data['post_user'].'\'');
// ES MIO O SOY MODERADOR/ADMINISTRADOR...
if(!empty($data['post_id']) || !empty($tsUser->is_admod)){
// SI ES MIS POST LO BORRAMOS Y MANDAMOS A BORRADORES
if(db_exec(array(__FILE__, __LINE__), 'query', 'DELETE FROM p_posts WHERE post_id = \''.(int)$post_id.'\'')) {
if(db_exec(array(__FILE__, __LINE__), 'query', 'DELETE FROM p_comentarios WHERE c_post_id = \''.(int)$post_id.'\'')) {
if(db_exec(array(__FILE__, __LINE__), 'query', 'INSERT INTO `p_borradores` (b_user, b_date, b_title, b_body, b_tags, b_category, b_status, b_causa) VALUES (\''.$tsUser->uid.'\', \''.time().'\', \''.$tsCore->setSecure($data['post_title']).'\', \''.$tsCore->setSecure($data['post_body']).'\', \'\', \''.$data['post_category'].'\', \'2\', \'\')'))
return "1: El post fue eliminado satisfactoriamente.";
}
Reemplazar por:
// ES SU POST EL Q INTENTA BORRAR?
$query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT post_id, post_title, post_portada, post_user, post_body, post_category FROM p_posts WHERE post_id = \''.(int)$post_id.'\' AND post_user = \''.$tsUser->uid.'\'');
$data = db_exec('fetch_assoc', $query);
db_exec(array(__FILE__, __LINE__), 'query', 'UPDATE `w_stats` SET `stats_posts` = stats_posts - \'1\' WHERE `stats_no` = \'1\'');
db_exec(array(__FILE__, __LINE__), 'query', 'UPDATE `u_miembros` SET `user_posts` = user_posts - \'1\' WHERE `user_id` = \''.$data['post_user'].'\'');
// ES MIO O SOY MODERADOR/ADMINISTRADOR...
if(!empty($data['post_id']) || !empty($tsUser->is_admod)){
// SI ES MIS POST LO BORRAMOS Y MANDAMOS A BORRADORES
if(db_exec(array(__FILE__, __LINE__), 'query', 'DELETE FROM p_posts WHERE post_id = \''.(int)$post_id.'\'')) {
if(db_exec(array(__FILE__, __LINE__), 'query', 'DELETE FROM p_comentarios WHERE c_post_id = \''.(int)$post_id.'\'')) {
if(db_exec(array(__FILE__, __LINE__), 'query', 'INSERT INTO `p_borradores` (b_user, b_date, b_portada, b_title, b_body, b_tags, b_category, b_status, b_causa) VALUES (\''.$tsUser->uid.'\', \''.time().'\', \''.$tsCore->setSecure($data['post_title']).'\', \''.$tsCore->setSecure($data['post_portada']).'\', \''.$tsCore->setSecure($data['post_body']).'\', \'\', \''.$data['post_category'].'\', \'2\', \'\')'))
return "1: El post fue eliminado satisfactoriamente.";
}
Buscar:
/*********/
$query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT p.post_id, p.post_user, p.post_category, p.post_title, p.post_date, p.post_comments, p.post_puntos, p.post_private, p.post_sponsored, p.post_status, p.post_sticky, u.user_id, u.user_name, u.user_activo, u.user_baneado, c.c_nombre, c.c_seo, c.c_img FROM p_posts AS p LEFT JOIN u_miembros AS u ON p.post_user = u.user_id '.($tsUser->is_admod && $tsCore->settings['c_see_mod'] == 1 ? '' : ' && u.user_activo = \'1\' && u.user_baneado = \'0\'').' LEFT JOIN p_categorias AS c ON c.cid = p.post_category WHERE '.($tsUser->is_admod && $tsCore->settings['c_see_mod'] == 1 ? 'p.post_id > 0' : 'p.post_status = \'0\' && u.user_activo = \'1\' && u.user_baneado = \'0\'').' '.$c_where.' '.$s_where.' GROUP BY p.post_id ORDER BY '.$s_order.' DESC LIMIT '.$start);
$lastPosts['data'] = result_array($query);
Reemplazar por:
/*********/
$query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT p.post_id, p.post_user, p.post_category, p.post_title, p.post_portada, p.post_date, p.post_comments, p.post_puntos, p.post_hits, p.post_private, p.post_sponsored, p.post_status, p.post_sticky, u.user_id, u.user_name, u.user_activo, u.user_baneado, c.c_nombre, c.c_seo, c.c_img FROM p_posts AS p LEFT JOIN u_miembros AS u ON p.post_user = u.user_id '.($tsUser->is_admod && $tsCore->settings['c_see_mod'] == 1 ? '' : ' && u.user_activo = \'1\' && u.user_baneado = \'0\'').' LEFT JOIN p_categorias AS c ON c.cid = p.post_category WHERE '.($tsUser->is_admod && $tsCore->settings['c_see_mod'] == 1 ? 'p.post_id > 0' : 'p.post_status = \'0\' && u.user_activo = \'1\' && u.user_baneado = \'0\'').' '.$c_where.' '.$s_where.' GROUP BY p.post_id ORDER BY '.$s_order.' DESC LIMIT '.$start);
$lastPosts['data'] = result_array($query);
Buscar:
$query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT p.post_id, p.post_user, p.post_category, p.post_title, p.post_date, p.post_comments, p.post_favoritos, p.post_puntos, u.user_name, c.c_seo, c.c_nombre, c.c_img FROM p_posts AS p LEFT JOIN u_miembros AS u ON u.user_id = p.post_user LEFT JOIN p_categorias AS c ON c.cid = p.post_category WHERE p.post_status = \'0\' '.$where_cat.' '.$w_autor.' '.$w_search.' ORDER BY p.post_date DESC LIMIT '.$data['pages']['limit']);
$data['data'] = result_array($query);
Reemplazar por:
$query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT p.post_id, p.post_user, p.post_category, p.post_title, p.post_portada, p.post_date, p.post_comments, p.post_favoritos, p.post_puntos, u.user_name, c.c_seo, c.c_nombre, c.c_img FROM p_posts AS p LEFT JOIN u_miembros AS u ON u.user_id = p.post_user LEFT JOIN p_categorias AS c ON c.cid = p.post_category WHERE p.post_status = \'0\' '.$where_cat.' '.$w_autor.' '.$w_search.' ORDER BY p.post_date DESC LIMIT '.$data['pages']['limit']);
$data['data'] = result_array($query);
En c.borradores.php --> inc --> class --> c.borradores.php
Buscar:
'title' => $tsCore->setSecure($tsCore->parseBadWords($_POST['titulo']), true),
Debajo agregar:
'portada' => $tsCore->setSecure($_POST['imagen'], true),
Buscar:
// INSERT
if(db_exec(array(__FILE__, __LINE__), 'query', 'INSERT INTO `p_borradores` (`b_user`, `b_date`, `b_title`, `b_body`, `b_tags`, `b_category`, `b_private`, `b_block_comments`, `b_sponsored`, `b_sticky`, `b_smileys`, `b_visitantes`, `b_status`, `b_causa`) VALUES (\''.$tsUser->info['user_id'].'\', \''.$draftData['date'].'\', \''.$draftData['title'].'\', \''.$draftData['body'].'\', \''.$draftData['tags'].'\', \''.$draftData['category'].'\', \''.$draftData['private'].'\', \''.$draftData['block_comments'].'\', \''.$draftData['sponsored'].'\', \''.$draftData['sticky'].'\', \''.$draftData['smileys'].'\', \''.$draftData['visitantes'].'\', \'1\', \'\')')) return '1: '.db_exec('insert_id');
else return '0: '.show_error('Error al ejecutar la consulta de la línea '.__LINE__.' de '.__FILE__.'.', 'db');
Reemplazar por:
// INSERT
if(db_exec(array(__FILE__, __LINE__), 'query', 'INSERT INTO `p_borradores` (`b_user`, `b_date`, `b_portada`, `b_title`, `b_body`, `b_tags`, `b_category`, `b_private`, `b_block_comments`, `b_sponsored`, `b_sticky`, `b_smileys`, `b_visitantes`, `b_status`, `b_causa`) VALUES (\''.$tsUser->info['user_id'].'\', \''.$draftData['date'].'\', \''.$draftData['title'].'\', \''.$draftData['portada'].'\', \''.$draftData['body'].'\', \''.$draftData['tags'].'\', \''.$draftData['category'].'\', \''.$draftData['private'].'\', \''.$draftData['block_comments'].'\', \''.$draftData['sponsored'].'\', \''.$draftData['sticky'].'\', \''.$draftData['smileys'].'\', \''.$draftData['visitantes'].'\', \'1\', \'\')')) return '1: '.db_exec('insert_id');
else return '0: '.show_error('Error al ejecutar la consulta de la línea '.__LINE__.' de '.__FILE__.'.', 'db');
Buscar:
$bid = intval($_GET['action']);
$query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT bid, b_user, b_date, b_title, b_body, b_tags, b_category, b_private, b_block_comments, b_sponsored, b_sticky, b_smileys, b_post_id, b_status, b_causa FROM `p_borradores` WHERE `bid` = \''.(int)$bid.'\' AND `b_user` = \''.$tsUser->info['user_id'].'\' AND b_status = \''.$status.'\' LIMIT 1');
//
Reemplazar por:
$bid = intval($_GET['action']);
$query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT bid, b_user, b_date, b_portada, b_title, b_body, b_tags, b_category, b_private, b_block_comments, b_sponsored, b_sticky, b_smileys, b_post_id, b_status, b_causa FROM `p_borradores` WHERE `bid` = \''.(int)$bid.'\' AND `b_user` = \''.$tsUser->info['user_id'].'\' AND b_status = \''.$status.'\' LIMIT 1');
//
- Fondo de perfil y cabecera tipo facebook tutan-kabron
Ejecutar estas consultas
ALTER TABLE `u_perfil` ADD `p_fondo` VARCHAR( 120 ) NOT NULL;
ALTER TABLE `u_perfil` ADD `p_fondoper` VARCHAR( 120 ) NOT NULL
En c.cuenta.php --> inc --> class --> c.cuenta.php
Buscar:
'sitio' => $tsCore->setSecure($tsCore->parseBadWords($sitio), true),
Debajo agregar:
'fondo' => $tsCore->setSecure($_POST['fondo']),
'fondoper' => $tsCore->setSecure($_POST['fondoper']),
Buscar:
/*
loadHeadInfo($user_id)
*/
function loadHeadInfo($user_id){
global $tsUser, $tsCore;
// INFORMACION GENERAL
$query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT u.user_id, u.user_name, u.user_registro, u.user_lastactive, u.user_activo, u.user_baneado, p.user_sexo, p.user_pais, p.p_nombre, p.p_avatar, p.p_mensaje, p.p_socials, p.p_empresa, p.p_configs FROM u_miembros AS u, u_perfil AS p WHERE u.user_id = \''.(int)$user_id.'\' AND p.user_id = \''.(int)$user_id.'\'');
$data = db_exec('fetch_assoc', $query);
Reemplazar por:
/*
loadHeadInfo($user_id)
*/
function loadHeadInfo($user_id){
global $tsUser, $tsCore;
// INFORMACION GENERAL
$query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT u.user_id, u.user_name, u.user_registro, u.user_lastactive, u.user_activo, u.user_baneado, p.user_sexo, p.p_fondo, p.user_pais, p.p_nombre, p.p_avatar, p.p_mensaje, p.p_socials, p.p_fondoper, p.p_empresa, p.p_configs FROM u_miembros AS u, u_perfil AS p WHERE u.user_id = \''.(int)$user_id.'\' AND p.user_id = \''.(int)$user_id.'\'');
$data = db_exec('fetch_assoc', $query);
- Imagen de portada en post relacionados airkpo
En c.posts.php --> inc --> class --> c.posts.php
Buscar:
/*
getRelated()
*/
function getRelated($tags){
global $tsCore, $tsUser;
// ES UN ARRAT AHORA A UNA CADENA
if(is_array($tags)) $tags = implode(", ",$tags);
else str_replace('-',', ',$tags);
//
$query = db_exec(array(__FILE__, __LINE__), 'query', "SELECT DISTINCT p.post_id, p.post_title, p.post_category, p.post_private, c.c_seo, c.c_img FROM p_posts AS p LEFT JOIN p_categorias AS c ON c.cid = p.post_category WHERE MATCH (post_tags) AGAINST ('$tags' IN BOOLEAN MODE) AND p.post_status = 0 AND post_sticky = 0 ORDER BY rand() LIMIT 0,10");
//
$data = result_array($query);
//
return $data;
}
Reemplazar por:
/*
getRelated()
*/
function getRelated($tags){
global $tsCore, $tsUser;
// ES UN ARRAT AHORA A UNA CADENA
if(is_array($tags)) $tags = implode(", ",$tags);
else str_replace('-',', ',$tags);
//
$query = db_exec(array(__FILE__, __LINE__), 'query', "SELECT DISTINCT p.post_id, p.post_title, p.post_portada, p.post_category, p.post_private, c.c_seo, c.c_img FROM p_posts AS p LEFT JOIN p_categorias AS c ON c.cid = p.post_category WHERE MATCH (post_tags) AGAINST ('$tags' IN BOOLEAN MODE) AND p.post_status = 0 AND post_sticky = 0 ORDER BY rand() LIMIT 0,10");
//
$data = result_array($query);
//
return $data;
}
Subir esta carpeta y en la administración istalar con el nombre cralke
Descargar archivos
Mega
http://Registrate o inicia tu sesión par... contenido
Googe Drive
http://Registrate o inicia tu sesión par... contenido
Mediafire
http://Registrate o inicia tu sesión par... contenido
- Archivos c.borradores.php, c.cuenta.php y c.posts.php 1.3 editados.
Descargar archivos
Mega
http://Registrate o inicia tu sesión par... contenido
Googe Drive
http://Registrate o inicia tu sesión par... contenido
Mediafire
http://Registrate o inicia tu sesión par... contenido
Creditos: MegaErick
Ahora que estoy viendo un poco más el script Act 1.3 note que tardaba en cargar.
Al mirar en el navegador, me percate que estaba tratando de resolver el host: Registrate o inicia tu sesión para ver este contenido
Hay algunas imágenes que se cargan desde este sitio que ya no está en funcionamiento. Esto provoca que la carga se ralentice al tratar el navegador de resolver dicho host para cargar esas imágenes.
Una de esas la encontré en: themes --> default --> templates --> sections --> main_header.tpl
<a id="logoi" title="{$tsConfig.titulo}" href="{$tsConfig.url}">
<img border="0" align="top" title="{$tsConfig.titulo}" alt="{$tsConfig.titulo}" src="Registrate o inicia tu sesión para ver este contenido">
Y otra en: themes --> default --> templates --> sections --> head_menu.tpl
<div id="login_box" style="display: none;">
<div class="login_header">
<img title="Cerrar mensaje" onclick="close_login_box();" class="login_cerrar" src="Registrate o inicia tu sesión para ver este contenido" style="left:220px">
</div>
Al cambiarles la ruta hacia imágenes propias (que ya incluye el script) no solo ya se pueden visualizar si no que también el sitio carga a su velocidad normal ![]()
Otra cosa por la que quise publicar esto era para saber ¿si los cambios afectan a otra parte o fue correcto el cambio?
En .htaccess
Buscar:
# POSTS
Arriba agregar:
# COMUNIDADES
RewriteRule ^comunidades/pagina.([0-9]+)$ inc/php/comunidades.php?action=home&page=$1 [QSA,L]
RewriteRule ^comunidades/([A-Za-z0-9_-]+)/agregar/([0-9]+)$ inc/php/comunidades.php?action=$1&act=agregar&bid=$2 [QSA,L]
RewriteRule ^comunidades/([A-Za-z0-9_-]+)/editar-tema/([0-9]+)/$ inc/php/comunidades.php?action=$1&act=editar-tema&temaid=$2 [QSA,L]
RewriteRule ^comunidades/([A-Za-z0-9_-]+)/miembros.([0-9]+)/$ inc/php/comunidades.php?action=$1&act=miembros&page=$2 [QSA,L]
RewriteRule ^comunidades/mis-comunidades/([A-Za-z0-9_-]+)$ inc/php/comunidades.php?action=mis-comunidades&orden=$1 [QSA,L]
RewriteRule ^comunidades/([A-Za-z0-9_-]+)/pagina.([0-9]+)$ inc/php/comunidades.php?action=$1&page=$2 [QSA,L]
RewriteRule ^comunidades/dir/([A-Za-z0-9_-]+)/$ inc/php/comunidades.php?action=dir&pais=$1 [QSA,L]
RewriteRule ^comunidades/dir/([A-Za-z0-9_-]+)/([A-Za-z0-9_-]+)$ inc/php/comunidades.php?action=dir&pais=$1&c_seo=$2 [QSA,L]
RewriteRule ^comunidades/dir/([A-Za-z0-9_-]+)/([A-Za-z0-9_-]+)/([A-Za-z0-9_-]+)$ inc/php/comunidades.php?action=dir&pais=$1&c_seo=$2&s_seo=$3 [QSA,L]
RewriteRule ^comunidades/dir/([A-Za-z0-9_-]+)/([A-Za-z0-9_-]+)/([A-Za-z0-9_-]+)/([0-9]+)$ inc/php/comunidades.php?action=dir&pais=$1&c_seo=$2&s_seo=$3&page=$4 [QSA,L]
RewriteRule ^comunidades/([A-Za-z0-9_-]+)/([A-Za-z0-9_-]+)/$ inc/php/comunidades.php?action=$1&act=$2 [QSA,L]
RewriteRule ^comunidades/([A-Za-z0-9_-]+)/([A-Za-z0-9_-]+)/pagina.([0-9]+)$ inc/php/comunidades.php?action=$1&act=$2&page=$3 [QSA,L]
RewriteRule ^comunidades/([A-Za-z0-9_-]+)/([0-9]+)/([A-Za-z0-9_-]+).html$ inc/php/comunidades.php?action=$1&temaid=$2&act=tema [QSA,L]
En c.actividad.php --> inc --> class --> c.actividad.php
Buscar:
11 => array(
'text' => 'Le gusta',
'css' => 'w_like',
0 => array('text' => 'su', 'link' => 'publicación'),
1 => array('text' => 'su comentario'),
2 => array('text' => 'la publicación de'),
3 => array('text' => 'el comentario'),
)
Agregar al lado con la coma (,):
,
// COMUNIDADES
12 => array('text' => 'Creó la comunidad', 'css' => 'post'),
13 => array('text' => 'Creó un nuevo tema', 'css' => 'post'),
14 => array('text' => 'Agregó a favoritos el tema', 'css' => 'star'),
15 => array('text' => 'Recomendó el tema', 'css' => 'share'),
16 => array('text' => array('Comentó', 'el tema'), 'css' => 'blue_ball'),
17 => array('text' => array('Votó', 'el tema'), 'css' => 'voto_'),
18 => array('text' => array('Votó', 'un comentario en el tema'), 'css' => 'voto_'),
19 => array('text' => 'Está siguiendo el tema', 'css' => 'follow_post'),
20 => array('text' => 'Está siguiendo la comunidad', 'css' => 'follow_post'),
21 => array('text' => 'Se unió a la comunidad', 'css' => 'follow_post'),
Buscar:
case 11:
if($data['obj_dos'] == 0 || $data['obj_dos'] == 2) {
return 'SELECT p.pub_id, u.user_name FROM u_muro AS p LEFT JOIN u_miembros AS u ON p.p_user = u.user_id WHERE p.pub_id = \''.(int)$data['obj_uno'].'\' LIMIT 1';
} else {
return 'SELECT c.pub_id, c.c_body, u.user_name FROM u_muro_comentarios AS c LEFT JOIN u_muro AS p ON c.pub_id = p.pub_id LEFT JOIN u_miembros AS u ON p.p_user = u.user_id WHERE cid = \''.(int)$data['obj_uno'].'\' LIMIT 1';
}
break;
Debajo agregar:
// COMUNIDADES
case 12:
return 'SELECT c.c_nombre, c.c_nombre_corto FROM c_comunidades AS c WHERE c.c_id = \''.(int)$data['obj_uno'].'\' LIMIT 1';
break;
case 13:
case 14:
case 15:
case 16:
case 17:
case 18:
case 19:
case 20:
case 21:
return 'SELECT c.c_nombre, c.c_nombre_corto, t.t_id, t.t_titulo, t.t_autor, u.user_name FROM c_temas AS t LEFT JOIN c_comunidades AS c ON c.c_id = t.t_comunidad LEFT JOIN u_miembros AS u ON user_id = t_autor WHERE t.t_id = \''.(int)$data['obj_uno'].'\' LIMIT 1';
break;
Buscar:
# LIKES
case 11:
// SEC TYPE
$sec_type = $data['obj_dos'];
$link_text = $this->actividad[$ac_type][$sec_type]['link'];
//
$oracion['text'] = $this->actividad[$ac_type]['text'].' '.$this->actividad[$ac_type][$sec_type]['text'];
$oracion['link'] = $site_url.'/perfil/'.$data['user_name'].'?pid='.$data['pub_id'];
//
if($data['obj_dos'] == 0 || $data['obj_dos'] == 2)
$oracion['ltext'] = empty($link_text) ? $data['user_name'] : $link_text;
else {
$end_text = (strlen($data['c_body']) > 35) ? '...' : '';
$oracion['ltext'] = substr($data['c_body'],0,30).$end_text;
}
break;
Debajo agregar:
# COMUNIDADES
case 12:
case 13:
case 14:
case 15:
case 19:
case 20:
case 21:
$oracion['text'] = $this->actividad[$ac_type]['text'];
$oracion['link'] = ($ac_type == 12) ? $site_url.'/comunidades/'.$data['c_nombre_corto'].'/' : $site_url.'/comunidades/'.$data['c_nombre_corto'].'/'.$data['t_id'].'/'.$tsCore->setSEO($data['t_titulo']).'.html';
$oracion['ltext'] = ($ac_type == 12) ? $data['c_nombre'] : $data['t_titulo'];
$oracion['style'] = $this->actividad[$ac_type]['css'];
break;
case 16:
case 17:
case 18:
if($ac_type == 16) $extra_text = ($data['obj_dos'] == 0) ? '' : ($data['obj_dos']+1).' veces';
else $extra_text = ($data['obj_dos'] == 0) ? 'negativo' : 'positivo';
$oracion['text'] = $this->actividad[$ac_type]['text'][0]." <b>{$extra_text}</b> ".$this->actividad[$ac_type]['text'][1];
$oracion['link'] = $site_url.'/comunidades/'.$data['c_nombre_corto'].'/'.$data['t_id'].'/'.$tsCore->setSEO($data['t_titulo']).'.html';
$oracion['ltext'] = $data['t_titulo'];
$oracion['style'] = ($ac_type == 16) ? $oracion['style'] : 'voto_'.$extra_text;
break;
En c.admin.php --> inc --> class --> c.admin.php
Buscar:
/****************** ADMINISTRACIÓN DE FOTOS ******************/
Arriba agregar:
/****************** ADMINISTRACIÓN DE COMUNIDADES ******************/
function GetAdminComus()
{
global $tsCore;
//
$max = 20; // MAXIMO A MOSTRAR
$limit = $tsCore->setPageLimit($max, true);
//
$query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT u.user_name, c.* FROM c_comunidades AS c LEFT JOIN u_miembros AS u ON c.c_autor = u.user_id ORDER BY c.c_fecha DESC LIMIT '.$limit);
//
$data['data'] = result_array($query);
// PAGINAS
$query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT COUNT(*) FROM c_comunidades WHERE c_id > \'0\'');
list($total) = db_exec('fetch_row', $query);
$data['pages'] = $tsCore->pageIndex($tsCore->settings['url']."/admin/comunidades?", $_GET['s'], $total, $max);
//
return $data;
}
// ADMINISTRAR TEMAS POR COMUNIDAD
function GetAdminTemas()
{
global $tsCore;
//
$comid = $tsCore->setSecure($_GET['comid']);
$max = 20; // MAXIMO A MOSTRAR
$limit = $tsCore->setPageLimit($max, true);
//
$query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT u.user_name, c.c_nombre_corto, t.* FROM c_temas AS t LEFT JOIN c_comunidades AS c ON c.c_id = t.t_comunidad LEFT JOIN u_miembros AS u ON t.t_autor = u.user_id WHERE t.t_comunidad = \''.(int)$comid.'\'ORDER BY t.t_fecha DESC LIMIT '.$limit);
//
$data['data'] = result_array($query);
// NOMBRE DE LA COMUNIDAD
$com = db_exec('fetch_assoc', db_exec(array(__FILE__, __LINE__), 'query', 'SELECT c_nombre FROM c_comunidades WHERE c_id = \''.(int)$comid.'\' LIMIT 1'));
$data['c_nombre'] = $com['c_nombre'];
// PAGINAS
$query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT COUNT(*) FROM c_temas WHERE t_comunidad = \''.(int)$comid.'\'');
list($total) = db_exec('fetch_row', $query);
$data['pages'] = $tsCore->pageIndex($tsCore->settings['url']."/admin/comunidades?act=temas&comid=".$_GET['comid'], $_GET['s'], $total, $max);
//
return $data;
}
Buscar:
(SELECT count(cid) FROM u_muro_comentarios) AS muro_comentarios
Reemplazar por:
(SELECT count(cid) FROM u_muro_comentarios) AS muro_comentarios,
(SELECT count(c_id) FROM c_comunidades WHERE c_estado = \'0\') AS comunidades_visibles,
(SELECT count(c_id) FROM c_comunidades WHERE c_estado = \'1\') AS comunidades_ocultas,
(SELECT count(t_id) FROM c_temas WHERE t_estado = \'0\') AS temas_visibles,
(SELECT count(t_id) FROM c_temas WHERE t_estado = \'1\') AS temas_ocultos,
(SELECT count(fav_id) FROM c_favoritos) AS temas_favoritos,
(SELECT count(m_id) FROM c_miembros WHERE m_permisos != \'0\') AS miembros_comunidades,
(SELECT count(m_id) FROM c_miembros WHERE m_permisos = \'0\') AS miembros_comunidades_baneados,
(SELECT count(r_id) FROM c_respuestas WHERE r_estado = \'0\') AS respuestas_visibles,
(SELECT count(r_id) FROM c_respuestas WHERE r_estado = \'1\') AS respuestas_ocultas,
(SELECT count(follow_id) FROM u_follows WHERE f_type = \'4\' ) AS comunidades_follows,
(SELECT count(follow_id) FROM u_follows WHERE f_type = \'5\' ) AS temas_follows,
(SELECT count(follow_id) FROM u_follows WHERE f_type = \'6\' ) AS temas_compartidos
En c.core.php --> inc --> class --> c.core.php
Buscar:
function getNovemods()
{
$datos = db_exec('fetch_assoc', db_exec(array(__FILE__, __LINE__), 'query', 'SELECT (SELECT count(post_id) FROM p_posts WHERE post_status = \'3\') as revposts, (SELECT count(cid) FROM p_comentarios WHERE c_status = \'1\' ) as revcomentarios, (SELECT count(DISTINCT obj_id) FROM w_denuncias WHERE d_type = \'1\') as repposts, (SELECT count(DISTINCT obj_id) FROM w_denuncias WHERE d_type = \'2\') as repmps, (SELECT count(DISTINCT obj_id) FROM w_denuncias WHERE d_type = \'3\') as repusers, (SELECT count(DISTINCT obj_id) FROM w_denuncias WHERE d_type = \'4\') as repfotos, (SELECT count(susp_id) FROM u_suspension) as suspusers, (SELECT count(post_id) FROM p_posts WHERE post_status = \'2\') as pospelera, (SELECT count(foto_id) FROM f_fotos WHERE f_status = \'2\') as fospelera'));
$datos['total'] = $datos['repposts'] + $datos['repfotos'] + $datos['repmps'] + $datos['repusers'] + $datos['revposts'] + $datos['revcomentarios'];
return $datos;
}
Reemplazar por:
function getNovemods()
{
$datos = db_exec('fetch_assoc', db_exec(array(__FILE__, __LINE__), 'query', 'SELECT (SELECT count(post_id) FROM p_posts WHERE post_status = \'3\') as revposts, (SELECT count(cid) FROM p_comentarios WHERE c_status = \'1\' ) as revcomentarios, (SELECT count(DISTINCT obj_id) FROM w_denuncias WHERE d_type = \'1\') as repposts, (SELECT count(DISTINCT obj_id) FROM w_denuncias WHERE d_type = \'5\') as repcomunidades, (SELECT count(DISTINCT obj_id) FROM w_denuncias WHERE d_type = \'6\') as reptemas, (SELECT count(t_id) FROM c_temas WHERE t_estado = \'1\') as tempelera, (SELECT count(DISTINCT obj_id) FROM w_denuncias WHERE d_type = \'7\') as represpuestas, (SELECT count(DISTINCT obj_id) FROM w_denuncias WHERE d_type = \'2\') as repmps, (SELECT count(DISTINCT obj_id) FROM w_denuncias WHERE d_type = \'3\') as repusers, (SELECT count(DISTINCT obj_id) FROM w_denuncias WHERE d_type = \'4\') as repfotos, (SELECT count(susp_id) FROM u_suspension) as suspusers, (SELECT count(post_id) FROM p_posts WHERE post_status = \'2\') as pospelera, (SELECT count(foto_id) FROM f_fotos WHERE f_status = \'2\') as fospelera'));
$datos['total'] = $datos['repposts'] + $datos['repcomunidades'] + $datos['reptemas'] + $datos['represpuestas'] + $datos['repfotos'] + $datos['repmps'] + $datos['repusers'] + $datos['revposts'] + $datos['revcomentarios'];
return $datos;
}
En c.cuenta.php --> inc --> class --> c.cuenta.php
Buscar:
$data['sigd']['total'] = count($data['sigd']['data']);
Debajo agregar:
// COMUNIDADES
$query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT c.c_id, c.c_nombre, c.c_nombre_corto, c.c_miembros FROM c_comunidades AS c LEFT JOIN c_miembros AS m ON m.m_comunidad = c.c_id WHERE m.m_user = \''.(int)$user_id.'\' AND c.c_estado = \'0\' ORDER BY m.m_fecha DESC LIMIT 5');
$total = db_exec('fetch_row', db_exec(array(__FILE__, __LINE__), 'query', 'SELECT COUNT(c.c_id) AS total FROM c_comunidades AS c LEFT JOIN c_miembros AS m ON m.m_comunidad = c.c_id WHERE m.m_user = \''.(int)$user_id.'\' AND c.c_estado = \'0\''));
$data['comus'] = result_array($query);
$data['comus_total'] = $total[0];
Buscar:
/*
loadMedallas($user_id)
*/
Arriba agregar:
/*
loadComunidades($user_id)
*/
function loadComunidades($user_id){
//
$query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT c.c_id, c.c_nombre, c.c_descripcion, c.c_nombre_corto, cat.c_nombre AS categoria FROM c_miembros AS m LEFT JOIN c_comunidades AS c ON c.c_id = m.m_comunidad LEFT JOIN c_categorias AS cat ON cat.cid = c.c_categoria WHERE m.m_user = \''.(int)$user_id.'\' AND c.c_estado = \'0\' ORDER BY m.m_fecha DESC');
$data['data'] = result_array($query);
$data['total'] = count($data['data']);
//
return $data;
}
En c.moderacion.php --> inc --> class --> c.moderacion.php
Buscar:
case 'users':
Arriba agregar:
case 'comunidades':
$query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT r.*, SUM(d_total) AS total, c.c_id, c.c_nombre, c.c_nombre_corto, c.c_estado, u.user_id, u.user_name FROM w_denuncias AS r LEFT JOIN c_comunidades AS c ON r.obj_id = c.c_id LEFT JOIN u_miembros AS u ON c.c_autor = u.user_id WHERE d_type = \'5\' && c.c_estado < 2 GROUP BY r.obj_id ORDER BY total DESC, r.d_date DESC');
$data = result_array($query);
break;
case 'temas':
$query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT r.*, SUM(d_total) AS total, t.t_id, t.t_titulo, t.t_estado, c.c_nombre_corto, u.user_id, u.user_name FROM w_denuncias AS r LEFT JOIN c_temas AS t ON r.obj_id = t.t_id LEFT JOIN c_comunidades AS c ON c.c_id = t.t_comunidad LEFT JOIN u_miembros AS u ON t.t_autor = u.user_id WHERE d_type = \'6\' && t.t_estado < 2 GROUP BY r.obj_id ORDER BY total DESC, r.d_date DESC');
$data = result_array($query);
break;
Buscar:
case 'users':
Agregar arriba:
case 'comunidades':
$d_type = 5;
$query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT c.c_id, c.c_nombre, c.c_nombre_corto, c.c_estado, u.user_name FROM c_comunidades AS c LEFT JOIN u_miembros AS u ON c.c_autor = u.user_id WHERE c.c_id = ' .
$obj . ' LIMIT 1');
break;
case 'temas':
$d_type = 6;
$query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT t.t_id, t.t_titulo, t.t_estado, u.user_name FROM c_temas AS t LEFT JOIN u_miembros AS u ON t.t_autor = u.user_id WHERE t.t_id = ' .
$obj . ' LIMIT 1');
break;
Buscar:
$data['p_total'] = count($data['posts']);
Debajo agregar:
//
$query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT c.c_id, c.c_autor, c.c_nombre, c.c_nombre_corto, c.c_fecha, c.c_ip, u.user_name FROM c_comunidades AS c LEFT JOIN u_miembros AS u ON c.c_autor = u.user_id WHERE ' .
($tipo == 1 ? 'c.c_ip ' . $met . '' : 'c.c_nombre ' . $met));
$data['comunidades'] = result_array($query);
$data['c_total'] = count($data['comunidades']);
//
$query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT t.t_id, t.t_autor, t.t_titulo, c.c_nombre_corto, t.t_fecha, t.t_ip, u.user_name FROM c_temas AS t LEFT JOIN c_comunidades AS c ON c.c_id = t.t_comunidad LEFT JOIN u_miembros AS u ON t.t_autor = u.user_id WHERE ' .
($tipo == 1 ? 't.t_ip ' . $met . '' : 't.t_titulo ' . $met .
' OR t.t_cuerpo ' . $met));
$data['temas'] = result_array($query);
$data['t_total'] = count($data['temas']);
//
$query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT r.r_id, r.r_autor, r.r_body, r.r_fecha, r.r_ip, t.t_id, t.t_titulo, c.c_nombre_corto, u.user_name FROM c_respuestas AS r LEFT JOIN c_temas AS t ON t.t_id = r.r_tema LEFT JOIN c_comunidades AS c ON c.c_id = t.t_comunidad LEFT JOIN u_miembros AS u ON r.r_autor = u.user_id WHERE ' .
($tipo == 1 ? 'r.r_ip ' . $met . '' : 'r.r_body ' . $met));
$data['respuestas'] = result_array($query);
$data['c_t_total'] = count($data['respuestas']);
Buscar:
/**
* @name deletePost($pid)
* @access public
* @param int
* @return string
*/
Arriba agregar:
function rebootComunidad($comid) {
global $tsUser;
if ($tsUser->is_admod) {
if (db_exec(array(__FILE__, __LINE__), 'query', 'DELETE FROM `w_denuncias` WHERE `obj_id` = \''.(int)$comid.'\' AND `d_type` = \'5\'')) {
db_exec(array(__FILE__, __LINE__), 'query', 'UPDATE c_comunidades SET c_estado = \'0\' WHERE c_id = \''.(int)$comid.'\'');
return '1: Denuncia eliminada';
} else return '0: No se pudo eliminar la denuncia';
} else return '0: No continúe por aquí.';
}
function rebootTema($temaid) {
global $tsUser;
if ($tsUser->is_admod) {
if (db_exec(array(__FILE__, __LINE__), 'query', 'DELETE FROM `w_denuncias` WHERE `obj_id` = \''.(int)$temaid.'\' AND `d_type` = \'6\'')) {
db_exec(array(__FILE__, __LINE__), 'query', 'UPDATE c_temas SET t_estado = \'0\' WHERE t_id = \''.(int)$temaid.'\'');
return '1: Denuncia eliminada';
} else return '0: No se pudo eliminar la denuncia';
} else return '0: No continúe por aquí.';
}
public function deleteComunidad($comid){
global $tsCore, $tsMonitor, $tsUser;
if ($tsUser->is_admod == 1) {
// RAZON
$razon = $tsCore->setSecure($_POST['razon']);
$razon_desc = $tsCore->setSecure($_POST['razon_desc']);
$razon_db = ($razon != 7) ? $razon : $razon_desc;
//
if (db_exec(array(__FILE__, __LINE__), 'query', 'UPDATE c_comunidades SET c_estado = \'1\' WHERE c_id = \''.$comid.'\'')) {
// ENVIAR AVISO
$query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT c.c_autor, c.c_nombre, u.user_name FROM c_comunidades AS c LEFT JOIN u_miembros AS u ON c.c_autor = u.user_id WHERE c.c_id = \''.(int)$comid .'\' LIMIT 1');
$data = db_exec('fetch_assoc', $query);
if ($data['c_autor'] != $tsUser->uid){
// RAZON
if (is_numeric($razon_db)){
include (TS_EXTRA . 'datos.php');
$razon_db = $tsDenuncias['comunidades'][$razon_db];
}
// AVISO
$aviso = 'Hola <b>' . $data['user_name'] . "</b>\n\n Lamento contarte que tu comunidad titulada <b>" .
$data['c_nombre'] . "</b> ha sido eliminada.\n\n Causa: <b>" . $razon_db . "</b>\n\n Te recomendamos leer el <a href=\"" .
$tsCore->settings['url'] . "/pages/protocolo/\">Protocolo</a> para evitar futuras sanciones.\n\n Muchas gracias por entender!";
$status = $tsMonitor->setAviso($data['c_autor'], 'Comunidad eliminada', $aviso, 1);
}
// ELIMINAR DENUNCIAS
db_exec(array(__FILE__, __LINE__), 'query', 'DELETE FROM `w_denuncias` WHERE `obj_id` = \''.$comid.'\' AND `d_type` = \'5\'');
$this->setHistory('borrar', 'comunidad', $comid);
return '1: La comunidad ha sido eliminada.';
} else return '0: La comunidad NO pudo ser eliminada.';
} else return '0: Solo los administradores pueden borrar una comunidad';
}
public function deleteTema($temaid) {
global $tsCore, $tsMonitor, $tsUser;
if ($tsUser->is_admod) {
// RAZON
$razon = $tsCore->setSecure($_POST['razon']);
$razon_desc = $tsCore->setSecure($_POST['razon_desc']);
$razon_db = ($razon != 9) ? $razon : $razon_desc;
//
if (db_exec(array(__FILE__, __LINE__), 'query', 'UPDATE c_temas SET t_estado = \'1\' WHERE t_id = \''.$temaid.'\'')) {
// ENVIAR AVISO
$query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT t.t_autor, t.t_titulo, u.user_name FROM c_temas AS t LEFT JOIN u_miembros AS u ON t.t_autor = u.user_id WHERE t.t_id = \''.(int)$temaid.'\' LIMIT 1');
$data = db_exec('fetch_assoc', $query);
if ($data['t_autor'] != $tsUser->uid) {
// RAZON
if (is_numeric($razon_db)) {
include (TS_EXTRA . 'datos.php');
$razon_db = $tsDenuncias['temas'][$razon_db];
}
// AVISO
$aviso = 'Hola <b>' . $data['user_name'] . "</b>\n\n Lamento contarte que tu tema titulado <b>" .
$data['t_titulo'] . "</b> ha sido eliminado.\n\n Causa: <b>" . $razon_db . "</b>\n\n Te recomendamos leer el <a href=\"" .
$tsCore->settings['url'] . "/pages/protocolo/\">Protocolo</a> para evitar futuras sanciones.\n\n Muchas gracias por entender!";
$status = $tsMonitor->setAviso($data['t_autor'], 'Tema eliminado', $aviso, 1);
}
// ELIMINAR DENUNCIAS
db_exec(array(__FILE__, __LINE__), 'query', 'DELETE FROM `w_denuncias` WHERE `obj_id` = \''.$temaid.'\' AND `d_type` = \'6\'');
return '1: El tema ha sido eliminado.';
} else return '0: El tema NO pudo ser eliminado.';
} else return '0: No continúe por aquí.';
}
public function getTempelera() {
global $tsUser, $tsCore;
//
$max = 20; // MAXIMO A MOSTRAR
$limit = $tsCore->setPageLimit($max, true);
// PAGINAS
$query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT COUNT(*) FROM c_temas AS t LEFT JOIN u_miembros AS u ON u.user_id = t.t_autor LEFT JOIN c_historial AS h ON h.h_for = t.t_id WHERE h.h_type = \'2\' AND t.t_estado = \'1\'');
list($total) = db_exec('fetch_row', $query);
$data['pages'] = $tsCore->pageIndex($tsCore->settings['url'] .
"/moderacion/tempelera?", $_GET['s'], $total, $max);
//
$query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT h.*, t.t_id, t.t_autor, t.t_titulo, c.c_nombre_corto, t.t_fecha, t.t_ip, u.user_name FROM c_temas AS t LEFT JOIN c_comunidades AS c ON c.c_id = t.t_comunidad LEFT JOIN u_miembros AS u ON t.t_autor = u.user_id LEFT JOIN c_historial AS h ON h.h_for = t.t_id WHERE h.h_type = \'2\' AND t.t_estado = \'1\' LIMIT ' .
$limit);
//
while ($row = db_exec('fetch_assoc', $query))
{
$row['mod_name'] = $tsUser->getUserName($row['h_mod']);
//
$data['datos'][] = $row;
}
//
return $data;
}
En c.monitor.php --> inc --> class --> c.monitor.php
Buscar:
17 => array('text' => 'Tu foto recibió una medalla', 'css' => 'medal'),
Debajo agregar:
// COMUNIDADES
50 => array('text' => array('creó un nuevo'), 'ln_text' => 'tema', 'css' => 'post'),
51 => array('text' => array('comentó tu','_REP_ nuevos comentarios en tu'), 'ln_text' => 'tema', 'css' => 'comment_post'),
52 => array('text' => array('comentó en un', '_REP_ nuevos comentarios en el'), 'ln_text' => 'tema', 'extra' => ' que sigues', 'css' => 'blue_ball'),
53 => array('text' => array('respondió tu', '_REP_ nuevas respuestas a tu'), 'ln_text' => 'comentario', 'css' => 'comment_resp'),
54 => array('text' => array('agregó a favoritos tu','_REP_ nuevos favoritos a tu'), 'ln_text' => 'tema', 'css' => 'star'),
55 => array('text' => array('te recomienda un', '_REP_ usuarios te recomiendan un'), 'ln_text' => 'tema', 'css' => 'share'),
56 => array('text' => array('votó _REP_ tu', '_REP_ nuevos votos a tu'), 'ln_text' => 'tema', 'css' => 'voto_'),
57 => array('text' => array('votó _REP_ tu', '_REP_ nuevos votos a tu'), 'ln_text' => 'comentario', 'css' => 'voto_'),
58 => array('text' => array('está siguiendo tu','_REP_ nuevos seguidores a tu'), 'ln_text' => 'tema', 'css' => 'follow'),
Buscar:
case 17:
return 'SELECT f.foto_id, f.f_title, f.f_user, m.medal_id, m.m_title, m.m_image, a.medal_for, u.user_id, u.user_name FROM w_medallas_assign AS a LEFT JOIN f_fotos AS f ON f.foto_id = a.medal_for LEFT JOIN u_miembros AS u ON u.user_id = f.f_user LEFT JOIN w_medallas AS m ON m.medal_id = a.medal_id WHERE m.medal_id = \''.(int)$data['obj_uno'].'\' AND f.foto_id = \''.(int)$data['obj_dos'].'\' LIMIT 1';
break;
Debajo agregar:
case 50:
case 51:
case 52:
case 53:
case 54:
case 55:
case 56:
case 57:
case 58:
return 'SELECT c.c_nombre, c.c_nombre_corto, t.t_id, t.t_titulo, t.t_autor, u.user_name FROM c_temas AS t LEFT JOIN c_comunidades AS c ON c.c_id = t.t_comunidad LEFT JOIN u_miembros AS u ON user_id = t_autor WHERE t.t_id = \''.(int)$data['obj_uno'].'\' LIMIT 1';
break;
Buscar:
case 17:
$oracion['text'] = 'Tu <a href="'.$site_url.'/fotos/'.$data['user_name'].'/'.$data['foto_id'].'/'.$tsCore->setSEO($data['f_title']).'.html" title="'.$data['f_title'].'"><b>foto</b></a> tiene una nueva <span class="qtip" title="'.$data['m_title'].'"><b>medalla</b> <img src="'.$site_url.'/themes/default/images/icons/med/'.$data['m_image'].'_16.png"/></span>';
break;
Debajo agregar:
case 50:
case 51:
case 52:
case 53:
case 54:
case 55:
case 56:
case 57:
case 58:
// CUANTOS
$no_total = $data['not_total'];
$id_comment = '';
if($no_type == 52) $extra = $this->monitor[$no_type]['extra'];
// MAS DE UNA ACCION
if($no_total > 1) {
$text = $this->monitor[$no_type]['text'][1].$txt_extra;
$oracion['text'] = str_replace('_REP_', "<b>{$no_total}</b>", $text);
} else $oracion['text'] = ($this->show_type == 1 && $no_type == 52) ? $this->monitor[$no_type]['text'][0].$txt_extra : $this->monitor[$no_type]['text'][0].$txt_extra.$extra;
// ID COMMENT
if($no_type == 53 || $no_type == 57){
$id_comment = '#coment_id_'.$data['obj_tres'];
}
if($no_type == 56 || $no_type == 57){
$voto_type = ($data['obj_dos'] == 0) ? 'negativo' : 'positivo';
$oracion['text'] = str_replace('_REP_', '<b>'.$voto_type.'</b>', $oracion['text']);
$oracion['style'] = 'voto_'.$voto_type;
}
//
$oracion['link'] = $site_url.'/comunidades/'.$data['c_nombre_corto'].'/'.$data['t_id'].'/'.$tsCore->setSEO($data['t_titulo']).'.html'.$id_comment;
$oracion['ltext'] = ($this->show_type == 1) ? $ln_text : $data['t_titulo'];
$oracion['ltit'] = ($this->show_type == 1) ? $data['t_titulo'] : '';
break;
En c.swat.php --> inc --> class --> c.swat.php
Buscar:
// USUARIOS
case 'usuario':
Arriba agregar:
// COMUNIDADES
case 'comunidad':
// ¿ES MI COMUNIDAD O ESTÁ OCULTA?
$query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT c_id, c_autor, c_estado FROM c_comunidades WHERE c_id = \''.(int)$obj_id.'\' LIMIT 1') or exit( show_error('Error al ejecutar la consulta de la línea '.__LINE__.' de '.__FILE__.'.', 'db') );
$my_comu = db_exec('fetch_assoc', $query);
if(empty($my_comu['c_id'])) return '0: Esta comunidad no existe';
if($my_comu['c_autor'] == $tsUser->uid) return '0: No puedes denunciar tus propias comunidades.';
if($my_comu['c_estado'] == '1') return '0: No puedes denunciar comunidades ocultas.';
// YA HA REPORTADO?
$query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT `did` FROM `w_denuncias` WHERE `obj_id` = \''.(int)$obj_id.'\' AND `d_user` = '.$tsUser->uid.' AND `d_type` = \'5\'');
$denuncio = db_exec('num_rows', $query);
if(!empty($denuncio)) return '0: Ya habías denunciado esta comunidad.';
// INSERTAR NUEVA DENUNCIA
if(db_exec(array(__FILE__, __LINE__), 'query', 'INSERT INTO `w_denuncias` (`obj_id`, `d_user`, `d_razon`, `d_extra`, `d_type`, `d_date`) VALUES (\''.(int)$obj_id.'\', \''.$tsUser->uid.'\', \''.$razon.'\', \''.$extras.'\', \'5\', \''.$date.'\')')){
return '1: La denuncia fue enviada.';
} else return '0: Error, inténtalo más tarde.';
break;
// TEMAS
case 'tema':
// ¿ES MI TEMA O ESTÁ OCULTO?
$query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT t_id, t_autor, t_estado FROM c_temas WHERE t_id = \''.(int)$obj_id.'\' LIMIT 1') or exit( show_error('Error al ejecutar la consulta de la línea '.__LINE__.' de '.__FILE__.'.', 'db') );
$my_tema = db_exec('fetch_assoc', $query);
if(empty($my_tema['t_id'])) return '0: Este tema no existe';
if($my_tema['t_autor'] == $tsUser->uid) return '0: No puedes denunciar tus propios temas.';
if($my_tema['t_estado'] == '1') return '0: No puedes denunciar temas ocultos.';
// YA HA REPORTADO?
$query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT `did` FROM `w_denuncias` WHERE `obj_id` = \''.(int)$obj_id.'\' AND `d_user` = '.$tsUser->uid.' AND `d_type` = \'6\'');
$denuncio = db_exec('num_rows', $query);
if(!empty($denuncio)) return '0: Ya habías denunciado este tema.';
// CUANTAS DENUNCIAS LLEVA?
$denuncias = db_exec('num_rows', db_exec(array(__FILE__, __LINE__), 'query', 'SELECT `did` FROM `w_denuncias` WHERE `obj_id` = \''.(int)$obj_id.'\' AND `d_type` = \'6\''));
// OCULTAMOS EL COMENTARIO SI YA LLEVA MÁS DE 3 DENUNCIAS
if($denuncias >= 2){
db_exec(array(__FILE__, __LINE__), 'query', 'UPDATE c_temas SET t_estado = \'2\' WHERE t_id = \''.(int)$obj_id.'\'') or exit( show_error('Error al ejecutar la consulta de la línea '.__LINE__.' de '.__FILE__.'.', 'db') );
}
// INSERTAR NUEVA DENUNCIA
if(db_exec(array(__FILE__, __LINE__), 'query', 'INSERT INTO `w_denuncias` (`obj_id`, `d_user`, `d_razon`, `d_extra`, `d_type`, `d_date`) VALUES (\''.(int)$obj_id.'\', \''.$tsUser->uid.'\', \''.$razon.'\', \''.$extras.'\', \'6\', \''.$date.'\')')){
return '1: La denuncia fue enviada.';
} else return '0: Error, inténtalo más tarde.';
break;
En c.tops.php --> inc --> class --> c.tops.php
Buscar:
/*
getTopPosts()
*/
Arriba agregar:
/*
getTopComus()
*/
function getTopComus($fecha){
//
$data = $this->setTime($fecha);
// MIEMBROS
$query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT COUNT(m.m_id) AS total, c.c_id, c.c_nombre, c.c_nombre_corto FROM c_miembros AS m LEFT JOIN c_comunidades AS c ON m.m_comunidad = c.c_id WHERE m.m_permisos > \'0\' AND c.c_estado = \'0\' AND m.m_fecha ***** '.$data['start'].' AND '.$data['end'].' GROUP BY m.m_comunidad ORDER BY total DESC LIMIT 10');
$array['miembros'] = result_array($query);
// TEMAS
$query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT COUNT(t.t_id) AS total, c.c_id, c.c_nombre, c.c_nombre_corto FROM c_comunidades AS c LEFT JOIN c_temas AS t ON t.t_comunidad = c.c_id WHERE t.t_estado = \'0\' AND c.c_estado = \'0\' AND c.c_fecha ***** '.$data['start'].' AND '.$data['end'].' GROUP BY t.t_comunidad ORDER BY total DESC LIMIT 10');
$array['temas'] = result_array($query);
// SEGUIDORES
$query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT COUNT(f.follow_id) AS total, c.c_id, c.c_nombre, c.c_nombre_corto FROM u_follows AS f LEFT JOIN c_comunidades AS c ON f.f_id = c.c_id WHERE f.f_type = 4 AND f.f_date ***** '.$data['start'].' AND '.$data['end'].' GROUP BY f.f_id ORDER BY total DESC LIMIT 10');
$array['seguidores'] = result_array($query);
//
return $array;
}
/*
getTopTemas()
*/
function getTopTemas($fecha){
//
$data = $this->setTime($fecha);
// VOTOS
$query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT t.t_votos_pos AS total, t.t_id, t.t_titulo, c.c_id, c.c_nombre, c.c_nombre_corto FROM c_temas AS t LEFT JOIN c_comunidades AS c ON t.t_comunidad = c.c_id WHERE t.t_estado = \'0\' AND c.c_estado = \'0\' AND t.t_fecha ***** '.$data['start'].' AND '.$data['end'].' ORDER BY total DESC LIMIT 10');
$array['votos'] = result_array($query);
// RESPUESTAS
$query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT COUNT(r.r_id) AS total, t.t_id, t.t_titulo, c.c_id, c.c_nombre, c.c_nombre_corto FROM c_respuestas AS r LEFT JOIN c_temas AS t ON t.t_id = r.r_tema LEFT JOIN c_comunidades AS c ON c.c_id = t.t_comunidad WHERE t.t_estado = \'0\' AND c.c_estado = \'0\' AND r.r_estado = \'0\' AND c.c_fecha ***** '.$data['start'].' AND '.$data['end'].' GROUP BY r.r_tema ORDER BY total DESC LIMIT 10');
$array['respuestas'] = result_array($query);
// SEGUIDORES
$query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT COUNT(f.follow_id) AS total, t.t_id, t.t_titulo, c.c_id, c.c_nombre, c.c_nombre_corto FROM u_follows AS f LEFT JOIN c_temas AS t ON t.t_id = f.f_id LEFT JOIN c_comunidades AS c ON t.t_comunidad = c.c_id WHERE f.f_type = 6 AND f.f_date ***** '.$data['start'].' AND '.$data['end'].' GROUP BY f.f_id ORDER BY total DESC LIMIT 10');
$array['seguidores'] = result_array($query);
//
return $array;
}
En c.user.php --> inc --> class --> c.user.php
Buscar:
$this->is_banned = $this->info['user_baneado'];
Debajo agregar:
// ESTADO DE BAN EN COMUNIDADES
$this->com_banned();
Buscar:
/*
getUserID($tsUsername)
*/
Arriba agregar:
/*
com_banned()
*/
function com_banned(){
global $tsCore, $tsMonitor;
//
$query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT *, c_nombre, c_nombre_corto FROM c_baneados LEFT JOIN c_comunidades ON c_id = ban_comunidad WHERE ban_user = \''.$this->uid.'\' LIMIT 1');
$data = db_exec('fetch_assoc', $query);
//
$now = time();
//
if($data['ban_termina'] > 1 && $data['ban_termina'] < $now){
db_exec(array(__FILE__, __LINE__), 'query', 'UPDATE c_miembros SET m_permisos = \'3\' WHERE m_user = \''.$this->uid.'\' AND m_comunidad = \''.$data['ban_comunidad'].'\'');
db_exec(array(__FILE__, __LINE__), 'query', 'DELETE FROM c_baneados WHERE ban_id = \''.$data['ban_id'].'\'');
// MANDAR AVISO AL USUARIO
$tsMonitor =& tsMonitor::getInstance();
$aviso = 'El tiempo de suspension ha acabado, has sido reactivado de la comunidad <b><a href="'.$tsCore->settings['url'].'/comunidades/'.$data['c_nombre_corto'].'/"><b>'.
$data['c_nombre'].'</b></a> y puedes seguir disfrutando de ella.<br /><br />Disculpe las molestias.';
$tsMonitor->setAviso($this->uid, 'Usuario reactivado', $aviso, 2);
}
return true;
}
En datos.php --> inc --> ext --> datos.php
Buscar:
'fotos' => array(
Arriba agregar:
'comunidades' => array(
'',
'Se hace Spam',
'Es racista o irrespetuosa',
'Contiene información personal',
'Contiene pedofilia',
'Es gore o asquerosa',
'No cumple con el protocolo',
'Otra razón (especificar)'
),
'temas' => array(
'',
'Re-post',
'Se hace Spam',
'Es racista o irrespetuoso',
'Contiene información personal',
'El título esta en mayúscula',
'Contiene pedofilia',
'Es gore o asqueroso',
'No cumple con el protocolo',
'Otra razón (especificar)'
),
En admin.php --> inc --> php --> admin.php
Buscar:
//FOTOS
} elseif($action == 'fotos'){
Arriba agregar:
// COMUNIDADES
} elseif($action == 'comunidades'){
if(!$act) {
$smarty->assign("tsAdminComus",$tsAdmin->GetAdminComus());
} elseif($act == 'temas') {
$smarty->assign("tsAdminTemas",$tsAdmin->GetAdminTemas());
}
En moderacion.php --> inc --> php --> moderacion.php
Buscar:
elseif($action == 'fopelera'){
$smarty->assign("tsFopelera",$tsMod->getFopelera());
}
Debajo agregar:
elseif($action == 'tempelera'){
$smarty->assign("tsTempelera",$tsMod->getTempelera());
}
En top.php --> inc --> php --> top.php
Buscar:
case 'usuarios':
$smarty->assign("tsTops",$tsTops->getTopUsers($fecha, $cat));
break;
Debajo agregar:
case 'comunidades':
$smarty->assign("tsTops",$tsTops->getTopComus($fecha));
break;
case 'temas':
$smarty->assign("tsTops",$tsTops->getTopTemas($fecha));
break;
En ajax.denuncia.php --> inc --> php --> ajax --> ajax.denuncia.php
Buscar:
'denuncia-usuario' => array('n' => 2, 'p' => 'form'),
Debajo agregar:
'denuncia-comunidad' => array('n' => 2, 'p' => 'form'),
'denuncia-tema' => array('n' => 2, 'p' => 'form'),
Buscar:
}
// ACCION
$smarty->assign("tsAction",$action);
Arriba agregar:
case 'denuncia-comunidad':
// CREAR DENUNCIA
if($_POST['razon']){
$tsAjax = 1;
echo $tsSwat->setDenuncia($obj_id, 'comunidad');
// FORMULARIO DE DENUNCIA
} else {
// VARS
$tsData = array(
'obj_id' => $obj_id,
'obj_title' => $tsCore->setSecure($_POST['obj_title']),
'obj_user' => $tsCore->setSecure($_POST['obj_user']),
);
// DATOS
include("../ext/datos.php");
$smarty->assign("tsData",$tsData);
$smarty->assign("tsDenuncias",$tsDenuncias['comunidades']);
}
break;
case 'denuncia-tema':
// CREAR DENUNCIA
if($_POST['razon']){
$tsAjax = 1;
echo $tsSwat->setDenuncia($obj_id, 'tema');
// FORMULARIO DE DENUNCIA
} else {
// VARS
$tsData = array(
'obj_id' => $obj_id,
'obj_title' => $tsCore->setSecure($_POST['obj_title']),
'obj_user' => $tsCore->setSecure($_POST['obj_user']),
);
// DATOS
include("../ext/datos.php");
$smarty->assign("tsData",$tsData);
$smarty->assign("tsDenuncias",$tsDenuncias['temas']);
}
break;
En ajax.moderacion.php --> inc --> php --> ajax --> ajax.moderacion.php
Buscar:
'moderacion-users' => array('n' => 3, 'p' => 'main'),
Debajo agregar:
'moderacion-comunidades' => array('n' => 3, 'p' => 'comunidad'),
'moderacion-temas' => array('n' => 3, 'p' => 'tema'),
Buscar:
case 'moderacion-mps':
Arriba agregar:
case 'moderacion-comunidades':
//<--
$comid = (int)$_POST['comid'];
// ACCIONES SECUNDARIAS
switch($do){
case 'reboot':
$tsAjax = 1;
echo $tsMod->rebootComunidad($_POST['id']);
break;
case 'borrar':
if($_POST['razon']){
$tsAjax = 1;
echo $tsMod->deleteComunidad($comid);
}else {
include('../ext/datos.php');
$smarty->assign("tsDenuncias",$tsDenuncias['comunidades']);
}
break;
}
//-->
break;
case 'moderacion-temas':
//<--
switch($do){
case 'reboot':
$tsAjax = 1;
echo $tsMod->rebootTema($_POST['id']);
break;
case 'borrar':
if($_POST['razon']){
$tsAjax = 1;
echo $tsMod->deleteTema($_POST['temaid']);
}else {
include('../ext/datos.php');
$smarty->assign("tsDenuncias",$tsDenuncias['temas']);
}
break;
}
//-->
break;
En ajax.perfil.php --> inc --> php --> ajax --> ajax.perfil.php
Buscar:
'perfil-posts' => array('n' => 0, 'p' => 'posts'),
Debajo agregar:
'perfil-comunidades' => array('n' => 0, 'p' => 'comunidades'),
Buscar:
case 'perfil-seguidores':
Arriba agregar:
case 'perfil-comunidades':
//<---
$smarty->assign("tsComunidades",$tsCuenta->loadComunidades($user_id));
//--->
break;
En admin.css --> themes --> default --> css --> admin.css
Buscar:
li#a_users {background-image: url(../images/icons/users.png);}
Reemplazar por:
li#a_users, li#a_comunidades {background-image: url(../images/icons/users.png);}
li#a_temas {background-image: url(../images/icons/details.png);}
li#a_tempelera {background-image: url(../images/icons/posts.png);}
En t.admin.tpl --> themes --> default --> templates --> t.admin.tpl
Buscar:
{include file='admin_mods/m.admin_posts.tpl'}
Debajo agregar:
{elseif $tsAction == 'comunidades'}
{include file='admin_mods/m.admin_comunidades.tpl'}
En t.moderacion.tpl --> themes --> default --> templates --> t.moderacion.tpl
Buscar:
{include file='admin_mods/m.mod_report_posts.tpl}
Debajo agregar:
{elseif $tsAction == 'comunidades'}
{include file='admin_mods/m.mod_report_comunidades.tpl'}
{elseif $tsAction == 'temas'}
{include file='admin_mods/m.mod_report_temas.tpl'}
{elseif $tsAction == 'tempelera'}
{include file='admin_mods/m.mod_papelera_temas.tpl'}
En t.tops.php --> themes --> default --> templates --> t.tops.php
Buscar:
{include file='modules/m.top_users.tpl'}
Debajo agregar:
{elseif $tsAction == 'comunidades'}
{include file='modules/m.top_comunidades.tpl'}
{elseif $tsAction == 'temas'}
{include file='modules/m.top_temas.tpl'}
En m.admin_sidemenu.tpl --> themes --> default --> templates --> admin_mods --> m.admin_sidemenu.tpl
Buscar:
<li id="a_posts"><span class="cat-title"><a href="{$tsConfig.url}/admin/posts">Todos los Posts</a></span></li>
Debajo agregar:
<li id="a_users"><span class="cat-title"><a href="{$tsConfig.url}/admin/comunidades">Comunidades</a></span></li>
En m.mod_sidemenu.tpl --> themes --> default --> templates --> admin_mods --> m.mod_sidemenu.tpl
Buscar:
<li id="a_posts"><span class="cat-title"><a onclick="$('#a_posts').addClass('active');" href="{$tsConfig.url}/moderacion/posts">Post <span class="cadGe cadGe_{if $tsConfig.novemods.repposts > 15}red{elseif $tsConfig.novemods.repposts > 5}purple{else}green{/if}">{$tsConfig.novemods.repposts}</span></a></span></li>
Debajo agregar:
<li id="a_comunidades"><span class="cat-title"><a onclick="$('#a_comunidades').addClass('active');" href="{$tsConfig.url}/moderacion/comunidades">Comunidades <span class="cadGe cadGe_{if $tsConfig.novemods.repcomunidades > 15}red{elseif $tsConfig.novemods.repcomunidades > 5}purple{else}green{/if}">{$tsConfig.novemods.repcomunidades}</span></a></span></li>
<li id="a_temas"><span class="cat-title"><a onclick="$('#a_temas').addClass('active');" href="{$tsConfig.url}/moderacion/temas">Temas <span class="cadGe cadGe_{if $tsConfig.novemods.reptemas > 15}red{elseif $tsConfig.novemods.reptemas > 5}purple{else}green{/if}">{$tsConfig.novemods.reptemas}</span></a></span></li>
Buscar:
{if $tsUser->is_admod || $tsUser->permisos.morp}<li id="a_pospelera"><span class="cat-title"><a onclick="$('#a_pospelera').addClass('active');" href="{$tsConfig.url}/moderacion/pospelera">Post eliminados <span class="cadGe cadGe_{if $tsConfig.novemods.pospelera > 15}red{elseif $tsConfig.novemods.pospelera > 5}purple{else}green{/if}">{$tsConfig.novemods.pospelera}</span></a></span></li>{/if}
Debajo agregar:
{if $tsUser->is_admod}<li id="a_tempelera"><span class="cat-title"><a onclick="$('#a_tempelera').addClass('active');" href="{$tsConfig.url}/moderacion/tempelera">Temas eliminados <span class="cadGe cadGe_{if $tsConfig.novemods.tempelera > 15}red{elseif $tsConfig.novemods.tempelera > 5}purple{else}green{/if}">{$tsConfig.novemods.tempelera}</span></a></span></li>{/if}
En m.perfil_sidebar.tpl --> themes --> default --> templates --> modules --> m.perfil_sidebar.tpl
Buscar:
{if $tsInfo.can_hits}
Arriba agregar:
<div class="widget w-comunidades clearfix">
<div class="title-w clearfix">
<h3>Comunidades</h3>
<span>{$tsGeneral.comus_total}</span>
</div>
{if $tsGeneral.comus}
<ul class="clearfix">
{foreach from=$tsGeneral.comus item=c}
<li style="width: 100%;margin-bottom: 5px;">
<a href="{$tsConfig.url}/comunidades/{$c.c_nombre_corto}/" class="floatL" style="margin-right: 3px;"><img src="{$tsConfig.url}/files/uploads/c_{$c.c_id}.jpg" width="32" height="32"/></a>
<a href="{$tsConfig.url}/comunidades/{$c.c_nombre_corto}/" style="color:#006595;font-weight:bold;font-size:12px;">{$c.c_nombre}</a>
<span style="display: block;font-size: 11px;color: #999;">{$c.c_miembros} Miembros</span>
</li>
{/foreach}
</ul>
<a href="#comunidades" onclick="perfil.load_tab('comunidades', $('#comunidades'));" class="see-more">Ver todas »</a>
{else}
<div class="emptyData">No participa en ninguna comunidad</div>
{/if}
</div>
En m.top_sidebar.tpl --> themes --> default --> templates --> modules --> m.top_sidebar.tpl
Buscar:
Default
<div class="boxy-content">
V5 y V6
<div class="ccontenido">
Arriba agregar:
{if $tsAction == 'posts' || $tsAction == 'usuarios'}
Buscar:
Default
<ul>
V5 y V6
<div class="boxy">
Arriba agregar:
{/if}
En head_menu.tpl --> themes --> default --> templates --> sections --> head_menu.tpl
Buscar:
<li class="tabbed {if $tsPage == 'posts' || $tsPage == 'home'}here{/if}" id="{if $tsConfig.c_allow_portal && $tsUser->is_member}tabbedposts{else}tabbedhome{/if}">
<a title="Ir a Posts" onclick="menu('posts', this.href); return false;" href="{$tsConfig.url}/posts/">Posts <img alt="Drop Down" src="{$tsConfig.tema.t_url}/images/arrowdown.png"></a>
</li>
Debajo agregar:
<li class="tabbed {if $tsPage == 'comunidades'}here{/if}" id="tabbedcomunidades">
<a title="Ir a Comunidades" onclick="menu('comunidades', this.href); return false;" href="{$tsConfig.url}/comunidades/">Comunidades <img alt="Drop Down" src="{$tsConfig.tema.t_url}/images/arrowdown.png"></a>
</li>
En head_submenu.tpl --> themes --> default --> templates --> sections --> head_submenu.tpl
Buscar:
<div id="subMenuTops" class="subMenu {if $tsPage == 'tops'}here{/if}">
Arriba agregar:
<div id="subMenuComunidades" class="subMenu {if $tsPage == 'comunidades'}here{/if}">
<ul class="floatL tabsMenu">
<li{if $tsAction == '' || $tsAction == 'home' && $tsAction != 'mis-comunidades' && $tsAction != 'dir' && $tsAction != 'mod-history' && $tsAction != 'buscar' && $tsAction != 'favoritos' && $tsAction != 'borradores'} class="here"{/if}><a href="{$tsConfig.url}/comunidades/">Inicio</a></li>
{if $tsUser->is_member}<li {if $tsAction == 'mis-comunidades'}class="here"{/if}><a href="{$tsConfig.url}/comunidades/mis-comunidades/">Mis Comunidades</a></li>{/if}
<li{if $tsAction == 'dir'} class="here"{/if}><a href="{$tsConfig.url}/comunidades/dir/">Directorio</a></li>
<li{if $tsAction == 'buscar'} class="here"{/if}><a href="{$tsConfig.url}/comunidades/buscar/">Buscar</a></li>
{if $tsUser->is_member}
<li{if $tsAction == 'favoritos'} class="here"{/if}><a href="{$tsConfig.url}/comunidades/favoritos/">Favoritos</a></li>
<li{if $tsAction == 'borradores'} class="here"{/if}><a href="{$tsConfig.url}/comunidades/borradores/">Borradores</a></li>
{/if}
<li{if $tsAction == 'mod-history'} class="here"{/if}><a href="{$tsConfig.url}/comunidades/mod-history/">Historial</a></li>
</ul>
<div class="clearBoth"></div>
</div>
Buscar:
<li{if $tsAction == 'usuarios'} class="here"{/if}><a href="{$tsConfig.url}/top/usuarios/">Usuarios</a></li>
Debajo agregar:
<li{if $tsAction == 'comunidades'} class="here"{/if}><a href="{$tsConfig.url}/top/comunidades/">Comunidades</a></li>
<li{if $tsAction == 'temas'} class="here"{/if}><a href="{$tsConfig.url}/top/temas/">Temas</a></li>
En p.denuncia.form.tpl --> themes --> default --> templates --> t.php_files --> p.denuncia.form.tpl
Buscar:
{elseif $tsAction == 'denuncia-mensaje'}
Arriba agregar:
{elseif $tsAction == 'denuncia-comunidad'}
<div align="center" style="padding:10px 10px 0">
<b>Denunciar comunidad:</b><br />
{$tsData.obj_title}<br /><br />
<b>Razón de la denuncia:</b><br />
<select name="razon">
{foreach from=$tsDenuncias key=i item=denuncia}
{if $denuncia}<option value="{$i}">{$denuncia}</option>{/if}
{/foreach}
</select><br />
<b>Aclaración y comentarios:</b><br />
<textarea tabindex="6" rows="5" cols="40" name="extras"></textarea><br />
<span class="size9">Para atender tu caso rápidamente, adjunta pruevas de tu denuncia.<br /> (capturas de pantalla)</span>
</div>
{elseif $tsAction == 'denuncia-tema'}
<div align="center" style="padding:10px 10px 0">
<b>Denunciar tema:</b><br />
{$tsData.obj_title}<br /><br />
<b>Autor:</b><br />
{$tsData.obj_user}<br /><br />
<b>Razón de la denuncia:</b><br />
<select name="razon">
{foreach from=$tsDenuncias key=i item=denuncia}
{if $denuncia}<option value="{$i}">{$denuncia}</option>{/if}
{/foreach}
</select><br />
<b>Aclaración y comentarios:</b><br />
<textarea tabindex="6" rows="5" cols="40" name="extras"></textarea><br />
<span class="size9">Para atender tu caso rápidamente, adjunta pruevas de tu denuncia.<br /> (capturas de pantalla)</span>
</div>
Y subir esta carpeta
Mega
http://Registrate o inicia tu sesión par... contenido
Googe Drive
http://Registrate o inicia tu sesión par... contenido
Mediafire
http://Registrate o inicia tu sesión par... contenido
Demo
http://Registrate o inicia tu sesión par... contenido
Creditos: Kmario19 y koruitch
Hacer la consulta en la base de datos:
ALTER TABLE `w_configuracion` ADD `c_desapprove_foto` INT(1) NOT NULL DEFAULT '0' AFTER `c_desapprove_post`;En el archivo c.admin.php y buscar:
'desapprove_post' => empty($_POST['desapprove_post']) ? 0 : 1,Debajo de eso agregar:
'desapprove_foto' => empty($_POST['desapprove_foto']) ? 0 : 1,Luego de eso buscamos:
$c['desapprove_post'] . '\'Al lado de eso agregar:
, `c_desapprove_foto` = \'' . $c['desapprove_foto'] . '\'Luego buscar dos veces:
'mocp' => $_POST['mod-contenidoposts'],Y debajo de cada uno agregar:
'mocf' => $_POST['mod-contenidofotos'],Casi al final del archivo buscar:
(SELECT count(foto_id) FROM f_fotos WHERE f_status = \'0\') as fotos_visibles,Y agregar debajo esto:
(SELECT count(foto_id) FROM f_fotos WHERE f_status = \'3\') as fotos_revision,Un poco mas abajo buscar:
+ $num['fotos_eliminadas']Agregar al lado:
+ $num['fotos_revision']
En el archivo c.core.php buscar:
(SELECT count(post_id) FROM p_posts WHERE post_status = \'3\') as revposts,Al lado de eso agregar:
(SELECT count(foto_id) FROM f_fotos WHERE f_status = \'3\') as revfotos,Y una línea abajo buscar:
+ $datos['revposts']Agregar al lado:
+ $datos['revfotos']En el archivo c.moderacion.php buscar:
/**
* @name getHistory()Arriba de eso agregar:
public function getFotosD()
{
global $tsUser, $tsCore;
//
$max = 20; // MAXIMO A MOSTRAR
$limit = $tsCore->setPageLimit($max, true);
// PAGINAS
$query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT COUNT(*) FROM f_fotos AS f LEFT JOIN u_miembros AS u ON u.user_id = f.f_user WHERE f.f_status = \'3\'');
list($total) = db_exec('fetch_row', $query);
$data['pages'] = $tsCore->pageIndex($tsCore->settings['url'] .
"/moderacion/revfotos?", $_GET['s'], $total, $max);
//
$query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT u.user_id, u.user_name, h.*, f.foto_id, f.f_title FROM f_fotos AS f LEFT JOIN w_historial AS h ON h.pofid = f.foto_id LEFT JOIN u_miembros AS u ON u.user_id = h.mod WHERE h.type = \'2\' AND h.action = \'3\' AND f.f_status = \'3\' LIMIT ' .
$limit);
$data['datos'] = result_array($query);
//
return $data;
}Buscar la función:
function rebootFoto($fid)Y reemplazarla por esta:
function rebootFoto($fid)
{
global $tsUser;
if ($tsUser->is_admod || $tsUser->permisos['mocdf'])
{
// PRIMERO COMPROBAMOS SI ESTÁ OCULTO
$datos = db_exec('fetch_assoc', db_exec(array(__FILE__, __LINE__), 'query', 'SELECT foto_id, f_status FROM f_fotos WHERE foto_id = \'' .
(int)$fid . '\' LIMIT 1'));
if ($datos['f_status'] == 3)
{
if (!db_exec(array(__FILE__, __LINE__), 'query', 'DELETE FROM `w_historial` WHERE `pofid` = \'' . (int) $fid . '\' && `type` = \'2\' && `action` = \'3\''))
return '0: No se pudo restaurar la foto.';
} else
{
//BORRAMOS LA DENUNCIAS
if (!db_exec(array(__FILE__, __LINE__), 'query', 'DELETE FROM `w_denuncias` WHERE `obj_id` = \'' . (int) $fid . '\' AND `d_type` = \'4\''))
return '0: No se pudo eliminar la denuncia.';
}
// REGRESAMOS EL POST
if (db_exec(array(__FILE__, __LINE__), 'query', 'UPDATE `f_fotos` SET `f_status` = \'0\' WHERE `foto_id` = \'' .
$fid . '\''))
{
return '1: La foto ha sido restaurada.';
} else
return '0: No se pudo restaurar la foto.';
} else
return '0: No continúe por aquí.';
}En c.fotos.php buscar:
if(db_exec(array(__FILE__, __LINE__), 'query', 'INSERT INTO `f_fotos` (f_title, f_date, f_description, f_url, f_user, f_closed, f_visitas, f_last, f_ip) VALUES (\''.$fData['titulo'].'\', \''.time().'\', \''.$fData['desc'].'\', \''.$img_url.'\', \''.$tsUser->uid.'\', \''.$fData['closed'].'\', \''.$fData['visitas'].'\', \'1\', \''.$_SERVER['REMOTE_ADDR'].'\')')) {
$fid = db_exec('insert_id');Y reemplazarlo por:
if(db_exec(array(__FILE__, __LINE__), 'query', 'INSERT INTO `f_fotos` (f_title, f_date, f_description, f_url, f_user, f_closed, f_visitas, f_status, f_last, f_ip) VALUES (\''.$fData['titulo'].'\', \''.time().'\', \''.$fData['desc'].'\', \''.$img_url.'\', \''.$tsUser->uid.'\', \''.$fData['closed'].'\', \''.$fData['visitas'].'\', '.((!$tsUser->is_admod && $tsCore->settings['c_desapprove_foto'] == 1) ? '\'3\'' : '\'0\'').', \'1\', \''.$_SERVER['REMOTE_ADDR'].'\')')) {
$fid = db_exec('insert_id');
// Si está oculto, lo creamos en el historial e.e
if(!$tsUser->is_admod && $tsCore->settings['c_desapprove_foto'] == 1) db_exec(array(__FILE__, __LINE__), 'query', 'INSERT INTO `w_historial` (`pofid`, `action`, `type`, `mod`, `reason`, `date`, `mod_ip`) VALUES (\''.(int)$fid.'\', \'3\', \'2\', \''.$tsUser->uid.'\', \'Revisión al publicar\', \''.time().'\', \''.$_SERVER['REMOTE_ADDR'].'\')');Buscar y eliminar la línea:
$data['foto']['exist'] = db_exec('num_rows', $query);Buscar un poco arriba de eso:
$data['foto'] = db_exec('fetch_assoc', $query);Y debajo agregar:
if(empty($data['foto']['foto_id'])) return 'La foto fue eliminada!';
elseif($data['foto']['f_status'] == 1 && (!$tsUser->is_admod && $tsUser->permisos['morf'] == false)) return 'La foto está en revisión por acumulación de denuncias.';
elseif($data['foto']['f_status'] == 3 && (!$tsUser->is_admod && $tsUser->permisos['mocf'] == false)) return 'La foto se encuentra en revisión, a la espera de su publicación.';Un poco mas arriba en la consulta buscar y eliminar
AND f.f_status = \'0\'En fotos.php al lado de:
"La imagen <b>".$titulo."</b> fue agregada."Agregar:
.(!$tsUser->is_admod && $tsCore->settings['c_desapprove_foto'] == 1 ? ' Deberá esperar su aprobación' : '')Un poco abajo buscar el contenido del case "ver":
$tsFoto = $tsFotos->getFoto();
// TITULO
$tsTitle = $tsFoto['foto']['f_title'].' - '.$tsFoto['foto']['user_name'].' - '.$tsCore->settings['titulo'];
if($tsFoto['foto']['f_status'] == 1 && (!$tsUser->is_admod && $tsUser->permisos['moacp'] == false)) {
$tsPage = 'aviso';
$smarty->assign("tsAviso",array('titulo' => 'Opps...', 'mensaje' => 'Esta foto se encuentra en revisión por acumulación de denuncias', 'but' => 'Ir a Fotos', 'link' => "{$tsCore->settings['url']}/fotos/"));
}elseif($tsFoto['foto']['exist'] == 0){
$tsPage = 'aviso';
$smarty->assign("tsAviso",array('titulo' => 'Opps...', 'mensaje' => 'Esta foto no existe', 'but' => 'Ir a Fotos', 'link' => "{$tsCore->settings['url']}/fotos/"));
}else{
$smarty->assign("tsFoto", $tsFoto['foto']);
$smarty->assign("tsUFotos", $tsFoto['last']);
$smarty->assign("tsFFotos", $tsFoto['amigos']);
$smarty->assign("tsFComments", $tsFoto['comments']);
$smarty->assign("tsFVisitas", $tsFoto['visitas']);
$smarty->assign("tsFMedallas", $tsFoto['medallas']);
$smarty->assign("tsTMedallas", $tsFoto['m_total']);
}Y todo eso Reemplazarlo por:
$tsFoto = $tsFotos->getFoto();
if(is_array($tsFoto)) {
// TITULO
$tsTitle = $tsFoto['foto']['f_title'].' - '.$tsFoto['foto']['user_name'].' - '.$tsCore->settings['titulo'];
$smarty->assign("tsFoto", $tsFoto['foto']);
$smarty->assign("tsUFotos", $tsFoto['last']);
$smarty->assign("tsFFotos", $tsFoto['amigos']);
$smarty->assign("tsFComments", $tsFoto['comments']);
$smarty->assign("tsFVisitas", $tsFoto['visitas']);
$smarty->assign("tsFMedallas", $tsFoto['medallas']);
$smarty->assign("tsTMedallas", $tsFoto['m_total']);
} else {
$tsPage = 'aviso';
$smarty->assign("tsAviso",array('titulo' => 'Opps...', 'mensaje' => $tsFoto, 'but' => 'Ir a Fotos', 'link' => "{$tsCore->settings['url']}/fotos/"));
}En moderacion.php buscar:
elseif($action == 'revposts'){
$smarty->assign("tsPosts",$tsMod->getPostsD());
}Debajo de eso agregar:
elseif($action == 'revfotos'){
$smarty->assign("tsFotos",$tsMod->getFotosD());
}En templates/admin_mods/m.admin_configs.tpl debajo de:
<dl>
<dt><label for="ai_desapprove_post">Revisión de posts tras su publicación</label><br /><span>Si está activado, el equipo de moderación deberá aprobar un post antes de que éste sea publicado.</span></dt>
<dd>
<label><input name="desapprove_post" type="radio" id="ai_desapprove_post" value="1" {if $tsConfig.c_desapprove_post == 1}checked="checked"{/if} class="radio"/>Sí</label>
<label><input name="desapprove_post" type="radio" id="ai_desapprove_post" value="0" {if $tsConfig.c_desapprove_post != 1}checked="checked"{/if} class="radio"/>No</label>
</dd>
</dl>Agregar:
<dl>
<dt><label for="ai_desapprove_foto">Revisión de fotos tras su publicación</label><br /><span>Si está activado, el equipo de moderación deberá aprobar una foto antes de que ésta sea publicada.</span></dt>
<dd>
<label><input name="desapprove_foto" type="radio" id="ai_desapprove_foto" value="1" {if $tsConfig.c_desapprove_foto == 1}checked="checked"{/if} class="radio"/>Sí</label>
<label><input name="desapprove_foto" type="radio" id="ai_desapprove_foto" value="0" {if $tsConfig.c_desapprove_foto != 1}checked="checked"{/if} class="radio"/>No</label>
</dd>
</dl>En templates/admin_mods/m.admin_rangos.tpl debajo de:
<input type="checkbox" id="mocp" name="mod-contenidoposts" {if $tsRango.permisos.mocp}checked{/if} /><label style="font-weight:bold;" for="mocp">Posts desaprobados. </label><label for="mocp"> Podrán ver la sección y los posts ocultos.</label>
<br /><hr>Agregar:
<input type="checkbox" id="mocf" name="mod-contenidofotos" {if $tsRango.permisos.mocf}checked{/if} /><label style="font-weight:bold;" for="mocf">Fotos desaprobadas. </label><label for="mocf"> Podrán ver la sección y las fotos ocultas.</label>
<br /><hr>En esa carpeta crear el archivo templates/admin_mods/m.mod_revision_fotos.tpl y en su contenido agregar:
<div class="boxy-title">
<h3>Fotos desaprobadas</h3>
</div>
<div id="res" class="boxy-content" style="position:relative">
{if !$tsFotos.datos}
<div class="phpostAlfa">No hay fotos esperando aprobación</div>
{else}
<table cellpadding="0" cellspacing="0" border="0" class="admin_table" width="100%" align="center">
<thead>
<th>ID</th>
<th>Foto</th>
<th>Moderador</th>
<th>Razón</th>
<th>Fecha</th>
<th>IP</th>
<th>Acciones</th>
</thead>
<tbody>
{foreach from=$tsFotos.datos item=f}
<tr id="report_{$f.foto_id}">
<td>{$f.foto_id}</td>
<td><a href="{$tsConfig.url}/fotos/{$f.user_name}/{$f.foto_id}/{$f.f_title|seo}.html" target="_blank" title="{$f.f_title}"><img src="{$f.f_url}" width="50" height="50" /></a></td>
<td><a href="{$tsConfig.url}/perfil/{$f.user_name}" class="hovercard" uid="{$f.user_id}">{$f.user_name}</a></td>
<td>{$f.reason}</td>
<td>{$f.date|hace:true}</td>
<td>{$f.mod_ip}</td>
<td class="admin_actions">
<a href="#" onclick="mod.reboot({$f.foto_id}, 'fotos', 'reboot', false); return false;"><img src="{$tsConfig.default}/images/icons/reboot.png" title="Reactivar Foto" /></a>
<a href="{$tsConfig.url}/fotos/editar.php?id={$f.foto_id}" target="_blank"><img src="{$tsConfig.default}/images/icons/edit.png" title="Editar Foto" /></a>
<a href="#" onclick="mod.fotos.borrar({$f.foto_id}, false); return false"><img src="{$tsConfig.default}/images/icons/close.png" title="Borrar Foto" /></a>
</td>
</tr>
{/foreach}
</tbody>
<tfoot>
<td colspan="8">Páginas: {$tsFotos.pages}</td>
</tfoot>
</table>
{/if}
</div>En el archivo templates/admin_mods/m.mods_sidemenu.tpl en la misma carpeta, buscar:
{if $tsUser->is_admod || $tsUser->permisos.mocp}<li id="a_revposts"><span class="cat-title"><a onclick="$('#a_revposts').addClass('active');" href="{$tsConfig.url}/moderacion/revposts">Posts <span class="cadGe cadGe_{if $tsConfig.novemods.revposts > 15}red{elseif $tsConfig.novemods.revposts > 5}purple{else}green{/if}">{$tsConfig.novemods.revposts}</span></a></span></li>{/if}Debajo agregar:
{if $tsUser->is_admod || $tsUser->permisos.mocf}<li id="a_revfotos"><span class="cat-title"><a onclick="$('#a_revfotos').addClass('active');" href="{$tsConfig.url}/moderacion/revfotos">Fotos <span class="cadGe cadGe_{if $tsConfig.novemods.revfotos > 15}red{elseif $tsConfig.novemods.revfotos > 5}purple{else}green{/if}">{$tsConfig.novemods.revfotos}</span></a></span></li>{/if}En el archivo templates/admin_mods/m.admin_fotos.tpl al lado de:
if $f.f_status == 1Agregar:
|| $f.f_status == 3En el archivo templates/admin_mods/m.admin_stats.tpl buscar:
<li class="clearfix"><span class="floatL"> En revisión</span><span class="floatR number">{$tsAdminStats.fotos_ocultas} </span></li>Reemplazar por:
<li class="clearfix"><span class="floatL"> En revisión</span><span class="floatR number">{$tsAdminStats.fotos_revision} </span></li>
<li class="clearfix"><span class="floatL"> Inactivas</span><span class="floatR number">{$tsAdminStats.fotos_ocultas} </span></li>En el archivo templates/t.moderacion.tpl debajo de:
{if $tsUser->is_admod || $tsUser->permisos.mocp}{include file='admin_mods/m.mod_revision_posts.tpl'}{/if}Agregar:
{elseif $tsAction == 'revfotos'}
{if $tsUser->is_admod || $tsUser->permisos.mocf}{include file='admin_mods/m.mod_revision_fotos.tpl'}{/if}Por último en css/moderacion.css al lado de:
li#a_revpostsAgregar:
, li#a_revfotosDejo el script con la instalación echa.
Mega
http://Registrate o inicia tu sesión par... contenido
Creditos: Kmario19
Logaster
Descripción:
Generador gratuito de nombre de empresa
Web
http://Registrate o inicia tu sesión par... contenido
The Name App
Descripción:
Tienes una idea brillante. Incluso se le ocurrió un nombre único. ¡Ahora veamos si tiene dominios y nombres de usuario disponibles en las principales plataformas!
Web
http://Registrate o inicia tu sesión par... contenido
Namelix
Descripción:
Generador de nombres comerciales
Genera un nombre comercial corto y de marca utilizando inteligencia artificial
Web
http://Registrate o inicia tu sesión par... contenido
Naminum
Descripción:
Naminum es el generador de nombres comerciales gratuito líder en la web. Genere cantidades ilimitadas de nombres únicos que sean realmente buenos.
Web
http://Registrate o inicia tu sesión par... contenido
Shopify
Descripción:
Busca el generador de nombre de empresa de Shopify para la disponibilidad de dominio al instante.
Selecciona dominios para empresas a partir de ideas de nombre generadas de manera automática.
Web
http://Registrate o inicia tu sesión par... contenido
Wordoid
Descripción:
Nombres inventados para marcas de productos, empresas emergentes, blogs y sitios web. Elija el nombre perfecto entre docenas de ideas con nuestro generador de nombres inteligente.
Web
http://Registrate o inicia tu sesión par... contenido
Hipster Business
Descripción:
Generador de nombres de dominio hipster
Web
http://Registrate o inicia tu sesión par... contenido
NameMesh
Descripción:
Obtenga sugerencias inteligentes de nombres de dominio utilizando sinónimos, sufijos, prefijos, url corta, nuevos gtlds para encontrar el nombre de dominio perfecto.
Web
http://Registrate o inicia tu sesión par... contenido
Impossibility
Descripción:
Encuentre nombres de dominio increíbles con nuestro generador de nombres de dominio ultrarrápido.
Web
http://Registrate o inicia tu sesión par... contenido
Panabee
Descripción:
Panabee es una forma sencilla de buscar nombres de dominio, nombres de aplicaciones, nombres de sitios web y nombres comerciales.
Web
http://Registrate o inicia tu sesión par... contenido
Business Name Generator
Descripción:
Ingrese palabras relacionadas con su empresa, producto o servicio en nuestro generador de nombres de empresas de IA y generaremos cientos de ideas de nombres para que empiece el proceso de selección.
Web
http://Registrate o inicia tu sesión par... contenido
NameStation
Descripción:
Encuentre excelentes nombres de dominio disponibles.
Búsqueda inteligente de dominios, verificación instantánea, concursos de nombres de colaboración colectiva, sugerencias de palabras clave.
Web
http://Registrate o inicia tu sesión par... contenido
Novanym
Descripción:
Simplemente explore cientos de dominios .com brillantes y encuentre uno que funcione como el nombre de su empresa. Con una simple compra única, es tuyo. Encuentre su nuevo nombre comercial hoy.
Web
http://Registrate o inicia tu sesión par... contenido
Names4Brands
Descripción:
Nuestro generador de nombres de marca ayuda a obtener un nombre de empresa único, con un solo clic en nuestro generador de nombres comerciales aleatorios, encuentre marcas geniales. El nombre comercial único es la clave para una empresa exitosa. Aquí puede encontrar la forma más rápida de obtener un nombre de dominio y una marca comercial disponibles para marcas geniales, utilice nuestro generador aleatorio de nombres de marcas para obtener sugerencias de nombres comerciales únicos para su empresa. Marcas de nombres que utilizan nuestro generador de nombres aleatorios, utiliza palabras de prefijos y sufijos populares para generar nombres de empresas. El generador de nombres aleatorios para marcas geniales, nombres para marcas, será gratuito para los buscadores de marcas para siempre con nuestro generador de nombres.
Web
http://Registrate o inicia tu sesión par... contenido
Dot-O-Mator
Descripción:
Utilice Dot-o-mator para crear sugerencias de nombres de dominio. Cómo funciona: ingrese una palabra (o palabras) en el cuadro de la izquierda, luego elija algunas terminaciones (o escriba las suyas propias).
Haga clic para combinarlos. Si ve un nombre que le gusta, puede verificar su disponibilidad o guardarlo en su scratchboard.
Web
http://Registrate o inicia tu sesión par... contenido
Title Maker
Descripción:
El Generador de ideas de contenido de Portent le permite crear títulos atractivos para su próxima publicación de blog, podcast o video.
Simplemente escriba su tema y el generador de ideas generará un título creativo y consejos para llevarlo al siguiente nivel.
Web
http://Registrate o inicia tu sesión par... contenido
Google Trends
Descripción:
Tendencias de búsqueda de Google es una función de tendencias de búsqueda que muestra la frecuencia con la que se ingresa un término de búsqueda determinado en el motor de búsqueda de Google en relación con el volumen de búsqueda total del sitio durante un período de tiempo determinado.
Google Trends se puede utilizar para la investigación comparativa de palabras clave y para descubrir picos desencadenados por eventos en el volumen de búsqueda de palabras clave.
Google Trends proporciona datos relacionados con palabras clave, incluido el índice de volumen de búsqueda y la información geográfica sobre los usuarios de los motores de búsqueda.
Web
http://Registrate o inicia tu sesión par... contenido
Buzz Sumo
Descripción:
Encuentre el contenido con el mejor rendimiento.
Colabora con los influencers que importan.
Utilice nuestra información de contenido para generar ideas, crear contenido de alto rendimiento, supervisar su rendimiento e identificar personas influyentes.
Web
http://Registrate o inicia tu sesión par... contenido
Topic Generator
Descripción:
La herramienta gratuita Blog Ideas Generator de HubSpot te ofrece un año de ideas para publicaciones de blog en cuestión de segundos.
Web
http://Registrate o inicia tu sesión par... contenido
Trends 24
Descripción:
Las tendencias de Twitter son bastante reveladoras, capturando pensamientos y emociones de la población de Twitter en un momento dado. Pero dado que las tendencias en el sitio web y la aplicación de Twitter siempre cambian, no nos damos cuenta del estado de ánimo general y las tendencias que evolucionan a lo largo del día. Aquí es donde entra en juego Trends24.
Trends24 lo ayuda a realizar un seguimiento de las principales tendencias de Twitter durante las últimas 24 horas para más de 400 ubicaciones en todo el mundo. La línea de tiempo de tendencias le brinda una línea de tiempo hora por hora de los temas de tendencia principales. La nube de etiquetas de tendencias le brinda la nube de etiquetas de los temas de tendencia del día.
Web
http://Registrate o inicia tu sesión par... contenido
Descripción:
Reddit es una red de comunidades basada en los intereses de las personas.
Web
http://Registrate o inicia tu sesión par... contenido
Tagboard
Descripción:
Tagboard brinda a los productores y narradores del mundo una plataforma para crear narrativas auténticas, atractivas e interactivas.
Web
http://Registrate o inicia tu sesión par... contenido
Hipster Logo
Descripción:
Generador de iconos hipster.
Web
http://Registrate o inicia tu sesión par... contenido
Square Space
Descripción:
Logos simples
Web
http://Registrate o inicia tu sesión par... contenido
Tailor
Descripción:
Tailor Brands es la primera plataforma de marca y diseño de logotipos impulsada por IA del mundo
Empoderamos a millones de clientes en todo el mundo para poner en marcha su negocio con herramientas de diseño y marca fáciles de usar.
Nuestra plataforma de inteligencia artificial ayuda a cualquier persona a lucir profesional desde el principio al hacer que sea simple (¡y divertido!)
Crear una identidad de marca en línea única (logotipo, sitio web y diseños de marca) en minutos y sin experiencia de diseño.
Web
http://Registrate o inicia tu sesión par... contenido
Logaster
Descripción:
¡Cree su estilo corporativo al instante con Logaster Creador de Marca! ¡Comience con la creación del logotipo y obtenga otros elementos de diseño en unos pocos clics!
Web
http://Registrate o inicia tu sesión par... contenido
Canva
Descripción:
Miles de plantillas de logotipos originales y gratuitas. ¡Diseña tu logo en tan solo unos minutos!
Web
http://Registrate o inicia tu sesión par... contenido
Logo Genie
Descripción:
¡Obtén la fuente gráfica de tu logotipo en formato para la web y para impresión! Realiza todas las modificaciones que deseas en tus logotipos y productos impresos. Elige entre una gran selección de íconos, fuentes y colores. ¡Conserva todos tus logotipos en tu cuenta y accede a tus archivos online de manera instantánea!
Web
http://Registrate o inicia tu sesión par... contenido
Free Logo Services
Descripción:
Crea un logo en minutos.
Web
http://Registrate o inicia tu sesión par... contenido
Cool Text
Descripción:
Generador de gráficos gratis para páginas web o cualquier otra cosa donde usted necesite un logo impresionate sin mucho trabajo de diseño. Simplemente escoja que tipo de imagen a usted le gustaría, Luego llene un formulario y usted tendrá su propria imagen creada dinámicamente.
Web
http://Registrate o inicia tu sesión par... contenido
Logo Gratis
Descripción:
Logos gratis online. Crea y descarga tu logo 100% Gratis y sin registrarte.
Web
http://Registrate o inicia tu sesión par... contenido
Logo Maker
Web
http://Registrate o inicia tu sesión par... contenido
Online Logo Maker
Descripción:
Crea un diseño de logotipo increíble para tu marca. Ahora mismo. Gratis.
Web
http://Registrate o inicia tu sesión par... contenido
Crear Logo Gratis Online
Descripción:
Con CLGO puede diseñar su propia marca en 3 sencillos pasos. Lo único que debe hacer es dejar que nuestro generador de logotipos sepa cuál es su marca. A continuación, seleccione una categoría de diseño de logotipo y, por último, seleccione y edite su logotipo en línea de forma gratuita!
Puede elegir entre miles de plantillas de logotipo que puede personalizar en línea, ¡incluso puede buscar cientos de miles de iconos para combinarlo con su logotipo!
Después de crear su diseño de logotipo, podrá descargar los archivos en el formato que desee. Puede elegir entre: Vector como EPS, PDF, SVG y también JPG, PNG. ¡Incluso tenemos un paquete de redes sociales esperándote!
Web
http://Registrate o inicia tu sesión par... contenido
Mikons
Descripción:
Comunidad en línea y sitio web social donde las personas se comunican a través de símbolos visuales, logotipos, íconos o avatares.
Web
http://Registrate o inicia tu sesión par... contenido
Logo Factory
Descripción:
Aplicación sencilla, intuitiva e inmediata que le permite crear una marca marca / logotipo libre en unos pocos minutos.
Web
http://Registrate o inicia tu sesión par... contenido
Designmantic
Descripción:
Cree un logotipo profesional con nuestra herramienta de creación de logotipos que ofrece cientos de plantillas para personalizar. Edite colores, fuentes, íconos para su marca y siga ajustando hasta que esté satisfecho.
Web
http://Registrate o inicia tu sesión par... contenido
Logosea
Descripción:
Diseña tu logo gratis o tarjeta de visita con nuestro servicio online sin registrarte. Guarda tu diseño y modifícalo luego. Alta resolución y 100% GRATIS.
Web
http://Registrate o inicia tu sesión par... contenido
Graphicsprings
Descripción:
Crea tu propio y magnífico logo en minutos con el creador de logos de GraphicSprings GRATIS.
Web
http://Registrate o inicia tu sesión par... contenido
Logo Instant
Descripción:
Logotipos 100% gratuitos para descargar
Puede utilizar cualquier diseño de logotipo gratuito de LogoInstant.com para su próximo proyecto o incluso para sus clientes. Puede descargar y modificar libremente nuestros logotipos psd gratuitos para adaptarlos a sus necesidades.
Ya no tiene que gastar mucho dinero en un costoso diseñador de logotipos porque nuestros logotipos son 100% gratuitos.
Web
http://Registrate o inicia tu sesión par... contenido
Tiny
Descripción:
TinyPNG utiliza técnicas inteligentes de compresión con pérdida para reducir el tamaño de sus archivos PNG. Al disminuir selectivamente el número de colores en la imagen, se requieren menos bytes para almacenar los datos. El efecto es casi invisible, pero hace una gran diferencia en el tamaño del archivo!
Web
Registrate o inicia tu sesión para ver este contenido
Compressor
Descripción:
Optimice y comprima imágenes JPEG, PNG, SVG, GIF y WEBP en línea. Comprima, cambie el tamaño y cambie el nombre de sus fotos de forma gratuita.
Web
Registrate o inicia tu sesión para ver este contenido
Kraken
Descripción:
Optimice sus imágenes con una velocidad increíble utilizando una potente API y una interfaz web en línea.
Web
Registrate o inicia tu sesión para ver este contenido
Image Optimizer
Descripción:
Con este servicio en línea gratuito, puede cambiar el tamaño, comprimir y optimizar sus archivos de imagen. ¡Usar el servicio es tan fácil como hacer clic en un botón! ¡Las imágenes optimizadas son mejores! Son más adecuados para páginas web, archivos adjuntos de correo electrónico o incluso almacenamiento en su disco.
Web
Registrate o inicia tu sesión para ver este contenido
ImageOptim
Descripción:
Limpia y comprime las imágenes cargadas por el usuario. ImageOptim API elimina metadatos privados y convierte imágenes a formatos y tamaños optimizados para la web.
Web
Registrate o inicia tu sesión para ver este contenido
WP Smush
Descripción:
Optimice sus imágenes, active la carga diferida, cambie el tamaño, comprima y mejore la velocidad de su página de Google con el increíblemente poderoso y 100% gratuito mezclador / compresor de imágenes de WordPress, ¡presentado por el superequipo de WPMU DEV!
Web
Registrate o inicia tu sesión para ver este contenido
Dunnnk
Descripción:
Generamos hermosas maquetas de productos. Sube tu diseño y te daremos una maqueta de alta resolución a cambio.
Web
Registrate o inicia tu sesión para ver este contenido
JPEG Optimizer
Descripción:
JPEG-Optimizer es una herramienta en línea gratuita para cambiar el tamaño y comprimir sus fotos e imágenes digitales para mostrarlas en la web en foros o blogs, o para enviarlas por correo electrónico. Completamente libre. No hay software para descargar.
Web
Registrate o inicia tu sesión para ver este contenido
Optimizilla
Descripción:
Este optimizador de imagen en línea utiliza una combinación inteligente de la mejor optimización y algoritmos de compresión con pérdida para reducir el tamaño JPEG y PNG de imágenes lo mínimo posible, manteniendo el nivel de calidad requerido.
Web
Registrate o inicia tu sesión para ver este contenido
Image Recycle
Descripción:
ImageRecycle puede optimizar la velocidad de su sitio web mediante la compresión de imágenes y PDF mientras mantiene la calidad de los medios originales.
Web
Registrate o inicia tu sesión para ver este contenido
Compress Now
Descripción:
Compressnow Ayuda a reducir el peso de las IMÁGENES.
Web
Registrate o inicia tu sesión para ver este contenido
Trimage
Descripción:
Trimage es una GUI multiplataforma y una interfaz de línea de comandos para optimizar archivos de imagen para sitios web, utilizando optipng, pngcrush, advpng y jpegoptim, según el tipo de archivo (actualmente, se admiten archivos PNG y JPG). Se inspiró en imageoptim. Todos los archivos de imagen se comprimen sin pérdidas en los niveles de compresión más altos disponibles, y se eliminan EXIF y otros metadatos. Trimage le ofrece varias funciones de entrada para adaptarse a su propio flujo de trabajo: un diálogo de archivo normal, arrastrar y soltar y varias opciones de línea de comando.
Web
Registrate o inicia tu sesión para ver este contenido
Resize photos
Descripción:
Cambio de tamaño de fotos y compresor de imágenes gratuitos para recortar, cambiar el tamaño de las imágenes en formato JPEG | PNG | GIF a los píxeles exactos o la proporción que especificó, comprimirlos para reducir el tamaño de los archivos, lo que facilita su uso como fondo de escritorio, foto de portada de Facebook, Foto de perfil de Twitter, iconos de avatar, etc.
Web
Registrate o inicia tu sesión para ver este contenido
Ezgif
Descripción:
Herramienta para ajustar la velocidad de la animación GIF en línea. Haz que las imágenes GIF funcionen más lento o más rápido. Acelera o ralentiza la animación GIF o WebP.
Web
Registrate o inicia tu sesión para ver este contenido
Webresizer
Descripción:
Herramienta en línea gratuita para optimizar imágenes para sitios web y correo electrónico. Recorta, cambia el tamaño, añade un borde y mejora la nitidez de tus fotos fácilmente.
Web
Registrate o inicia tu sesión para ver este contenido
Compress JPEG
Descripción:
Comprimir imágenes y fotos JPEG para visualización en páginas web, para compartir en las redes sociales o para enviar por correo electrónico.
Web
Registrate o inicia tu sesión para ver este contenido
ILoveIMG
Descripción:
iLoveIMG es una app online para editar y gestionar imágenes completamente gratis y fácil de usar. Puedes comprimir imágenes, cambiarlas de tamaño, recortarlas, convertirlas y mucho más.
Web
Registrate o inicia tu sesión para ver este contenido

