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:

Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)