02-01-2021, 07:15 PM
2
Hola, os dejo el mod de Tutan-kabron fixeado y actualizado a la versión 1.3, lo he instalado y probado en el tema default de risus, pero tiene que funcionar en cualquier tema, lo que cambia es el diseño.[img]Registrate o inicia tu sesión para ver este contenido[/img]
[img]Registrate o inicia tu sesión para ver este contenido[/img]
[img]Registrate o inicia tu sesión para ver este contenido[/img]
[img]Registrate o inicia tu sesión para ver este contenido[/img]
[img]Registrate o inicia tu sesión para ver este contenido[/img]
[img]Registrate o inicia tu sesión para ver este contenido[/img]
Ejecutan estas consultas
Código: ( Seleccionar Todo )
ALTER TABLE `u_miembros` ADD `user_referidos` INT( 11 ) NOT NULL DEFAULT '0'Código: ( Seleccionar Todo )
ALTER TABLE w_configuracion ADD p_p_refs INT(11) NOT NULL;Código: ( Seleccionar Todo )
CREATE TABLE IF NOT EXISTS `referidos` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_referido` varchar(60) CHARACTER SET latin1 NOT NULL,
`user_name` varchar(60) CHARACTER SET latin1 NOT NULL,
`fecha` int(12) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=16 ;En inc --> class --> c.admin.php
Buscar:
Código: ( Seleccionar Todo )
/*
getNoticias()
*/
function getNoticias()
{Arriba agregar:
Código: ( Seleccionar Todo )
/*
getReferidos()
*/
function getReferidos()
{
//
$query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT u.user_id, u.user_name, r.* from referidos AS r LEFT JOIN u_miembros AS u ON r.user_referido = u.user_name ORDER BY r.id DESC');
$data = result_array($query);
//
return $data;
}
/*
getReferido()
*/
function getReferido()
{
global $tsCore;
//
$id = $tsCore->setSecure($_GET['id']);
//
$query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT `id`, `user_name`, `user_referido`, `fecha` FROM referidos WHERE id = \'' .
(int)$id . '\' LIMIT 1');
$data = db_exec('fetch_assoc', $query);
//
return $data;
}
/*
deReferidos();
*/
function delReferido()
{
$id = $_GET['id'];
if (!db_exec('num_rows', db_exec(array(__FILE__, __LINE__), 'query', 'SELECT `id` FROM `referidos` WHERE `id` = \'' .
(int)$id . '\' LIMIT 1'))) {
return 'El id ingresado no existe.';
}
$query = db_exec(array(__FILE__, __LINE__), 'query', 'DELETE FROM `referidos` WHERE `id` = \'' . (int)$id . '\'');
}Buscar:
Código: ( Seleccionar Todo )
'offline_message' => $tsCore->setSecure($tsCore->parseBadWords($_POST['offline_message'])),Debajo agregar:
Código: ( Seleccionar Todo )
'p_p_refs' => $tsCore->setSecure($_POST['p_p_refs']),Buscar:
Código: ( Seleccionar Todo )
'\', `offline_message` = \'' . $c['offline_message'] .Al lado agregar:
Código: ( Seleccionar Todo )
'\', `p_p_refs` = \'' . $c['p_p_refs'] .En inc --> class --> c.cuenta.php
Buscar:
Código: ( Seleccionar Todo )
/*
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);Después de:
Código: ( Seleccionar Todo )
u.user_lastactive,Agregar
Código: ( Seleccionar Todo )
u.user_referidos,Código: ( Seleccionar Todo )
/*
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_referidos, 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);En inc --> class --> c.registro.php
Buscar:
Código: ( Seleccionar Todo )
} else $valid = '0: Faltan datos y no se puede procesar tu solicitud.';
// retornar valor
return $valid;
}Debajo agregar:
Código: ( Seleccionar Todo )
/**
* @name referidos by tutan-kabron
* @access public
* @param
* @return string
*/
public function checkUserEmail2(){
global $tsCore;
// Variables
$referido = strtolower($_POST['referido']);
$which = empty($referido) ? 'referido' : 'referido';
// MENSAJE
$valid = '1: El '.$which.' no existe .'; // DEFAULT
//
if(!empty($referido)){
$query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT `user_id` FROM `u_miembros` WHERE LOWER(user_name) = \''.$tsCore->setSecure($referido).'\' LIMIT 1');
if(db_exec('num_rows', $query) > 0) $valid = '0: El '.$which.' si existe.'; // EXISTE
} else $valid = '0: Este Campo no es obligatorio.';
// retornar valor
return $valid;
}Buscar:
Código: ( Seleccionar Todo )
/**
* @name registerUser()
* @access public
* @param
* @return string
*/
function registerUser(){
global $tsCore, $tsUser;
// DATOS NECESARIOSDebajo agregar:
Código: ( Seleccionar Todo )
$referido=$_POST['referido'];
if(empty($referido)){
$referido='1';
}else{
$referido= $tsCore->setSecure($_POST['referido']);
}Buscar:
Código: ( Seleccionar Todo )
'user_email' => $_POST['email'],Debajo agregar:
Código: ( Seleccionar Todo )
'user_referido' => $referido,Buscar:
Código: ( Seleccionar Todo )
// MENSAJE PARA DAR LA BIENVENIDA BIENVENIDAArriba agregar:
Código: ( Seleccionar Todo )
if($referido != '1'){
db_exec(array(__FILE__, __LINE__), 'query', 'UPDATE u_miembros SET user_puntos = user_puntos + \''.(int)$tsCore->settings['p_p_refs'].'\' WHERE user_name = \''.$tsData['user_referido'].'\'');
db_exec(array(__FILE__, __LINE__), 'query', 'UPDATE u_miembros SET user_referidos = user_referidos + 1 WHERE user_name = \''.$tsData['user_referido'].'\'');
db_exec(array(__FILE__, __LINE__), 'query', 'INSERT INTO `referidos` (`user_referido`, `user_name`, `fecha`) VALUES (\''.$tsData['user_referido'].'\', \''.$tsData['user_nick'].'\', \''.time().'\')');
$aviso = 'Tu referido <a href="'.$tsCore->settings['url'].'/perfil/'.$tsData['user_nick'].'"><b>'.$tsData['user_nick'].'</b></a>se ha registrado. <br /><br/> Dale la bienvenida! <br />Obtentienes '.(int)$tsCore->settings['p_p_refs'].' puntos por tu referido';
db_exec(array(__FILE__, __LINE__), 'query', 'INSERT INTO `u_avisos` (`user_id`, `av_subject`, `av_body`, `av_date`, `av_type`) VALUES (\''.$tsUser->getUserId($tsData['user_referido']).'\', \'Nuevo referido\', \''.$aviso.'\', \''.'\', \''.time().'\', \'4\')');
}En inc --> php --> admin.php
Buscar:
Código: ( Seleccionar Todo )
/** NOTICIAS **/
} elseif($action == 'news'){Arriba agregar:
Código: ( Seleccionar Todo )
/** REFERIDOS by tutan-kabron**/
} elseif($action == 'referidos'){
if(empty($act)) $smarty->assign("tsReferidos",$tsAdmin->getReferidos());
elseif($act == 'borrar'){
if($tsAdmin->delReferido()) $tsCore->redirectTo($tsCore->settings['url'].'/admin/referidos?borrar=true');
}En inc --> php --> ajax --> ajax.registro.php
Buscar:
Código: ( Seleccionar Todo )
case 'registro-geo':Arriba agregar:
Código: ( Seleccionar Todo )
case 'registro-check-referido':
//<---
echo $tsReg->checkUserEmail2();
//--->
break;Buscar:
Código: ( Seleccionar Todo )
'registro-check-nick' => array('n' => 1, 'p' => ''),Debajo agregar:
Código: ( Seleccionar Todo )
'registro-check-referido' => array('n' => 1, 'p' => ''),En themes --> default --> templates --> t.php_files --> p.registro.form.tpl
Buscar:
Código: ( Seleccionar Todo )
<div class="form-line">
<label for="email">E-mail</label>
<input name="email" type="text" id="email" tabindex="4" title="Ingresa tu dirección de email" onfocus="registro.focus(this)" onblur="registro.blur(this)" onkeydown="registro.clear_time(this.name)" onkeyup="registro.set_time(this.name)" autocomplete="off" /> <div class="help"><span><em></em></span></div>
</div>Debajo agregar:
Código: ( Seleccionar Todo )
<div class="form-line">
<label for="referido">Ingresa tu referido (opcional)</label>
<input name="referido" type="text" id="referido" tabindex="1" title="Ingrese el nick del referido" onfocus="registro.focus(this)" onblur="registro.blur(this)" onkeydown="registro.clear_time(this.name)" onkeyup="registro.set_time(this.name)" autocomplete="off" /> <div class="help"><span><em></em></span></div>
</div>En themes --> default --> js --> registro.js
Buscar:
Código: ( Seleccionar Todo )
//Un elemento pierde el foco
blur: function(el) {
var name = $(el).attr('name');
switch (name) {
case 'nick':
case 'email':
this.clear_time(name);
$(el).removeClass('selected');
this.check_campo(el, false, true);
break;
default:
$(el).removeClass('selected');
this.check_campo(el, false, true);
break;
}
},Reemplazar por:
Código: ( Seleccionar Todo )
//Un elemento pierde el foco
blur: function(el){
var name = $(el).attr('name');
switch(name){
case 'nick':
case 'referido':
case 'email':
this.clear_time(name);
$(el).removeClass('selected');
this.check_campo(el, false, true);
break;
default:
$(el).removeClass('selected');
this.check_campo(el, false, true);
break;
}
},Buscar:
Código: ( Seleccionar Todo )
/* password */
case 'password':Arriba agregar:
Código: ( Seleccionar Todo )
/* referido by tutan-kabron */
case 'referido':
//Si ya paso por aca y no hubieron cambios, devuelvo el mismo status
if(!force_check && this.datos[campo] === value)
if(this.datos_status[campo]=='empty')
return no_empty ? this.show_status(el, this.datos_status[campo], this.datos_text[campo]) : this.hide_status(el, this.datos_status[campo], this.datos_text[campo]);
else
return this.show_status(el, this.datos_status[campo], this.datos_text[campo]);
//Almaceno el dato
this.datos[campo] = value;
//Caracteres validos
if(/[^a-zA-Z0-9_]/.test(value))
return this.show_status(el, 'error', 'Sólo se permiten letras, nómeros y guiones(_)');
//Compruebo si ya esta en uso
//Compruebo el Cache
var value_lower = value.toLowerCase();
if(!this.cache[campo]){
this.cache[campo] = new Array();
this.cache[campo][value_lower] = new Array();
}else if(this.cache[campo][value_lower]){
if(this.cache[campo][value_lower]['status'])
return registro.show_status(el, 'ok', this.cache[campo][value_lower]['text']);
else
return registro.show_status(el, 'error', this.cache[campo][value_lower]['text']);
}
this.show_status(el, 'loading', 'Comprobando referido...');
$('#loading').fadeIn(250);
$.ajax({
type: 'POST',
url: global_data.url + '/registro-check-referido.php?t=nombre de usuario',
data: 'referido='+value,
success: function(h){
registro.cache[campo][value_lower] = new Array();
registro.cache[campo][value_lower]['text'] = h.substring(3);
switch(h.charAt(0)){
case '0': //Estaba en uso
registro.cache[campo][value_lower]['status'] = true;
registro.show_status(el, 'ok', h.substring(3));
break;
case '1': //No esta en uso
registro.cache[campo][value_lower]['status'] = false;
registro.show_status(el, 'error', h.substring(3));
break;
}
$('#loading').fadeOut(350);
},
error: function(){
registro.show_status(el, 'error', 'Hubo un error al intentar procesar lo solicitado');
registro.datos[campo] = '';
}
});
break;
/* termina campo referido */Buscar:
Código: ( Seleccionar Todo )
/*
getNoticias()
*/
function getNoticias()
{Arriba agregar:
Código: ( Seleccionar Todo )
/*
getReferidos()
*/
function getReferidos()
{
//
$query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT u.user_id, u.user_name, r.* from referidos AS r LEFT JOIN u_miembros AS u ON r.user_referido = u.user_name ORDER BY r.id DESC');
$data = result_array($query);
//
return $data;
}
/*
getReferido()
*/
function getReferido()
{
global $tsCore;
//
$id = $tsCore->setSecure($_GET['id']);
//
$query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT `id`, `user_name`, `user_referido`, `fecha` FROM referidos WHERE id = \'' .
(int)$id . '\' LIMIT 1');
$data = db_exec('fetch_assoc', $query);
//
return $data;
}
/*
deReferidos();
*/
function delReferido()
{
$id = $_GET['id'];
if (!db_exec('num_rows', db_exec(array(__FILE__, __LINE__), 'query', 'SELECT `id` FROM `referidos` WHERE `id` = \'' .
(int)$id . '\' LIMIT 1'))) {
return 'El id ingresado no existe.';
}
$query = db_exec(array(__FILE__, __LINE__), 'query', 'DELETE FROM `referidos` WHERE `id` = \'' . (int)$id . '\'');
}themes --> default --> templates --> t.admin.tpl
Buscar:
Código: ( Seleccionar Todo )
{/if}Arriba agregar:
Código: ( Seleccionar Todo )
{elseif $tsAction == 'referidos'}
{include file='admin_mods/m.admin_referidos.tpl'}themes --> default --> templates --> admin_mods --> m.admin_configs.tpl
Buscar:
Código: ( Seleccionar Todo )
<dl>
<dt>
<label for="ai_max_com">Comentarios por post:</label>
<br /><span>Número máximo de comentarios por página en los post.</span></dt>
<dd>
<input type="text" id="ai_max_com" name="max_com" style="width:10%" maxlength="3" value="{$tsConfig.c_max_com}" />
</dd>
</dl>Arriba agregar:
Código: ( Seleccionar Todo )
<dl>
<dt><label for="p_p_refs">Puntos por referido</label><br /><span>Puntos que recibira como bonificacion un user al subir un posts.</span></dt>
<dd><input type="text" id="p_p_refs" name="p_p_refs" style="width:10%" maxlength="3" value="{$tsConfig.p_p_refs}" /></dd>
</dl>themes --> default --> templates --> admin_mods --> m.admin_sidemenu.tpl
Al final agregar esto:
Código: ( Seleccionar Todo )
<h4>Utilidades</h4>
<ul class="cat-list">
<li id="a_users"><span class="cat-title"><a href="{$tsConfig.url}/admin/referidos">Referidos</a></span></li>
</ul>themes --> default --> templates --> modules --> m.perfil_headinfo.tpl
Buscar:
Código: ( Seleccionar Todo )
<li>
<strong>{$tsInfo.stats.user_comentarios}</strong>
<span>Comentarios</span>
</li>Debajo agregar:
Código: ( Seleccionar Todo )
<li>
<strong>{$tsInfo.user_referidos}</strong>
<span>Referidos</span>
</li>Y suben esta carpeta:
Mega
Googe drive
Mediafire
Debes agradecer para ver el contenido...
Us2r3pruebas
sdrfhM?gh567?gbsj
Creditos: Debes agradecer para ver el contenido...


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