¡Bienvenido a PHPost!

Para participar en el foro, descargar complementos y acceder al chat, es necesario tener una cuenta activa. Regístrate con un correo válido para completar la activación.

⚖️ Aviso Legal y Normas de Contenido

PHPost.es es una comunidad dedicada al soporte, desarrollo y difusión de software libre para la creación y administración de comunidades en línea.

Compromiso con la legalidad: No se permite la publicación, promoción o distribución de software pirateado, contenido warez ni material que infrinja derechos de autor o cualquier otra normativa aplicable.

Responsabilidad: Cada usuario es responsable del contenido alojado en su propio sitio web y del uso que haga del software. Los administradores y desarrolladores de Risus Nova no controlan ni supervisan los servidores o contenidos gestionados por terceros.

⚠️ Aviso de seguridad

Risus Nova se distribuye únicamente a través de phpost.es, que es la fuente oficial del proyecto donde publicamos las versiones verificadas.

Recomendamos no utilizar copias obtenidas desde sitios de terceros, ya que podrían haber sido modificadas y no contar con la integridad del código original, lo que puede suponer riesgos de seguridad en la instalación.

Para garantizar una instalación segura y actualizada, descarga siempre la versión oficial desde el botón disponible en esta página.

Importante: No pediremos donaciones en ningún momento ni en ninguna plataforma (Ko-fi, PayPal, redes sociales u otras). Si encuentras campañas de donación que utilicen el nombre de Risus Nova o PHPost, no tienen ninguna relación con el proyecto.

🔄 Desarrollo activo

Risus Nova forma parte de una nueva etapa del proyecto PHPost, en evolución constante con mejoras, correcciones y nuevas funciones. Puedes seguir el progreso y los cambios oficiales a través del changelog y la comunidad.

Risus Nova 2.1 Estable Desarrollo activo Última actualización: 12/07/2026 Ver Demo Changelog 261 Desarrollo del tema: 75% (fase actual de desarrollo) Descargar
Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5

DESCARGAS Risus Nova 2.0 — Descarga, Novedades y Requisitos
#1

17
Mejor respuesta del mensaje Risus Nova 2.0 — Descarga, Novedades y Requisitos
Risus Nova 2.0.5 -- Novedades y Cambios
Retos de comunidad, autocompletado, menciones y mas mejoras


Presentamos Risus Nova 2.0.5 con el sistema de Retos de Comunidad, buscador con autocompletado predictivo, menciones en comentarios y correcciones varias.


NOVEDADES 2.0.5


SISTEMA DE RETOS DE COMUNIDAD

El admin crea retos desde Admin - Retos con nombre, tipo de metrica, fechas de inicio y fin, y premios en puntos para los 3 primeros. Todos los usuarios compiten automaticamente sin necesidad de inscribirse.
  • 4 tipos de reto: posts publicados, comentarios escritos, votos recibidos y nuevos seguidores
  • Ranking en tiempo real calculado con las tablas existentes del script
  • Widget en la sidebar de la home con el reto activo, top 5 y barra de progreso de tiempo
  • Pagina publica /retos/ con ranking completo (top 10), premios e historial
  • Cierre automatico al expirar el plazo -- puntos a los ganadores y notificacion automatica
  • El admin puede cerrar un reto manualmente antes de que expire
  • Panel Admin - Retos con 3 pestanas: Todos los retos, Nuevo reto e Historial
  • Premios configurables e independientes para los 3 primeros puestos


BUSCADOR CON AUTOCOMPLETADO PREDICTIVO

Mientras escribes en el buscador aparece un dropdown en tiempo real con sugerencias de posts y usuarios, sin necesidad de pulsar buscar.
  • Posts sugeridos por titulo con puntuacion de relevancia
  • Usuarios sugeridos por nick con sus puntos
  • Navegacion con flechas arriba/abajo y Enter para seleccionar
  • Disponible en el widget de la sidebar y en la pagina /buscador/
  • Sin dependencias externas -- JavaScript vanilla puro


SISTEMA DE MENCIONES (@usuario)

