¡Bienvenido a PHPost!

Para participar en el foro, descargar complementos y acceder al chat, necesitas una cuenta activa.

Descarga Risus Nova 2.0 para comenzar tu comunidad (ACT-15/06/2026) .

Regístrate Descargar Risus Nova

¿Ya tienes cuenta? Inicia sesión aquí

Últimos temas

Estadísticas del foro
  • Mensajes del foro:1,957
  • Temas del foro:614
  • Miembros:1,036
  • Último miembro:carlos007r


Enviado por: Tronlar
05-27-2026, 01:53 PM
Foro: Terminados
- Sin respuestas

Sistema de Encuestas en Posts v1.0
Nuevo módulo para Risus Nova 2.0 — PHPost


Sistema de Encuestas en Posts v1.0 para Risus Nova 2.0: el Sistema de Encuestas en Posts. Al crear un post puedes añadir una encuesta opcional con hasta 8 opciones. Los usuarios votan directamente desde el post y los resultados se actualizan en tiempo real sin recargar la página.


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]
 
[img]Registrate o inicia tu sesión para ver este contenido[/img]


📊 ¿Qué incluye?
 
  • Encuesta opcional al crear cualquier post
  • Hasta 8 opciones por encuesta
  • Duración configurable — se puede poner fecha de cierre o sin límite
  • Resultados en tiempo real con barras de progreso animadas
  • Anti-doble voto por usuario y por IP
  • Los usuarios no registrados ven los resultados pero no pueden votar
  • Encuestas cerradas siguen mostrando resultados
  • Al votar el formulario se transforma en resultados sin recargar
 


🛠️ Instalación

Paso 1 — Ejecutar el instalador

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

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


Pulsa Instalar ahora. El instalador creará 3 tablas:
  • p_encuestas — encuestas ligadas a posts
  • p_encuestas_opciones — opciones de cada encuesta
  • p_encuestas_votos — registro de votos por usuario e IP

⚠️ Elimina la carpeta install/ del servidor cuando termine.

Paso 2 — Subir los archivos
 
Código:
inc/class/c.encuestas.php          →  inc/class/
inc/php/ajax/ajax.encuesta.php     →  inc/php/ajax/
themes/default/css/encuesta.css   →  themes/default/css/
themes/default/templates/modules/m.encuesta.tpl      →  themes/default/templates/modules/
themes/default/templates/modules/m.encuesta_form.tpl →  themes/default/templates/modules/

Paso 3 — c.posts.php

Abre inc/class/c.posts.php y busca el return $postID; al final de la función newPost(). Añade justo antes:
 
Código:
// ── Encuesta ──
if (!empty($_POST['enc_pregunta']) && !empty($_POST['enc_opciones'])) {
    require_once TS_CLASS . 'c.encuestas.php';
    $tsEncObj = new tsEncuestas();
    $tsEncObj->crearEncuesta(
        $postID,
        $_POST['enc_pregunta'],
        $_POST['enc_opciones'],
        (int)($_POST['enc_expira_dias'] ?? 0)
    );
}
// ────────────
return $postID;


Paso 4 — posts.php

Abre inc/php/posts.php y busca:
 
Código:
// PAGINAS
$total = $tsPost['post_comments'];

Añade justo antes:
 
Código:
// ── Encuesta ──
require_once TS_CLASS . 'c.encuestas.php';
$tsEncObj   = new tsEncuestas();
$tsEncuesta = $tsEncObj->getEncuesta($tsPost['post_id']);
if ($tsEncuesta && !empty($tsEncuesta['opciones'])) {
    foreach ($tsEncuesta['opciones'] as &$op) {
        $op['pct'] = $tsEncuesta['total_votos'] > 0
            ? round($op['votos'] / $tsEncuesta['total_votos'] * 100, 1)
            : 0;
    }
    unset($op);
}
$ip         = $tsCore->getIP();
$tsYaVoto   = $tsEncuesta ? $tsEncObj->yaVoto($tsEncuesta['enc_id'], $tsUser->uid, $ip) : false;
$tsMiOpcion = $tsEncuesta ? $tsEncObj->opcionVotada($tsEncuesta['enc_id'], $tsUser->uid, $ip) : 0;
$smarty->assign('tsEncuesta',  $tsEncuesta);
$smarty->assign('tsYaVoto',    $tsYaVoto);
$smarty->assign('tsMiOpcion',  $tsMiOpcion);
// ────────────


Paso 5 — Mostrar la encuesta en el post

Abre themes/default/templates/modules/m.posts_content.tpl y busca:
 
Código:
<div class="compartir-risus-banner">

Añade justo antes:
 
Código:
{include file='modules/m.encuesta.tpl'}


Paso 6 — Formulario al crear un post

