02-01-2021, 07:07 PM
3
[img]Registrate o inicia tu sesión para ver este contenido[/img]
[img]Registrate o inicia tu sesión para ver este contenido[/img]
Ejecutar las siguientes consultas (una por una):
Código: ( Seleccionar Todo )
ALTER TABLE `u_miembros` ADD `user_karma` TINYINT( 4 ) NOT NULL
Código: ( Seleccionar Todo )
ALTER TABLE `w_configuracion` ADD `c_karma_settings` ENUM( '1', '2' ) NOT NULL
Código: ( Seleccionar Todo )
CREATE TABLE IF NOT EXISTS `u_karma_votes` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`vote` enum('1','2') NOT NULL,
`ip` varchar(16) NOT NULL,
`user` int(10) unsigned NOT NULL,
`user_to` int(10) unsigned NOT NULL,
`time` varchar(10) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
Abrir c.admin en inc/class
Buscar:
Código: ( Seleccionar Todo )
'sump' => empty($_POST['sump']) ? 0 : 1,
Debajo agregar:
Código: ( Seleccionar Todo )
'karma' => ($_POST['karma_opt'] != '1' && $_POST['karma_opt'] != '2' ? '1' : $_POST['karma_opt']),
Buscar:
Código: ( Seleccionar Todo )
, `offline_message` = \'' . $c['offline_message'] . '\'
Al lado agregar:
Código: ( Seleccionar Todo )
, `c_karma_settings` = \'' . $c['karma'] . '\'
Abrir c.user.php en inc/class
Buscar:
Código: ( Seleccionar Todo )
/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
// MANEJAR SESSIONES \\
Arriba agregar:
Código: ( Seleccionar Todo )
function userKarma()
{
global $tsCore;
// sólo usuarios logueados
if (!$this->uid)
return false;
// comprobación de variables
if (!ctype_digit($_POST['karma']) || ($_POST['karma'] != '1' && $_POST['karma'] != '2') || !ctype_digit($_POST['uid']))
return 'Error provocado';
// comprobamos que no se de karma a sí mismo
if ($_POST['uid'] == $this->uid)
return 'No es posible darte puntos de karma a ti mismo';
//si está la opción 2 en la configuración del karma, no se podrá dar votos negativos, comprobamos eso:
if ($_POST['karma'] == '2' && $tsCore->settings['c_karma_settings'] == '2')
return 'Sólo votos positivos';
// el usuario existe?
if(db_exec('num_rows', db_exec(array(__FILE__, __LINE__), 'query', 'SELECT user_id FROM u_miembros WHERE user_id = \'' . $_POST['uid'] . '\'')))
return 'El usuario no existe';
// comprobamos clones
if(db_exec('num_rows', db_exec(array(__FILE__, __LINE__), 'query', 'SELECT id FROM u_karma_votes WHERE (user = \''.$this->uid.'\' || ip = \''.$tsCore->getIP().'\') && time > \''.(time() - 3600).'\' && user_to = \''.$_POST['uid'].'\'')))
return 'Debes esperar una hora para poder volver a votar a ese usuario';
// pasó por acá y todo bien? actualizamos karma y guardamos voto
db_exec(array(__FILE__, __LINE__), 'query', 'UPDATE u_miembros SET user_karma = user_karma ' . ($_POST['karma'] == '2' ? '-' : '+') . ' 1 WHERE user_id = \'' . $_POST['uid'] . '\' LIMIT 1');
db_exec(array(__FILE__, __LINE__), 'query', 'INSERT INTO u_karma_votes (user, ip, user_to, vote, time) VALUES (\'' . $this->uid . '\', \'' . $tsCore->getIP() . '\', \'' . $_POST['uid'] . '\', ' . ($_POST['karma'] == '2' ? '2' : '1') . ', \'' . time() . '\')');
//
return '1';
}
Abrir c.posts.php en inc/class
Buscar:
Código: ( Seleccionar Todo )
// DATOS DEL AUTOR
$query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT u.user_id, u.user_name, u.user_rango, u.user_puntos, u.user_lastactive, u.user_last_ip, u.user_activo, u.user_baneado, p.user_pais, p.user_sexo, p.user_firma FROM u_miembros AS u LEFT JOIN u_perfil AS p ON u.user_id = p.user_id WHERE u.user_id = \''.(int)$user_id.'\' LIMIT 1');
reemplazar por
Código: ( Seleccionar Todo )
// DATOS DEL AUTOR
$query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT u.user_id, u.user_name, u.user_rango, u.user_puntos, u.user_lastactive, u.user_last_ip, u.user_activo, u.user_baneado, p.user_pais, p.user_sexo, p.user_firma, u.user_karma FROM u_miembros AS u LEFT JOIN u_perfil AS p ON u.user_id = p.user_id WHERE u.user_id = \''.(int)$user_id.'\' LIMIT 1');
Añadido:
Código: ( Seleccionar Todo )
, u.user_karma
Abrir c.cuenta.php en inc/class
Buscar:
Código: ( Seleccionar Todo )
// 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.'\'');
reemplazar por:
Código: ( Seleccionar Todo )
// INFORMACION GENERAL
$query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT u.user_id, u.user_name, u.user_registro, u.user_lastactive, u.user_karma, 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.'\'');
Añadido:
Código: ( Seleccionar Todo )
, u.user_karma
Abrir ajax-posts.php que está en inc/php/ajax
Buscar:
Código: ( Seleccionar Todo )
case 'posts-last-comentarios':
//<--
$smarty->assign("tsComments",$tsPosts->getLastComentarios());
//-->
break;
Debajo agregar:
Código: ( Seleccionar Todo )
case 'posts-user-karma':
//<!--
echo $tsUser->userKarma();
//<--
break;
Abrir m.perfil_headinfo.tpl que está en themes/tutheme/templates/modules
Buscar:
Código: ( Seleccionar Todo )
<li>
<strong>{$tsInfo.stats.user_fotos}</strong>
<span>Fotos</span>
</li>
Debajo agregar:
Código: ( Seleccionar Todo )
<li>
<strong>{$tsInfo.user_karma}</strong>
<span>Karma</span>
</li>
Abrir m.posts_autor.tpl que está en themes/tutheme/templates/modules
Buscar:
Código: ( Seleccionar Todo )
<span style="color: #456c00" class="nData">{$tsAutor.user_comentarios}</span>
<span class="txtData">Comentarios</span>
</div>
Debajo agregar:
Código: ( Seleccionar Todo )
<hr class="divider"/>
Karma: <b><div id="uKarma">{$tsAutor.user_karma}</div></b>
<div id="karmaOpts" style="display:inline;">
<a onclick="users_karma({$tsAutor.user_id}, 1)" title="Dar voto positivo"><img src="{$tsConfig.tema.t_url}/images/rep_up.png"></a>
{if $tsConfig.c_karma_settings == 1}
<a onclick="users_karma({$tsAutor.user_id}, 2)" title="Dar voto negativo"><img src="{$tsConfig.tema.t_url}/images/rep_down.png"></a>
{/if}
</div>
Abrir acciones.js que está en /themes/tutheme/js/
Buscar:
Código: ( Seleccionar Todo )
function actualizar_comentarios(cat, nov){
$('#loading').fadeIn(250);
$('#ult_comm, #ult_comm > ol').slideUp(150);
$.ajax({
type: 'GET',
url: global_data.url + '/posts-last-comentarios.php',
cache: false,
data: 'cat='+cat+'&nov='+nov,
success: function(h){
$('#ult_comm').html(h);
$('#ult_comm > ol').hide();
$('#ult_comm, #ult_comm > ol:first').slideDown( 1500, 'easeInOutElastic');
$('#loading').fadeOut(350);
//$('#ult_comm, #ult_comm > ol:first').slideDown({duration: 'slow', easing: 'easeOutBack'});
// La animación easeOutBack me pareció buena, la otra también o.O aunque easeInOutElastic se ve raro con tantas letras.
},
error: function(){
$('#ult_comm, #ult_comm > ol:first').slideDown({duration: 1000, easing: 'easeOutBounce'});
$('#loading').fadeOut(350);
// Esta animación se usaba anteriormente en caso de que saliese bien, puede volver a utilizarse.
}
});
}
Debajo agregar:
Código: ( Seleccionar Todo )
/* Karma V1 - By Alan - phpost.net */
function users_karma(uid, vote){
if(!uid || !vote) return false;
$('#loading').fadeIn(250);
$.post(global_data.url + '/posts-user-karma.php', 'uid=' + uid + '&karma=' + vote, function(olakease){
if(olakease != '1'){
mydialog.alert('Error', olakease);
} else {
var uKarma = parseInt($('#uKarma').text());
if(vote == '1'){
$('#uKarma').text(++uKarma);
} else {
$('#uKarma').text(--uKarma);
}
$('#karmaOpts').fadeOut('slow');
$('#loading').fadeOut(350);
}
});
}
Abrir m.admin_configs.tpl en themes/default/templates/admin_mods
Buscar:
Código: ( Seleccionar Todo )
<dl>
<dt>
<label for="ai_met_welcome">Mensaje de Bienvenida:</label>
<br /><span id="desc_message_welcome" {if $tsConfig.c_met_welcome==0 }style="display:none;" {/if}> <br /> [usuario] => Nombre del registrado <br /> [welcome] => Bienvenido/a depende del sexo <br /> [web] => Nombre de esta web <br /> <br />(Se aceptan BBCodes y Smileys)</span></dt>
<dd>
<select id="ai_met_welcome" name="met_welcome" style="width: 266px;" class="select" {if $tsConfig.c_met_welcome==0 } onchange="if($('#ai_met_welcome').val() != 0) $('textarea[name=message_welcome]').slideDown(); $('#desc_message_welcome').slideDown();" {/if}>
<option value="0" {if $tsConfig.c_met_welcome==0 }selected{/if}>No dar bienvenida</option>
<option value="1" {if $tsConfig.c_met_welcome==1 }selected{/if}>Muro</option>
<option value="2" {if $tsConfig.c_met_welcome==2 }selected{/if}>Mensaje privado</option>
<option value="3" {if $tsConfig.c_met_welcome==3 }selected{/if}>Aviso</option>
</select>
<br />
<textarea name="message_welcome" id="ai_met_welcome" style="width: 260px; height: 100px; {if $tsConfig.c_met_welcome == 0} display:none; {/if}">{$tsConfig.c_message_welcome}</textarea>
</dd>
</dl>
Debajo agregar:
Código: ( Seleccionar Todo )
<dl>
<dt>
<label for="ai_karma_opt">Mod Karma:</label><br /><span> <br /> [Mostrar ambas opciones] => Permite dar karma positivo y negativo <br /> [Sólo karma positivo] => Sólo se podrá dar karma positivo</span>
</dt>
<dd>
<select id="ai_karma_opt" name="karma_opt" style="width: 266px;" class="select">
<option value="1"{if $tsConfig.c_karma_settings == 1} selected{/if} >Mostrar ambas opciones</option>
<option value="2"{if $tsConfig.c_karma_settings == 2} selected{/if} >Sólo karma positivo</option>
</select>
</dd>
</dl>
Y subir imágenes Debes agradecer para ver el contenido... y Debes agradecer para ver el contenido... a themes/tutheme/images/
[img]Registrate o inicia tu sesión para ver este contenido[/img]
[img]Registrate o inicia tu sesión para ver este contenido[/img]
Creditos: Debes agradecer para ver el contenido...