Escribe @usuario en cualquier comentario para mencionar a alguien. El usuario mencionado recibe una notificacion automatica.
  • Autocompletado al escribir @ con lista de usuarios y avatar
  • Navegacion con flechas y Tab para seleccionar la mencion
  • Notificacion automatica al usuario mencionado via sistema de monitor
  • Compatible con el sistema de notificaciones existente


NOVEDADES 2.0.4 (incluidas)


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 - instalacion 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
  • 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 - instalacion 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


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 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 en home y posts individuales
  • Lazy loading automatico en imagenes
  • Subida de imagenes en CKEditor 5 via upload_images.php


SISTEMA EN VIVO (Complemento - instalacion aparte)

Feed de actividad en tiempo real en /en-vivo/ con posts, comentarios, comunidades y nuevos usuarios.



ESTRELLAS DE REPUTACION

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



SEGURIDAD


- Headers HTTP de seguridad: 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

- Contrasenas limitadas a 72 caracteres para evitar DoS por bcrypt

- XSS corregido en ajax.borradores.php

- getIP() corregido: no acepta HTTP_CLIENT_IP falsificable



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


Smarty 4.5.6 -- Motor de plantillas actualizado desde Smarty 2. 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.



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


Notas de actualizacion desde 2.0.4

1. Sube todos los archivos al servidor
2. Ejecuta en phpMyAdmin:

 
-- Tablas nuevas para Retos de Comunidad
CREATE TABLE 
IF NOT EXISTS `w_retos` (
  `
reto_id`      int(11)      NOT NULL AUTO_INCREMENT,
  `
reto_nombre`  varchar(120NOT NULL DEFAULT '',
  `
reto_tipo`    varchar(20)  NOT NULL DEFAULT 'posts',
  `
reto_inicio`  int(11)      NOT NULL DEFAULT 0,
  `
reto_fin`     int(11)      NOT NULL DEFAULT 0,
  `
reto_puntos`  int(6)       NOT NULL DEFAULT 0,
  `
reto_puntos2int(6)       NOT NULL DEFAULT 0,
  `
reto_puntos3int(6)       NOT NULL DEFAULT 0,
  `
reto_activo`  tinyint(1)   NOT NULL DEFAULT 1,
  `
reto_cerradotinyint(1)   NOT NULL DEFAULT 0,
  
PRIMARY KEY (`reto_id`),
  
KEY `idx_activo_fechas` (`reto_activo`,`reto_cerrado`,`reto_fin`)
ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE IF NOT EXISTS `w_retos_historial` (
  `
hist_id`        int(11)    NOT NULL AUTO_INCREMENT,
  `
reto_id`        int(11)    NOT NULL DEFAULT 0,
  `
user_id`        int(11)    NOT NULL DEFAULT 0,
  `
posicion`       tinyint(3NOT NULL DEFAULT 0,
  `
valor`          int(11)    NOT NULL DEFAULT 0,
  `
puntos_ganadosint(6)     NOT NULL DEFAULT 0,
  
PRIMARY KEY (`hist_id`),
  
UNIQUE KEY `reto_user` (`reto_id`,`user_id`),
  
KEY `idx_reto_pos` (`reto_id`,`posicion`)
ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- 
Indices FULLTEXT para el buscador con autocompletado
ALTER TABLE 
`p_postsADD FULLTEXT INDEX `ft_post_title` (`post_title`);
ALTER TABLE `p_postsADD FULLTEXT INDEX `ft_post_tags` (`post_tags`); 

3. Borra las carpetas /cache/ y /templates_c/


Notas de actualizacion desde 2.0.x (version anterior a 2.0.4)

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:

 
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;

CREATE TABLE IF NOT EXISTS `w_retos` (
  `
reto_id`      int(11)      NOT NULL AUTO_INCREMENT,
  `
reto_nombre`  varchar(120NOT NULL DEFAULT '',
  `
reto_tipo`    varchar(20)  NOT NULL DEFAULT 'posts',
  `
reto_inicio`  int(11)      NOT NULL DEFAULT 0,
  `
reto_fin`     int(11)      NOT NULL DEFAULT 0,
  `
reto_puntos`  int(6)       NOT NULL DEFAULT 0,
  `
reto_puntos2int(6)       NOT NULL DEFAULT 0,
  `
reto_puntos3int(6)       NOT NULL DEFAULT 0,
  `
reto_activo`  tinyint(1)   NOT NULL DEFAULT 1,
  `
reto_cerradotinyint(1)   NOT NULL DEFAULT 0,
  
PRIMARY KEY (`reto_id`),
  
KEY `idx_activo_fechas` (`reto_activo`,`reto_cerrado`,`reto_fin`)
ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE IF NOT EXISTS `w_retos_historial` (
  `
hist_id`        int(11)    NOT NULL AUTO_INCREMENT,
  `
reto_id`        int(11)    NOT NULL DEFAULT 0,
  `
user_id`        int(11)    NOT NULL DEFAULT 0,
  `
posicion`       tinyint(3NOT NULL DEFAULT 0,
  `
valor`          int(11)    NOT NULL DEFAULT 0,
  `
puntos_ganadosint(6)     NOT NULL DEFAULT 0,
  
PRIMARY KEY (`hist_id`),
  
UNIQUE KEY `reto_user` (`reto_id`,`user_id`),
  
KEY `idx_reto_pos` (`reto_id`,`posicion`)
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);
ALTER TABLE `p_postsADD FULLTEXT INDEX `ft_post_title` (`post_title`); 

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:
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):
/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]
 
[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]

 
DEMO
Debes agradecer para ver el contenido...

Descarga

phpost.es
Debes agradecer para ver el contenido...

Tienes dudas o encuentras algun problema? Dejalo en los comentarios.
Responder Compartir
#2

1
Hola, estuve probando la versión subida y encontré algunas cosas que quizá quedaron afuera del empaquetado final o del último repaso, te las paso por si te sirven:
  • En el topic anterior mencionabas Smarty 5.8, pero en esta versión quedó Smarty 4.5.6 y además el script ya se venía usando Smarty 3 anteriormente.
  • En admin hay errores JS porque admin.js depende de jQuery y ahora jQuery carga al final del body. También pasa con algunos <script> inline. Quizá convendría dejar jQuery en el <head> con el atributo defer para mantener compatibilidad sin bloquear carga.
  • Al crear/editar posts se carga Font Awesome 6 además de la 7 que ya está en el head.
  • En PHP 8.5 me aparecieron errores tipados relacionados con permisos/perfil. Bajando a 8.3 siguen algunos. Con display_errors activo pude ver que faltan validaciones en ciertos casos.

Arriba del constructor 
public array $permisos = []; 

y luego reemplazar $this->permisos 
$this->permisos unserialize($datis['r_allows']) ?: [];

foreach([
'sumo''suad'] as $permiso) {
    if(empty($this->permisos[$permiso])) {
        $this->permisos[$permiso] = false;
    }


El foreach es porque algunos rangos antiguos no tienen definidos esos índices y termina generando faltantes.

También en la función com_banned() después de 
$data db_exec('fetch_assoc'$query); 

faltaría validar
if(empty($data)) {
    return false;

  • En admin > soporte sigue apareciendo "PHPost 1.4.0.000".
  • También vi que faltaría agregar p_fondo y p_fondoper en u_perfil.

Te lo digo porque quizá algunas cosas quedaron fuera del script final.

PD: También noté que en la demo, los JS siguen cargando en el head y en el .rar están en footer, probablemente por eso aparecen esos errores mencionados.

Accede al servidor de Discord y descarga ZCode|PHPost
Responder Compartir
#3

1
(05-26-2026, 11:17 PM)Miguel92 escribió: Debes agradecer para ver el contenido...Hola, estuve probando la versión subida y encontré algunas cosas que quizá quedaron afuera del empaquetado final o del último repaso, te las paso por si te sirven:
  • En el topic anterior mencionabas Smarty 5.8, pero en esta versión quedó Smarty 4.5.6 y además el script ya se venía usando Smarty 3 anteriormente.
  • En admin hay errores JS porque admin.js depende de jQuery y ahora jQuery carga al final del body. También pasa con algunos <script> inline. Quizá convendría dejar jQuery en el <head> con el atributo defer para mantener compatibilidad sin bloquear carga.
  • Al crear/editar posts se carga Font Awesome 6 además de la 7 que ya está en el head.
  • En PHP 8.5 me aparecieron errores tipados relacionados con permisos/perfil. Bajando a 8.3 siguen algunos. Con display_errors activo pude ver que faltan validaciones en ciertos casos.

Arriba del constructor 
 
public array $permisos = []; 

y luego reemplazar $this->permisos 
$this->permisos unserialize($datis['r_allows']) ?: [];

foreach([
'sumo''suad'] as $permiso) {
    if(empty($this->permisos[$permiso])) {
        $this->permisos[$permiso] = false;
    }


El foreach es porque algunos rangos antiguos no tienen definidos esos índices y termina generando faltantes.

También en la función com_banned() después de 
 
$data db_exec('fetch_assoc'$query); 

faltaría validar
if(empty($data)) {
    return false;

  • En admin > soporte sigue apareciendo "PHPost 1.4.0.000".
  • También vi que faltaría agregar p_fondo y p_fondoper en u_perfil.

Te lo digo porque quizá algunas cosas quedaron fuera del script final.

PD: También noté que en la demo, los JS siguen cargando en el head y en el .rar están en footer, probablemente por eso aparecen esos errores mencionados.

Hola Miguel, estaba probando en otra demo y en la que he publicado tiene archivos viejos, no me había dado cuenta, me había liado de una demo a otra.
He salido, ahora cuando venga, te leo mejor.
Responder Compartir
#4

2
(05-26-2026, 11:17 PM)Miguel92 escribió: Debes agradecer para ver el contenido...Hola, estuve probando la versión subida y encontré algunas cosas que quizá quedaron afuera del empaquetado final o del último repaso, te las paso por si te sirven:
  • En el topic anterior mencionabas Smarty 5.8, pero en esta versión quedó Smarty 4.5.6 y además el script ya se venía usando Smarty 3 anteriormente.
  • En admin hay errores JS porque admin.js depende de jQuery y ahora jQuery carga al final del body. También pasa con algunos <script> inline. Quizá convendría dejar jQuery en el <head> con el atributo defer para mantener compatibilidad sin bloquear carga.
  • Al crear/editar posts se carga Font Awesome 6 además de la 7 que ya está en el head.
  • En PHP 8.5 me aparecieron errores tipados relacionados con permisos/perfil. Bajando a 8.3 siguen algunos. Con display_errors activo pude ver que faltan validaciones en ciertos casos.

Arriba del constructor 
 
public array $permisos = []; 

y luego reemplazar $this->permisos 
$this->permisos unserialize($datis['r_allows']) ?: [];

foreach([
'sumo''suad'] as $permiso) {
    if(empty($this->permisos[$permiso])) {
        $this->permisos[$permiso] = false;
    }


El foreach es porque algunos rangos antiguos no tienen definidos esos índices y termina generando faltantes.

También en la función com_banned() después de 
 
$data db_exec('fetch_assoc'$query); 

faltaría validar
if(empty($data)) {
    return false;

  • En admin > soporte sigue apareciendo "PHPost 1.4.0.000".
  • También vi que faltaría agregar p_fondo y p_fondoper en u_perfil.

Te lo digo porque quizá algunas cosas quedaron fuera del script final.

PD: También noté que en la demo, los JS siguen cargando en el head y en el .rar están en footer, probablemente por eso aparecen esos errores mencionados.

Tienes razón, fue un error en el mensaje anterior. La versión incluida es Smarty 4.5.6, que es la rama estable actual recomendada para producción. 
Smarty 5 todavía es experimental y tiene breaking changes que romperían muchas plantillas existentes. 
Smarty 4.5.6 es compatible con PHP 8.3 y es exactamente lo que lleva el paquete.

jQuery se ha movido al <head> sin defer, que es la solución más limpia para este script, ya que es una dependencia global que varios scripts inline del body necesitan antes de ejecutarse.
El resto de scripts (plugins, acciones, funciones, CKEditor) siguen en el footer.
La demo no tenía los últimos archivos subidos, de ahí que viste el error.


Ya lo he visto, estaba hardcodeado en m.agregar.form.tpl, el formulario de crear/editar posts. 
Se ha eliminado el

 
<link>

de FA 6.4.0 y el bloque
 
<style>

que lo acompañaba, y se ha actualizado la clase
 
fas fa-info-circle

a
 
fa-solid fa-circle-info

para que use FA7 de forma consistente.


Aplicadas y mejoradas respecto a lo que propones. En c.user.php:

Declaración tipada:
 
public array $permisos = [];

Deserialización segura con valores por defecto extendidos:
 
$this->permisos = unserialize($datis['r_allows']) ?: [];
foreach (['sumo', 'suad', 'gopfd', 'goaf', 'gopfp', 'govwm', 'gorpap',
          'godp', 'gopp', 'gopcp', 'govpp', 'govpn', 'goepc', 'godpc',
          'gopf', 'gopcf', 'movcud', 'movcus'] as $_p) {
    if (!isset($this->permisos[$_p])) {
        $this->permisos[$_p] = false;
    }
}

Se ha ampliado el foreach a todos los permisos conocidos del sistema, no solo
 

y
 

, para cubrir cualquier rango antiguo que pueda tener índices faltantes.


Validación en com_banned():
 
$data = db_exec('fetch_assoc', $query);
if (empty($data)) {
    return true;
}

Nota: se devuelve
 

en lugar de
 

porque la función devuelve true cuando no hay ban activo — devolver false indicaría que algo falló, cuando en realidad simplemente no hay registro de ban.


Era un texto hardcodeado en el bloque de créditos del footer del panel de administración. Ya lo he corregido a "Risus Nova 2.0".


Añadidas en el instalador (database.php) y en el upgrade (collection.php). 
Las instalaciones nuevas las tendrán automáticamente y las existentes las recibirán al pasar el upgrade
Si tienes una instalación actual puedes ejecutar en phpMyAdmin:

 
ALTER TABLE u_perfil ADD p_fondo VARCHAR(255) NOT NULL DEFAULT '';
ALTER TABLE u_perfil ADD p_fondoper INT(1) NOT NULL DEFAULT '0';


Todo irá incluido en el parche 2.0.1.
Gracias por el reporte, comentarios así ayuda a mejorar el script.
Responder Compartir
#5

0
De hecho Smarty 5 es estable hace tiempo ya va por la versión 5.8, con compatibilidad con PHP 7.2 a PHP 8.5. Tendrías que crear un archivo llamado autoload.php dentro de smarty
 
<?php 

require_once __DIR__ "/functions.php";

spl_autoload_register(function ($class) {
    
$prefix 'Smarty\\';
    
$len strlen($prefix);
    if (
strncmp($prefix$class$len) !== 0) {
        return;
    }
    
$relative_class substr($class$len);
    
$file __DIR__ '/' str_replace('\\''/'$relative_class) . '.php';
    if (
file_exists($file)) {
        require_once(
$file);
    }
}); 

Y luego tendrías que refactorizar c.smarty.php y allí volcar todas o varias configuraciones de smarty, aunque cargar los plugins ha cambiado. Pero es estable.

Otro tema, en main_header.tpl cuando tienes una variable que probablemente no tenga información inicial, conviene utilizar el modifier default
Antes
 
{$tsDescription}

Ahora
 
{$tsDescription|default:'Añade una descripcion para tu sitio'}

un ejemplo de error sin el modifier default
 
PHP Warning:  Undefined array key "tsDescription" in .../cache/fa866bf4a21a3c4f0e4c810fd3c51ade65ed0844_0.file.main_header.tpl.php on line 36

de esta forma te aseguras que tenga contenido.

Accede al servidor de Discord y descarga ZCode|PHPost
Responder Compartir
#6

0
(05-27-2026, 03:37 AM)Miguel92 escribió: Debes agradecer para ver el contenido...De hecho Smarty 5 es estable hace tiempo ya va por la versión 5.8, con compatibilidad con PHP 7.2 a PHP 8.5. Tendrías que crear un archivo llamado autoload.php dentro de smarty
 
<?php 

require_once __DIR__ "/functions.php";

spl_autoload_register(function ($class) {
    
$prefix 'Smarty\\';
    
$len strlen($prefix);
    if (
strncmp($prefix$class$len) !== 0) {
        return;
    }
    
$relative_class substr($class$len);
    
$file __DIR__ '/' str_replace('\\''/'$relative_class) . '.php';
    if (
file_exists($file)) {
        require_once(
$file);
    }
}); 

Y luego tendrías que refactorizar c.smarty.php y allí volcar todas o varias configuraciones de smarty, aunque cargar los plugins ha cambiado. Pero es estable.

Otro tema, en main_header.tpl cuando tienes una variable que probablemente no tenga información inicial, conviene utilizar el modifier default
Antes
 
{$tsDescription}

Ahora
 
{$tsDescription|default:'Añade una descripcion para tu sitio'}

un ejemplo de error sin el modifier default
 
PHP Warning:  Undefined array key "tsDescription" in .../cache/fa866bf4a21a3c4f0e4c810fd3c51ade65ed0844_0.file.main_header.tpl.php on line 36

de esta forma te aseguras que tenga contenido.

Si, no me he explicado bien, Smarty 5 es estable y va por la 5.8. 
La migración desde 4.5.6 está en el roadmap pero es un cambio mayor — Smarty 5 usa PSR-4 con namespace Smarty\ mapeado a src/ y ya no tiene Autoloader.php, Smarty.class.php ni sysplugins/, así que requiere reemplazar toda la librería, crear el autoload.php sin Composer y refactorizar c.smarty.php para usar use Smarty\Smarty
También hay que validar que todas las plantillas existentes son compatibles con los cambios de Smarty 5. 
Se incluirá en una versión futura una vez esté validada al completo.
Smarty 4.5.6 funciona perfectamente con PHP 8.3 y no hay ninguna razón urgente para migrar ahora.


He aplicado todas las ocurrencias de {$tsTitle} y {$tsDescription} en main_header.tpl ya tienen el modifier |default:'' para evitar los warnings de PHP 8 cuando la variable no está asignada.
Usando cadena vacía en lugar de un texto por defecto fijo para no interferir con el SEO de cada página.
Responder Compartir
#7

0
Hola no se si estoy haciendo algo  mal o no se que pasa subo el archivo a mi hosting lo descomprimo como lo echo con phpbb por ejemplo o mybb voy al url pero pareciera que el directorio esta vacio fui al url y puse /install/index.php tambien es como si no hubieranada, no se soy torpe y algo estoy haciendo mal.  Shy
Responder Compartir
#8

0
(05-27-2026, 11:02 PM)evilnix escribió: Debes agradecer para ver el contenido...Hola no se si estoy haciendo algo  mal o no se que pasa subo el archivo a mi hosting lo descomprimo como lo echo con phpbb por ejemplo o mybb voy al url pero pareciera que el directorio esta vacio fui al url y puse /install/index.php tambien es como si no hubieranada, no se soy torpe y algo estoy haciendo mal.  Shy

Si te sale en blanco es que no estas subiendo los archivos en el sitio correcto.
Tienes que descomprimir los archivos de la carpeta script a la raíz del dominio o subdominio que le hayas creado, una cosa así home/usuario/nombre de la web, si no lo pones ahí te sale en blanco.
Prueba eso, si sigues con problemas, si quieres me pasas los datos del hosting por MP y te lo instalo, no te voy hacer nada malo, después cambias las contraseñas para que te quedes mas tranquilo.
Responder Compartir
#9

0
Efectivamente esta en la ruta correcta de echo acabo de hacer una prueba subi otro script y funciona perfecto e hice lo mismo subi phpbb y tambien se instala. pero este definitivamente no funciona o no se que sucede.
Responder Compartir
#10

1
(05-27-2026, 11:21 PM)evilnix escribió: Debes agradecer para ver el contenido...Efectivamente esta en la ruta correcta de echo acabo de hacer una prueba subi otro script y funciona perfecto e hice lo mismo subi phpbb y tambien se instala. pero este definitivamente no funciona o no se que sucede.

Un segundo, voy a descargarlo y lo voy a instalar, lo he instalado antes de subirlo varias veces y sin problemas, voy a ver.
Responder Compartir


Compartir en:

Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)