Abre themes/default/templates/modules/m.agregar.form.tpl y busca el bloque de opciones de publicación (donde está el checkbox de "Solo usuarios registrados"). Añade después del cierre de ese bloque:

 
Código:
{include file='modules/m.encuesta_form.tpl'}


Paso 7 — Borrar la caché

Borra el contenido de la carpeta /cache/ del sitio.


🗑️ Desinstalar
 
Código:
DROP TABLE IF EXISTS p_encuestas;
DROP TABLE IF EXISTS p_encuestas_opciones;
DROP TABLE IF EXISTS p_encuestas_votos;


Elimina los archivos subidos y quita los hooks añadidos en los pasos 3, 4, 5 y 6.

 
Descarga
http://Registrate o inicia tu sesión par...0.rar/file

http://Registrate o inicia tu sesión par... contenido




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

Imprimir


Enviado por: Tronlar
05-26-2026, 08:25 PM
Foro: Terminados
- Respuestas (1)

Tienda de Puntos v1.0
Nuevo módulo para Risus Nova 2.0 — PHPost


Primer complemento oficial para Risus Nova 2.0: la Tienda de Puntos. Permite a los usuarios gastar sus puntos acumulados en mejoras para su perfil y sus posts.


🛒 ¿Qué incluye?
 
  • Cambio de nick — Los usuarios pueden cambiar su nombre una vez cada 30 días.
  • Título personalizado — Un texto exclusivo que aparece bajo el nick en comentarios y perfil.
  • Color de nombre — Personaliza el color del nick con cualquier color hexadecimal.
  • Marco de avatar — Añade un marco especial alrededor del avatar.
  • Destacar post 24h — El post aparece destacado en la portada durante 24 horas.
  • Post fijado 48h — El post queda fijado en su categoría durante 48 horas.
  • Subir de rango — Sube al siguiente rango sin necesidad de acumular más puntos.
  • Medallas — Obtén medallas exclusivas para el perfil.
 


📋 Requisitos
 
  • Risus Nova 2.0 instalado y funcionando
  • PHP 8.0+
  • MySQL 5.7+ / MariaDB 10.4+
 


🛠️ Instalación

Paso 1 — Ejecutar el instalador

Sube la carpeta install/ del ZIP a la raíz de tu sitio y accede a:
 
Código:
Registrate o inicia tu sesión para ver este contenido

Pulsa Instalar ahora. El instalador creará automáticamente:
  • Tabla w_tienda — catálogo de artículos
  • Tabla w_tienda_compras — historial de compras
  • Columnas nuevas en u_miembros: user_title, user_name_color, user_avatar_frame
  • Columnas nuevas en p_posts: post_featured, post_sticky_until
  • 8 artículos de ejemplo con precios predefinidos

⚠️ Elimina la carpeta install/ del servidor cuando termine.

Paso 2 — Subir los archivos
 
Código:
inc/class/c.tienda.php     →  inc/class/
inc/php/tienda.php         →  inc/php/
themes/default/css/tienda.css  →  themes/default/css/
themes/default/t.tienda.tpl            →  themes/default/templates/
themes/default/t.tienda.historial.tpl  →  themes/default/templates/
themes/default/t.tienda.admin.tpl      →  themes/default/templates/
themes/default/t.tienda.admin.form.tpl →  themes/default/templates/

Paso 3 — Añadir el CSS en el header

Abre themes/default/templates/sections/main_header.tpl y añade esta línea junto al resto de CSS:
 
Código:
<link href="{$tsConfig.css}/tienda.css" rel="stylesheet" type="text/css">

Paso 4 — Añadir el enlace en el menú

Abre themes/default/templates/sections/head_menu.tpl y añade este elemento en el menú principal:
 
Código:
<li class="tabbed {if $tsPage == 'tienda'}here{/if}" id="tabbedtienda">
    <a title="Ir a la Tienda" onclick="menu('tienda', this.href); return false;" href="{$tsConfig.url}/tienda/">
        <i class="fa-solid fa-store"></i> Tienda
    </a>
</li>

Paso 5 — Borrar la caché

Borra el contenido de la carpeta /cache/ desde el panel de administración o desde el gestor de archivos del hosting.


⚙️ Gestionar los artículos

Accede como administrador a tudominio.com/tienda/?action=admin para:
  • Crear nuevos artículos
  • Editar precios y descripciones
  • Activar o desactivar artículos
 


🗑️ Desinstalar

Si quieres eliminar el complemento, ejecuta esto en phpMyAdmin:
 
Código:
DROP TABLE IF EXISTS w_tienda;
DROP TABLE IF EXISTS w_tienda_compras;
ALTER TABLE u_miembros DROP COLUMN user_title;
ALTER TABLE u_miembros DROP COLUMN user_name_color;
ALTER TABLE u_miembros DROP COLUMN user_avatar_frame;
ALTER TABLE p_posts DROP COLUMN post_featured;
ALTER TABLE p_posts DROP COLUMN post_sticky_until;

