Phpost
COMPLEMENTOS Sistema de Referidos v1.0 - Versión para impresión

+- Phpost (https://phpost.es)
+-- Foro: Risus Nova 2.0 (https://phpost.es/forum-150.html)
+--- Foro: Complementos (https://phpost.es/forum-164.html)
+---- Foro: Terminados (https://phpost.es/forum-165.html)
+---- Tema: COMPLEMENTOS Sistema de Referidos v1.0 (/thread-989.html)



Sistema de Referidos v1.0 - Tronlar - 05-28-2026

Sistema de Referidos v1.0
Nuevo módulo para Risus Nova 2.0 — PHPost


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


Cada usuario tiene un enlace de invitación único. Cuando alguien se registra con ese enlace y activa su cuenta, el que invitó gana 10 puntos automáticamente y recibe una notificación.


🤝 Características
   


📋 Requisitos
   


🛠️ Instalación

Paso 1 — Ejecutar el instalador

Sube la carpeta install/ a la raíz y accede a:

 
Código:
Registrate o inicia tu sesión para ver este contenido

⚠️ Elimina la carpeta install/ cuando termine.


Paso 2 — Subir los archivos
 
Código:
inc/class/c.referidos.php                              →  inc/class/
themes/default/templates/modules/m.perfil_referidos.tpl →  themes/default/templates/modules/

Paso 3 — En c.registro.php

Buscar:
 
Código:
$tsData['user_id'] = db_exec('insert_id');

Añade justo después:
 
Código:
// ── Referidos ──
require_once TS_CLASS . 'c.referidos.php';
$ref_nick = isset($_SESSION['ref_nick']) ? $_SESSION['ref_nick'] : ($tsCore->setSecure($_GET['ref'] ?? '') ?: $tsCore->setSecure($_POST['ref'] ?? ''));
if (!empty($ref_nick)) {
    $tsRef = new tsReferidos();
    $tsRef->guardarReferido($tsData['user_id'], $ref_nick);
}
// ────────────────

Paso 4 — En c.user.php — userActivate()

Abre inc/class/c.user.php y busca dentro de userActivate() esta línea:
 
Código:
if(db_exec(array(__FILE__, __LINE__), 'query', 'UPDATE u_miembros SET user_activo = 1 WHERE user_id = \''.$tsUserID.'\'' )) {
    return $tsData;

Cambiar por:
 
Código:
if(db_exec(array(__FILE__, __LINE__), 'query', 'UPDATE u_miembros SET user_activo = 1 WHERE user_id = \''.$tsUserID.'\'' )) {
    require_once TS_CLASS . 'c.referidos.php';
    $tsRef = new tsReferidos();
    $tsRef->procesarActivacion((int)$tsUserID);
    return $tsData;

Esto cubre tanto la activación por email como la activación directa sin email.

Paso 5 — Guardar ref en sesión (header.php)

Al final de header.php añade:
 
Código:
// ── Guardar ref en sesión ──
if (!empty($_GET['ref'])) {
    $_SESSION['ref_nick'] = $tsCore->setSecure($_GET['ref']);
}
// ───────────────────────────

Paso 6 — Widget en el perfil

En perfil.php buscar:
Código PHP:
$smarty->assign("tsGeneral",$tsGeneral); 

Debajo agregar:
 
Código:
// ── Referidos ──
require_once TS_CLASS . 'c.referidos.php';
if ($tsUser->uid == $usuario['user_id']) {
    $tsRef = new tsReferidos();
    $ref_data = $tsRef->getReferidos($tsUser->uid);
    $ref_data['url'] = tsReferidos::getUrl($tsUser->nick);
    $ref_data['puntos_por_referido'] = tsReferidos::PUNTOS_POR_REFERIDO;
    $smarty->assign('tsReferidos', $ref_data);
}
// ────────────────

En m.perfil_sidebar.tpl añade donde quieras:
Código:
{include file='modules/m.perfil_referidos.tpl'}
 


⚙️ Configurar puntos

Los puntos por referido se configuran en inc/class/c.referidos.php:
Código:
const PUNTOS_POR_REFERIDO = 10;
 


🗑️ Desinstalar
 
Código:
DROP TABLE IF EXISTS u_referidos;

Elimina los archivos y quita los hooks añadidos.

 
Descarga

Mediafire
http://Registrate o inicia tu sesión para ver este contenido

Google Drive
http://Registrate o inicia tu sesión para ver este contenido



¿Tienes dudas o encuentras algún problema? Déjalo en los comentarios.