!C99Shell v. 2.1 [PHP 8 Update] [02.02.2022]!

Software: Apache/2.4.53 (Unix) OpenSSL/1.1.1o PHP/7.4.29 mod_perl/2.0.12 Perl/v5.34.1. PHP/7.4.29 

uname -a: Linux vps-2738122-x 4.15.0-213-generic #224-Ubuntu SMP Mon Jun 19 13:30:12 UTC 2023 x86_64 

uid=1(daemon) gid=1(daemon) grupos=1(daemon) 

Safe-mode: OFF (not secure)

/opt/apex_tdfonline/php/lib/rest/lib/   drwxr-xr-x
Free 13.53 GB of 61.93 GB (21.86%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     rest_hidratador.php (3.61 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php

namespace rest\lib;


class 
rest_hidratador {


    
/**
     * Formatea un recordset de acuerdo a una especificacion según la clase /lib/modelable
     */
    
public static function hidratar($spec$fuente)
    {
        
$return = array();
        foreach (
$fuente as $fila){
            
$return[] = self::aplicar_spec_fila($spec$fila);
        }
        return 
self::aplicar_group_by($spec$return);

    }

    
/**
     * Formatea una fila de acuerdo a una especificacion según la clase /lib/modelable
     */
    
public static function hidratar_fila($spec$fuente,  $merges = array())
    {
        
$h self::hidratar($spec, array($fuente), $merges);
        return 
$h[0];
    }

    
/**
     * Revierte un objeto hidratado - Deberìa ser el formato que maneja el usuario, por lo tanto
     * puede usarse para mapear el input del usuario al formato del modelo.
     * @param $data array la fila para deshidratar
     * @param $spec_hidratar
     * @param array $nueva_fila Se utiliza para poder llamar la funcion recursivamente.
     *                          Posiblemente no se necesite utilizarla en la llamada inicial
     * @return array la fila deshidratado
     */
    
static function deshidratar_fila($data$spec_hidratar, &$nueva_fila = array())
    {

        foreach (
$spec_hidratar as $key => $campo) {
            if(!
is_array($campo)){ //si no proveen todos los campos no los incluyo.
                
if(isset($data[(string)$campo]))
                    
$nueva_fila[(string)$campo] = $data[(string)$campo]; // 2 => 'campo'
                
continue;
            }
            if(! 
array_key_exists($key$data)){
                continue;
            }

            if(isset(
$campo['_mapeo'])){// "nombre" => array('_mapeo' => "otro nombre",
                
$nueva_fila[$campo['_mapeo']] = $data[$key];
                continue;
            }
            if(isset(
$campo['_compuesto'])){
                
//pongo en la misma fila, las columnas del compuesto
                
self::deshidratar_fila($data$spec_hidratar['_compuesto'], $nueva_fila);
                continue;
            }
            
//pasa derecho
            
$nueva_fila[$key] = $data[$key];
        }

        return 
$nueva_fila;
    }

    protected static function 
aplicar_spec_fila($spec$fila)
    {
        
$nueva_fila = array();
        foreach (
$spec as $key => $campo) {
            if(!
is_array($campo) && !is_numeric($key)){
                throw new 
rest_error_interno("Hidratador: no se acepta el formato para la columna $key. Debe ser un arreglo o solo el nombre de la columna");
            }

            if(
is_array($campo) && isset($campo['_mapeo'])){// "nombre" => array('_mapeo' => "otro nombre",
                
$nueva_fila[$key] = $fila[$campo['_mapeo']];
                continue;
            }
            if(
is_array($campo) && isset($campo['_compuesto'])){
                
$nuevo_objeto self::aplicar_spec_fila($campo['_compuesto'], $fila);
                
$nueva_fila[$key] = $nuevo_objeto;
                continue;
            }
            
//pasa como viene
            
if(is_array($campo)){
                
$nueva_fila[$key] = $fila[$key]; // 'key' => array()..
            
}else {
                
$nueva_fila[$campo] = $fila[$campo]; // 2 => 'campo'
            
}

        }
        return 
$nueva_fila;
    }


    protected static function 
aplicar_group_by($spec$rs)
    {

        
$grupos = array();
        
$id_fila null;
        if(isset(
$spec)){ //veo si tiene grupos
            
foreach ($spec as $columna_agrupar => $fila_spec) {
                if(
is_array($fila_spec) && isset($fila_spec['_agrupado_por'])){
                    
$grupos[$columna_agrupar] = $fila_spec['_agrupado_por'];
                }
            }
        }
        if(empty(
$grupos)){
            return 
$rs;
        }

        
$resultado = array();
        foreach (
$rs as $fila){

            foreach (
$grupos as $columna_agrupar => $agrupar_por){
                
$id_fila $fila[$agrupar_por];
                
$valor_en_grupo $fila[$columna_agrupar];

                if(isset(
$resultado[$id_fila])){ //ya existe, solo mergeo los grupos
                    
$resultado[$id_fila][$columna_agrupar][] = $valor_en_grupo;
                }else{
                    
$fila[$columna_agrupar] = array($fila[$columna_agrupar]); //pongo el grupo en un arreglo
                    
$resultado[$id_fila] = $fila;
                }
            }
        }
        return 
array_values($resultado);
    }
}

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ Read-Only ]

:: Make Dir ::
 
[ Read-Only ]
:: Make File ::
 
[ Read-Only ]

:: Go Dir ::
 
:: Go File ::
 

--[ c99shell v. 2.1 [PHP 8 Update] [02.02.2022] maintained byC99Shell Github | Generation time: 0.6114 ]--