Y elimina los archivos subidos en el paso 2.

 
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]


 
Descarga

Mediafire
http://Registrate o inicia tu sesión par... contenido

Google Drive
http://Registrate o inicia tu sesión par... contenido


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

Imprimir


Enviado por: Tronlar
05-26-2026, 07:43 PM
Foro: Noticias y Novedades
- Respuestas (2)

📦 Bienvenido a la sección de descargas
Lee esto antes de descargar o instalar cualquier archivo.


¿Qué puedes descargar aquí?

En esta sección encontrarás todas las descargas oficiales de Risus Nova, el script basado en PHPost, incluyendo:
 
  • Versiones completas del script listas para instalar
  • Actualizaciones y parches para instalaciones existentes
  • Complementos oficiales verificados y compatibles con la versión actual
 


✅ Descargas disponibles
   


⚠️ Aviso sobre mods de terceros

PHPost no se hace responsable de ningún problema causado por la instalación de complementos obtenidos fuera de este foro o de phpost.es.

Los complementos son archivos PHP que se ejecutan en tu servidor con acceso completo a tu base de datos. Un complemento mal desarrollado puede comprometer la seguridad de tu sitio, corromper datos o romper funcionalidades existentes.

Los complementos publicados en este foro han sido revisados por el equipo de PHPost y son compatibles con Risus Nova 2.0, PHP 8.3 y Smarty 4.5.6. Los complementos de fuentes externas no tienen ninguna garantía.



📋 Antes de instalar cualquier cosa
 
  • Haz siempre una copia de seguridad de tu base de datos y archivos antes de instalar o actualizar
  • Comprueba que la versión del complemento es compatible con tu versión del script
  • Si tienes dudas, pregunta en el foro de Ayuda y Soporte antes de instalar
  • Prueba primero en un entorno de desarrollo si es posible
 


🐛 ¿Algo no funciona?

Si encuentras un error después de instalar algo de esta sección, abre un hilo en Ayuda y Soporte indicando:
 
  • Qué instalaste y desde dónde lo descargaste
  • Qué error aparece exactamente
  • Qué versión de PHP tiene tu servidor
  • Si el error apareció justo después de la instalación
 


📌 Condiciones de uso obligatorias

El uso de Risus Nova está sujeto a las siguientes condiciones. El incumplimiento de cualquiera de ellas supone la pérdida del derecho a soporte oficial.

1. Copyright obligatorio
El aviso de copyright en el pie de página de tu sitio es obligatorio y no puede ser eliminado ni modificado. Debe aparecer visible en todas las páginas:
 
Código:
Powered by PHPost
Eliminar o ocultar este aviso infringe los términos de uso del script.

2. Enlace a phpost.es obligatorio
El enlace a phpost.es que aparece en el pie de página junto al copyright debe mantenerse activo y visible. No puede ser eliminado, ocultado ni modificado para apuntar a otra dirección.

3. Usuario demo para soporte
Si necesitas soporte y el problema está relacionado con algo visible en tu web, deberás proporcionar un usuario de prueba (con permisos de usuario normal, no administrador) para que el equipo de PHPost pueda reproducir el problema. Sin acceso para verificar el error, no se puede garantizar soporte.

 
Gracias por usar Risus Nova.
phpost.es

Imprimir


Enviado por: Tronlar
05-26-2026, 02:30 PM
Foro: Descarga
- Respuestas (52)

Risus Nova 2.0.4 -- Novedades y Cambios
La actualizacion mas grande de PHPost en anos


Despues de meses de trabajo, presentamos Risus Nova 2.0.4, con nuevas funciones, sistema de email SMTP, soporte por tickets, Zona VIP y muchas mas mejoras.


NOVEDADES 2.0.4


EMAIL SMTP (PHPMailer)

El sistema de email ha sido completamente reescrito con PHPMailer. Los correos de registro, activacion y recuperacion de contrasena se envian de forma fiable desde cualquier hosting.

Se configura desde Admin - Configuracion en la nueva seccion "Configuracion de Email". Compatible con Gmail, Outlook, Yahoo y el email del propio hosting. Incluye boton de prueba de envio desde el panel y templates de email modernos en HTML.



SOPORTE POR TICKETS (Complemento - instalación aparte)

Sistema completo de soporte en /soporte/ con:
  • Prioridades: baja, media, alta, urgente
  • Categorias: tecnico, cuenta, contenido, pagos, otro
  • Estados: abierto, en proceso, resuelto, cerrado
  • Panel admin con estadisticas, filtros y tabla con avatar del usuario que envio el ticket
  • Chat estilo mensajeria en la vista del ticket
  • Notificacion automatica al usuario cuando el admin responde
  • Valoracion del ticket por el usuario (resuelto / sin resolver)


