¡Bienvenido a PHPost!

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

Descarga Risus Nova 2.0   (Ver notas de la versión) (ACT-16/06/2026- 00:00 ESP)

Regístrate Descargar Risus Nova
Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5

SUGERENCIA Función setHace en (c.core.php y plugin)
#1

0
Hola, esta es otra sugerencia.

Tanto en inc/class/c.core.php como en inc/smarty/plugins/modifier.hace.php, para reemplazar en el plugin solo deben toma lo que esta dentro de la funcion setHace(...) y usarlo

Función original:
 
    /**
     * setHace()
     * if ternario
    */
    
function setHace($fecha$show false){
        
$fecha $fecha
        
$ahora time();
        
$tiempo $ahora-$fecha
        if(
$fecha <= 0) return 'Nunca';
        elseif(
round($tiempo 31536000) <= 0){ 
            if(
round($tiempo 2678400) <= 0) { 
                if(
round($tiempo 86400) <= 0) { 
                    if(
round($tiempo 3600) <= 0) { 
                        if(
round($tiempo 60) <= 0) { 
                        if(
$tiempo <= 60$hace 'instantes';
                        } else  { 
                            
$can round($tiempo 60); 
                            
$word = ($can <= 1) ? 'minuto' 'minutos';
                            
$hace "{$can} {$word}"
                        } 
                    } else { 
                        
$can round($tiempo 3600); 
                        
$word = ($can <= 1) ? 'hora' 'horas';
                        
$hace "{$can} {$word}"
                    } 
                } else  { 
                    
$can round($tiempo 86400); 
                    
$word = ($can <= 1) ? 'd&iacute;a' 'd&iacute;as';
                    
$hace "{$can} {$word}";
                } 
            } else  { 
                
$can round($tiempo 2678400);  
                
$word = ($can <= 1) ? 'mes' 'meses';
                
$hace "{$can} {$word}"
            }
        } else {
            
$can round($tiempo 31536000); 
            
$word = ($can <= 1) ? 'a&ntilde;o' 'a&ntilde;os';
            
$hace "{$can} {$word}"
        }
        return (
$show == true) ? 'Hace '.$hace $hace;
    } 

Se puede reducir de esta manera:
/**
     * setHace($fecha, $show)
     * @access public
     * @param int $fecha
     * @param bool $show
     * @return string
    */
   
public function setHace(int $fecha 0$show false){
          
# Creamos
       
$tiempo time() - $fecha;
       if(
$fecha <= 0) return 'Nunca';
       
// Declaración de unidades de tiempo, aunque es un aproximado
       // Ya que existe años bisiestos 366 días
          
$unidades = [
            
31536000 => 'a&ntilde;o',
            
2678400 => 'mes',
            
604800 => 'semana',
            
86400 => 'd&iacute;a',
            
3600 => 'hora',
            
60 => 'minuto'
          
];
       foreach(
$unidades as $segundos => $nombre){
          
$round round($tiempo $segundos);
          if(
$tiempo <= 60$hace "instantes";
          else {
              if(
$round 0){
                  
$nes = ($nombre === 'mes') ? 'es' 's';
                 
$hace "{$round} {$nombre}. ($round $nes '');
                 break;
              }
          }
       }
       
// Si se ha establecido la opción $show, se agrega 'Hace' al resultado
       
return ($show "Hace " "") . $hace;
    } 
Responder


Compartir en:

Mensajes en este tema
Función setHace en (c.core.php y plugin) - por Miguel92 - 01-02-2023, 12:38 PM

Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)