ZONA VIP (Complemento - instalación aparte)

Pagina exclusiva /vip/ con contenido solo para miembros VIP:
  • Panel admin para asignar VIP manual o por rango, con fecha de expiracion
  • Posts VIP -- excluidos de la home y tops, solo visibles para VIPs
  • Badge dorado en el perfil de usuarios VIP
  • Notificacion automatica al asignar acceso VIP
  • Compatible sin instalar -- detecta automaticamente si el mod esta activo


LOGIN Y REGISTRO EN PAGINAS DEDICADAS

Paginas /login/ y /registro/ con diseno moderno estilo carta aerea en dos columnas. El registro es en 3 pasos (Cuenta, Perfil, Confirmar) con validacion en tiempo real de usuario y email.



FILTROS Y MEJORAS EN POSTS
  • Filtro de posts por pais del autor con banderas
  • Filtro de posts por inicial del titulo (A-Z, 0-9)
  • Buscador con 3 pestanas: Posts, Comunidades y Google
  • Meta description dinamica -- slogan en home, extracto del post en posts individuales
  • Lazy loading automatico en imagenes de posts
  • Subida de imagenes en CKEditor 5 via upload_images.php


SISTEMA EN VIVO (Complemento - instalación aparte)

Feed de actividad en tiempo real en /en-vivo/ con posts, comentarios, comunidades y nuevos usuarios. Widget en la columna lateral de la home.



ESTRELLAS DE REPUTACION

Sistema de estrellas con Font Awesome 7. Niveles Normal y Premium con colores diferenciados. Detecta automaticamente Administrador y Moderador por rango.



PARCHE 2.0.4 -- SEGURIDAD


- Headers HTTP de seguridad en header.php: X-Frame-Options, X-Content-Type-Options, X-XSS-Protection, Referrer-Policy, Permissions-Policy y HSTS

- Cookies de sesion protegidas con flags httponly y samesite=Lax

- Rate limiting en login: maximo 5 intentos por nick y 10 por IP en 10 minutos

- Clase tsSeguridad con prepared statements, sanitizacion mejorada y tokens CSRF

- getIP() corregido: no acepta HTTP_CLIENT_IP falsificable

- X_FORWARDED_FOR corregido en c.posts.php, c.fotos.php, c.cuenta.php y c.mensajes.php

- Inputs sin sanitizar corregidos en c.mensajes.php

- Contrasenas limitadas a 72 caracteres en c.cuenta.php para evitar DoS por bcrypt

- XSS corregido en ajax.borradores.php



PHP 8.3

Script completamente adaptado para PHP 8.3+. Corregidos todos los errores de tipado estricto, propiedades nulas, funciones obsoletas y avisos.



Smarty 4.5.6

Motor de plantillas actualizado de Smarty 2 a Smarty 4.5.6. Compilacion mas eficiente y cache mejorada.



Seguridad
  • Contrasenas migradas de MD5 a bcrypt. Migracion automatica al iniciar sesion.
  • Cloudflare Turnstile en lugar de reCaptcha.
  • Correcciones en manejo de sesiones y cookies.


CKEditor 5 -- editor moderno con subida de imagenes integrada.


Font Awesome 7 -- mas de 4.500 iconos nuevos.


SEO -- Sitemap XML

Sitemap dinamico en /sitemap.xml con posts, categorias y perfiles. Registralo en Google Search Console.



Instalador nuevo

Proceso en 6 pasos con diseno moderno y deteccion automatica del entorno.



Notas de actualizacion desde 2.0.x

1. Sube todos los archivos al servidor
2. Ejecuta el upgrade desde /upgrade/
3. Sube la carpeta inc/ext/phpmailer/ (3 archivos)
4. Ejecuta en phpMyAdmin:

 
Código PHP:
ALTER TABLE w_configuracion
  ADD COLUMN 
IF NOT EXISTS smtp_host varchar(120NOT NULL DEFAULT '',
  
ADD COLUMN IF NOT EXISTS smtp_user varchar(120NOT NULL DEFAULT '',
  
ADD COLUMN IF NOT EXISTS smtp_pass varchar(120NOT NULL DEFAULT '',
  
ADD COLUMN IF NOT EXISTS smtp_port smallint(5NOT NULL DEFAULT 587,
  
ADD COLUMN IF NOT EXISTS smtp_from varchar(120NOT NULL DEFAULT '';

CREATE TABLE IF NOT EXISTS u_vip (
  
vip_id int(11NOT NULL AUTO_INCREMENT,
  
user_id int(11NOT NULL,
  
vip_tipo tinyint(1NOT NULL DEFAULT 1,
  
vip_inicio int(11NOT NULL DEFAULT 0,
  
vip_expira int(11NOT NULL DEFAULT 0,
  
vip_notas varchar(255NOT NULL DEFAULT '',
  
vip_admin int(11NOT NULL DEFAULT 0,
  
PRIMARY KEY (vip_id),
  
UNIQUE KEY user_id (user_id)
ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE IF NOT EXISTS u_vip_rangos (
  
vr_id int(11NOT NULL AUTO_INCREMENT,
  
rango_id int(11NOT NULL,
  
PRIMARY KEY (vr_id),
  
UNIQUE KEY rango_id (rango_id)
ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

ALTER TABLE p_posts ADD COLUMN IF NOT EXISTS post_vip tinyint(1NOT NULL DEFAULT 0;

CREATE TABLE IF NOT EXISTS s_tickets (
  
ticket_id int(11NOT NULL AUTO_INCREMENT,
  
user_id int(11NOT NULL,
  
asunto varchar(120NOT NULL DEFAULT '',
  
categoria varchar(30NOT NULL DEFAULT 'tecnico',
  
prioridad tinyint(1NOT NULL DEFAULT 2,
  
estado tinyint(1NOT NULL DEFAULT 1,
  
fecha int(11NOT NULL DEFAULT 0,
  
fecha_update int(11NOT NULL DEFAULT 0,
  
leido_admin tinyint(1NOT NULL DEFAULT 0,
  
leido_user tinyint(1NOT NULL DEFAULT 1,
  
valoracion tinyint(1NOT NULL DEFAULT 0,
  
PRIMARY KEY (ticket_id)
ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE IF NOT EXISTS s_mensajes (
  
msg_id int(11NOT NULL AUTO_INCREMENT,
  
ticket_id int(11NOT NULL,
  
user_id int(11NOT NULL,
  
cuerpo text NOT NULL,
  
es_admin tinyint(1NOT NULL DEFAULT 0,
  
fecha int(11NOT NULL DEFAULT 0,
  
PRIMARY KEY (msg_id)
ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE IF NOT EXISTS w_login_attempts (
  
id int(11NOT NULL AUTO_INCREMENT,
  
ip varchar(45NOT NULL DEFAULT '',
  
nick varchar(50NOT NULL DEFAULT '',
  
fecha int(11NOT NULL DEFAULT 0,
  
PRIMARY KEY (id)
ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

ALTER TABLE p_posts ADD FULLTEXT KEY ft_tags (post_tags);
ALTER TABLE p_posts ADD FULLTEXT KEY ft_title_body (post_titlepost_body); 

5. Borra las carpetas /cache/ y /templates_c/
6. Configura el SMTP en Admin - Configuracion



Requisitos del servidor


PHP
  • Version minima: PHP 8.0
  • Version recomendada: PHP 8.2 o superior

Extensiones obligatorias:
  • mysqli -- base de datos
  • mbstring -- codificacion de texto
  • gd -- procesamiento de imagenes
  • curl -- peticiones HTTP externas
  • json -- formato de datos
  • session -- sesiones de usuario
  • fileinfo -- deteccion de tipo de archivo
  • openssl -- seguridad y cifrado

Configuracion recomendada:
Código:
allow_url_fopen = On
upload_max_filesize = 8M
post_max_size = 8M
max_execution_time = 60


Base de datos
  • MySQL 5.7 o superior
  • MariaDB 10.4 o superior


Servidor web
  • Apache con mod_rewrite activado (necesario para las URLs amigables)
  • O Nginx con configuracion equivalente de rewrite


Permisos de escritura

Las siguientes carpetas deben tener permisos de escritura (666 o 777):
Código:
/cache/
/files/avatar/
/files/images/
/files/uploads/
/files/posts/
/config.inc/


La mayoria de hostings compartidos actuales cumplen estos requisitos. Consulta la Guia de hostings compatibles en el foro si tienes dudas.

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

[img]Registrate o inicia tu sesión para ver este contenido[/img]
 
DEMO
http://Registrate o inicia tu sesión par... contenido

Descarga

Mediafire
http://Registrate o inicia tu sesión par... contenido

Google Drive
http://Registrate o inicia tu sesión par... contenido

Tienes dudas o encuentras algun problema? Dejalo en los comentarios.

Imprimir


Enviado por: Miguel92
05-24-2026, 04:28 PM
Foro: Noticias y Novedades
- Sin respuestas

Continuaré trabajando en PHPost v4 corrigiendo y normalizando el código, completando las secciones pendientes y eliminando progresivamente el código legacy que aún se mantiene por compatibilidad.

Sobre Nueva etapa del proyecto: Refactorización completa:
- El proyecto va a continuar, pero con un enfoque diferente. La idea no es convertirlo en otro clon dentro del mismo formato, sino tomar la base conceptual y orientarlo hacia una propuesta más flexible y distinta, más cercana a un formato tipo blog/comunidad de contenido que a una réplica tradicional.

Imprimir


Enviado por: Tronlar
05-10-2026, 09:28 PM
Foro: Noticias y Novedades
- Respuestas (26)

He realizado una actualización importante del CMS PHPPost para adaptarlo a tecnologías actuales y mejorar tanto la estabilidad como la compatibilidad futura del sistema.

Entre los principales cambios realizados se encuentran:

  • Actualización completa a PHP 8.X.X
  • Integración de CKEditor 5 como nuevo editor visual
  • Migración y adaptación a Smarty
  • Corrección de errores heredados y mejoras internas del núcleo

Esta actualización no ha sido únicamente un cambio de versión, sino una modernización general del sistema para garantizar un mejor rendimiento, mayor seguridad y compatibilidad con servidores actuales.

¿Qué se ha mejorado?
Compatibilidad con PHP 8.X.X

El CMS ahora funciona sobre una versión moderna de PHP, eliminando funciones obsoletas y adaptando el código a los nuevos estándares del lenguaje. Esto permite:
  • Mayor velocidad de ejecución
  • Mejor gestión de memoria
  • Más seguridad
  • Compatibilidad con hosting actuales y futuros

Además, se han corregido numerosos avisos, warnings y errores que aparecían en versiones recientes de PHP.

Nuevo editor CKEditor 5

Se ha sustituido el antiguo editor por CKEditor 5, ofreciendo:
  • Interfaz más moderna
  • Mejor compatibilidad con navegadores actuales
  • Edición más estable
  • Mejor experiencia al crear publicaciones y contenido

También se han adaptado funciones internas relacionadas con la subida de imágenes y la edición avanzada de textos.

Actualización de Smarty a la versión 5.8.0
 El motor de plantillas Smarty ha sido actualizado y adaptado completamente para mejorar:
  • Rendimiento del sistema de plantillas
  • Seguridad en la renderización
  • Compatibilidad con PHP moderno
  • Organización interna del código

Durante el proceso se corrigieron múltiples incompatibilidades heredadas de versiones antiguas.
Correcciones y mejoras generales


Además de las actualizaciones principales, también se realizaron múltiples ajustes internos:
  • Corrección de errores históricos
  • Optimización de consultas y procesos
  • Limpieza de código legado
  • Mejoras de estabilidad
  • Compatibilidad general con entornos modernos
  • Nace Risus Nova 2.0

Con esta nueva etapa, el proyecto pasa a llamarse:

Risus Nova 2.0

El objetivo es mantener vivo el CMS, modernizarlo y convertirlo en una plataforma más sólida, rápida y preparada para seguir evolucionando durante los próximos años.
La comunidad también forma parte del proyecto.
Me gustaría conocer vuestra opinión y saber qué os gustaría ver en futuras versiones de Risus Nova 2.0.



Algunas ideas que ya tengo en mente son:
  • Mejoras visuales y responsive
  • Sistema de plugins
  • Panel de administración modernizado
  • Mejor SEO
  • API REST
  • Mejor sistema de usuarios y permisos
  • Optimización de rendimiento
  • Nuevas funciones sociales

Pero también quiero escuchar a la comunidad.

¿Qué funcionalidades os gustaría que tuviera?
¿Qué mejoraríais del CMS?
¿Qué echáis en falta actualmente?

Toda sugerencia, idea o reporte es bienvenida y ayudará a seguir mejorando el proyecto.


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

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

Imprimir


Enviado por: Miguel92
05-01-2026, 05:46 PM
Foro: Actualizaciones
- Respuestas (10)

Hola, como dice el titulo es Cerberus V4 estoy haciendo una actualización integral del proyecto, enfocada en modernizar la base del código, mejorar la organización interna y optimizar el rendimiento, manteniendo compatibilidad con PHP 8.3 y 8.4 sin requerir cambios disruptivos.
Le puse V4, porque en el foro esta el "v3" y como cambia algunas cosas como directorios, funciones esto puede llegar a romper un poco la compatibilidad y se modifica como es internamente, por eso será v4.0.0 (x.y.z)

X (Versión Mayor - Major): Indica cambios mayores, a menudo incompatibles con las versiones anteriores (breaking changes).
Ejemplo: De 1.5.0 a 2.0.0.

Y (Versión Menor - Minor): Indica la adición de nuevas funcionalidades, pero compatible con versiones anteriores.
Ejemplo: De 1.5.0 a 1.6.0.

Z (Versión Parche - Patch): Indica correcciones de errores (bugs) o mejoras internas que no alteran la funcionalidad ni rompen compatibilidad.
Ejemplo: De 1.5.0 a 1.5.1.

Cambios en el core del script

  • Reestructuración general del código para mejorar claridad, mantenimiento y escalabilidad.
  • Incorporación de handlers para centralizar lógica y evitar redundancias.
  • Implementación progresiva de un sistema de assets para la gestión de recursos globales.
  • Creación del directorio cerberus/ destinado a configuraciones del sistema.
  • Generación automática del directorio storage/, que centraliza: avatar/, uploads/, logs/, cache/, entre otros.
  • Reemplazo de functions.php por connection.php, incorporando nuevos helpers que simplifican la interacción con la base de datos.

Stack y mejoras técnicas
  • PHP 8.5 (compatible con 8.3 y 8.4, espero que lo sea Big Grin)
  • Smarty 5.8
Durante esta actualización se incorporaron mejoras progresivas en distintas áreas del sistema:
  • Adopción de tipado en funciones y parámetros para mayor robustez.
  • Inicio de implementación de estándares PSR-4 (autoloading) y PSR-5 (documentación).
  • Inicio de implementación de PSR-4 (autoloading) y adopción parcial de convenciones inspiradas en PSR-5/PHPDoc para documentación.
  • Refactorización de la capa de base de datos:
    • Reubicación y renombrado de database.phpDatabase.Collection.php.
    • Mejora en la creación y optimización de tablas.
  • Eliminación de código innecesario y refactorización de funciones existentes.
  • Reorganización general de directorios y archivos del proyecto.
  • Ajustes en el proceso de instalación y configuración inicial.
Con respecto al PSR-4 no es que va a tener un directorio llamado "vendor", ni que tengan que usar composer, es solamente una manera de escribir el código, al que aplicando un namespace se podrá usar el autoloading. 
Cita:Aclaración: PSR-5 nunca fue aceptado oficialmente por PHP-FIG. Quedó como draft/propuesta y nunca pasó a estándar final, por lo que actualmente se toma más como una referencia/documentación basada en PHPDoc que como un estándar oficial.

Theme (Default) 
El sistema de temas fue rediseñado con un enfoque más moderno y flexible:
  • Eliminación de código innecesario y refactorización general.
  • Reescritura completa del CSS utilizando variables, permitiendo mayor personalización.
  • Actualización de dependencias:
    • jQuery 4.0.0
    • Font Awesome 7
  • Optimización de fuentes mediante el uso de woff2.
  • Implementación de plugins para:
    • Carga automática del <head>
    • Inclusión dinámica de archivos CSS y JS
  • Rediseño del theme base desde cero.
Personalización visual (nuevos modos y colores)
  • Modos de tema disponibles:
    • Light
    • Dim
    • Dark
    • Midnight
    • Soft
    • High Contrast
  • Paletas de color:
    • Ocean
    • Forest
    • Violet
    • Slate
    • Coral
    • Emerald
    • Crimson
    • Amber
Porque lo hago? Así mientras hago esto, me da nuevas ideas que podría llegar a implementar en PHPost el script que estaré actualizando de tal forma que no será compatible con los que ya existen.

Si lo quieren probar, les paso una copia, obviamente le falta mucho apenas esta siendo iniciado y tampoco me estoy enfocando tanto como debería. Se instala bien, y lo único que funciona es el login, tengo que hacer todo lo demás. Asi de esta forma cualquier error que tengan en la instalación u otro tipo de problemas me lo puedan hacer saber.

12.05.2026
Se añadió enlace hacia la demo, aunque con algunas rutas tiene problemas (puede ser por el hosting)
DEMO CERBERUS V4

14.05.2026
Corregí un problema en el manejo de IPs dentro de IPHandler.
La implementación anterior dependía de comparaciones sobre strings y podía ser engañada mediante representaciones alternativas de IP. Ahora las direcciones se normalizan usando inet_pton(), lo que mejora la validación y compatibilidad con IPv4/IPv6.

También ajusté el almacenamiento de IPs en base de datos.
Las tablas utilizaban previamente:
 
Código PHP:
VARBINARY(45

pero ese tamaño estaba basado en la representación textual de una IP y resultaba innecesario una vez que las direcciones comenzaron a normalizarse mediante inet_pton().

Ahora el almacenamiento fue migrado a:
 
Código PHP:
VARBINARY(16

ya que inet_pton() devuelve la representación binaria real:
  • IPv4 → 4 bytes
  • IPv6 → 16 bytes
Esto reduce espacio innecesario, evita inconsistencias derivadas de formatos textuales y mantiene compatibilidad completa con IPv4 e IPv6 usando una representación canónica binaria.
Cita:Lo debo aplicar a PHPost v4 y ZCode
 
[align=center][b][url=Registrate o inicia tu sesión para ver este contenido]DESCARGA DESDE MEGA (Versión *****]

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

Imprimir


Enviado por: Alanbal
04-22-2026, 08:53 PM
Foro: Presentaciones
- Respuestas (1)

Tenía visitando varias veces el sitio pero estaba cerrado, me lo recomendaron mucho, gracias por aceptarme

Imprimir


Enviado por: Miguel92
04-15-2026, 07:28 PM
Foro: Noticias y Novedades
- Respuestas (6)

Nueva etapa del proyecto: Refactorización completa

Después de mucho tiempo modificando este proyecto, he llegado a un punto donde necesito tomar una decisión importante sobre su futuro. He estado añadiendo funcionalidades, parcheando errores y haciendo mejoras incrementales, pero ha llegado el momento de dar un paso atrás y reestructurar todo desde sus cimientos.


La situación actual
Con el tiempo, el proyecto ha acumulado:
  • Código legacy que se arrastra desde versiones antiguas
  • Estructura de base de datos que no es óptima para las necesidades actuales
  • Arquitectura inconsistente con múltiples patrones mezclados
  • Complejidad innecesaria que dificulta el mantenimiento
  • Themes desactualizados que necesitan modernización
Todo esto hace que el proyecto sea más difícil de mantener, comprender y extender de lo que debería ser. (Como paso con ZCode V4 por el momento pausado)


El plan de refactorización
A partir de ahora, voy a enfocarme en:1. Base de datos
  • Rediseño completo del esquema
  • Normalización y optimización de tablas
  • Eliminación de campos obsoletos
  • Mejora en las relaciones entre entidades
2. Arquitectura del código
  • Reestructuración de clases y módulos
  • Implementación consistente de patrones de diseño
  • Separación clara de responsabilidades
  • Eliminación de dependencias circulares
3. Simplificación
  • Limpieza de código duplicado
  • Eliminación de funcionalidades no utilizadas
  • Refactorización de lógica compleja
  • Documentación mejorada (por verse, siempre me olvido)
4. Modernización
  • Aprovechamiento completo de características de PHP 8
  • Actualización de librerías y dependencias
  • Mejores prácticas de seguridad
  • Performance optimizada
5. Themes
  • Adaptación gradual de los themes existentes
  • Código más limpio y mantenible
  • Mejor estructura de componentes
  • Estilos más consistentes

Consideraciones importantes

Compatibilidad
No habrá compatibilidad hacia atrás durante este proceso. Los cambios en la base de datos y estructura del código romperán con versiones anteriores. Esto es necesario para poder hacer las mejoras que el proyecto necesita.

Estabilidad
Durante este período de transición:
  • Puede haber inestabilidad temporal
  • Algunas funcionalidades pueden estar temporalmente deshabilitadas
  • El proyecto puede volverse más pesado mientras migro componentes
Tiempo
Esta no es una tarea de días o semanas. Es un proceso que llevará tiempo hacer bien. Prefiero hacerlo correctamente que rápido.

El objetivo final
El objetivo de todo esto es tener un proyecto que sea:
Más comprensible - Código claro que cualquiera pueda entender
Más simple - Sin complejidad innecesaria ni código oscuro
Más mantenible - Fácil de actualizar y extender
Más robusto - Menos bugs, mejor manejo de errores
Más moderno - Aprovechando las mejores prácticas actuales
Mejor documentado - Para que otros puedan contribuir

Si quieres contribuir:
  • Espera a que la nueva estructura esté lista
  • Revisa la documentación nueva cuando esté disponible
  • Reporta issues si encuentras algo en las versiones de desarrollo
  • Ideas claramente no hace falta que contribuyas con código, reparaciones, etc... Puedes dar ideas nuevas.

Reflexión finalSé que romper compatibilidad nunca es una decisión fácil, pero a veces es necesario para poder avanzar. He aprendido mucho modificando este proyecto, y parte de ese aprendizaje es reconocer cuándo algo necesita ser rehecho correctamente en lugar de seguir parcheando.
Este es un compromiso con la calidad a largo plazo del proyecto. Puede que sea un camino difícil, pero al final tendremos algo mucho mejor.
Gracias por su comprensión y apoyo. 🙏

Última versión estable: http://Registrate o inicia tu sesión par... contenido (creo que podría ser este, es del 2022)
Última versión anterior estable: http://Registrate o inicia tu sesión par... contenido (este es del 2019 php 7)
Última versión desarrollo: http://Registrate o inicia tu sesión par... contenido (subido 15.04.26, no contiene las imágenes de categorías, tiene otras .svg)

Imprimir


Enviado por: moyo
03-22-2025, 06:44 PM
Foro: Ayuda y Soporte
- Respuestas (2)

Hola ¿cómo puedo mostrar la firma de usuario en la sección de fotos en particular en .m_fotos_ver_content ?

Imprimir