!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_led/php/nucleo/componentes/   drwxrwxr-x
Free 14.17 GB of 61.93 GB (22.88%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     toba_constructor.php (7.45 KB)      -rwxrwxr-x
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
/**
 * Construye los objetos php relacionados con componentes especificos
 * @package Componentes
 */
class toba_constructor
{
    static 
$objetos_runtime_instanciados = array();        // Referencias a los objetos creados
    
static $cache_infos = array();
    static 
$refresco_forzado false;

    
/**
     * Retorna el objeto-php que representa un runtime de un componente-toba
     *
     * @param array $id Arreglo con dos claves 'componente' y 'proyecto'
     * @param string $tipo Tipo de componente. Si no se brinda se busca automáticamente, aunque requiere mas toba_recursos
     * @param boolean $usar_cache Si el componente fue previamente construido en este pedido de página, retorna su referencia, sino lo crea.
     * @return objeto
     */
    
static function get_runtime$id$tipo=null$usar_cache false )
    {
        list(
$tipo$clase$datos) = self::get_runtime_clase_y_datos($id$tipo$usar_cache);
        return 
self::get_runtime_objeto($id$tipo$clase$datos);
    }

    static function 
get_runtime_clase_y_datos$id$tipo=null$usar_cache false )
    {
            
// Controla la integridad de la clave
        
self::control_clave_valida$id );
        if ( !isset( 
$tipo ) ) {
            
$tipo toba_cargador::get_tipo$id );    
        }
        
// Cargo los metadatos
        
if ( toba::nucleo()->utilizar_metadatos_compilados($id['proyecto']) ) {
            
$datos self::get_metadatos_compilados$id, ($tipo=='toba_item') );
        } else {
            
$datos toba_cargador::instancia()->get_metadatos_extendidos$id$tipo );
        }
        
//--- INSTANCIACION    ---
        
if ($tipo != 'toba_item') {        //**** Creacion de OBJETOS
            
$instancia_nro 0;
            
$clase $tipo;
            if (!
$usar_cache || !isset(self::$objetos_runtime_instanciados$id['componente'] ])) {
                
//Posee una subclase asociada?
                
if ( $datos['_info']['subclase']) {
                    if(isset(
$datos['_info']['subclase_archivo'])) { //Puede estar en un autoload
                        
self::cargar_clase($datos$id['proyecto']);
                    }
                    
$clase $datos['_info']['subclase'];
                } else {
                    
$clase get_nombre_clase_extendida($clase$id['proyecto'], toba::proyecto()->get_clases_extendidas());
                }
                
//Averiguo cuantas instancias previas de este componente fueron creadas
                
if (! isset(self::$objetos_runtime_instanciados$id['componente'] ])) {
                    
$instancia_nro 0;
                    
self::$objetos_runtime_instanciados$id['componente'] ] = array();
                } else {
                    
$instancia_nro count(self::$objetos_runtime_instanciados[$id['componente']]);
                }                
            }
            
$datos['_const_instancia_numero'] = $instancia_nro;            
        } elseif (
is_null($datos['basica']['carpeta']) || $datos['basica']['carpeta'] != '1')  {                    //**** Creacion de ITEMS
            
$clase "toba_solicitud_".$datos['basica']['item_solic_tipo'];
        } else {
            throw new 
toba_error_seguridad('La operación invocada no existe: ' var_export($idtrue));
        }
        return array(
$tipo$clase$datos);        
    }

    protected static function 
cargar_clase(&$datos$id_proyecto)
    {
        
toba_cargador::cargar_clase_archivo($datos['_info']['punto_montaje'],  $datos['_info']['subclase_archivo'], $id_proyecto);
    }

    static function 
get_runtime_objeto($id$tipo$clase$datos)
    {
        
$objeto = new $clase$datos );
        if (
$tipo != 'toba_item') {        //**** Creacion de OBJETOS        
            //Controlo que pertenezca a la clase definida
            
if (! $objeto instanceof $datos['_info']['clase']) {
                
$clase_actual get_class($objeto);
                
$clase_requerida $datos['_info']['clase'];
                
$componente $datos['_info']['objeto'];
                throw new 
toba_error_def("La sublcase '$clase_actual' del componente '$componente' debe heredar de la clase '$clase_requerida'");
            }
            
self::$objetos_runtime_instanciados$id['componente'] ][] = $objeto;
            if (isset(
$datos['_const_instancia_numero'])) {
                
$instancia_nro $datos['_const_instancia_numero'];
            } else {
                
$instancia_nro 0;
            }
            return 
self::$objetos_runtime_instanciados$id['componente'] ][$instancia_nro];
        } else {
            return 
$objeto;
        }
    }
    
    
/**
     * Retorna un objeto de consultas sobre un componente-toba
     *
     * @param array $id Arreglo con dos claves 'componente' y 'proyecto'
     * @param string $tipo Tipo de componente. Si no se brinda se busca automáticamente, aunque requiere mas toba_recursos
     * @param boolean $en_profundidad Los componentes cargan los info de sus dependencias
     * @param array $datos Datos pre-procesados que necesita el objeto-info, si no se especifica se buscan
     * @param boolean $refrescar_cache Indica que el objeto debe recargarse si ya se habia cargado anteriormente en el request
     * @param boolean $resumumidos Indica si que se realiza solo la carga basica de datos del componente
     * @return info_componente
     */    
    
static function get_info($id$tipo=null$en_profundidad=true$datos=null$refrescar_cache=false$resumidos=false
    {
        
$refrescar_cache = ($refrescar_cache || self::$refresco_forzado);
        
// Controla la integridad de la clave
        
self::control_clave_valida$id );
        if ( !isset( 
$tipo ) ) {
            
$tipo toba_cargador::get_tipo$id );    
        }
        
//--- Si esta en el cache lo retorna
        
$hash $id['componente']."-".$id['proyecto']."-".$tipo;
        if (! isset(
self::$cache_infos[$hash]) || $refrescar_cache) {
            if (! isset(
$datos)) {
                if ( 
toba::nucleo()->utilizar_metadatos_compilados($id['proyecto']) ) {
                    
$datos self::get_metadatos_compilados$id, ($tipo=='toba_item') );
                } else {
                    
$datos toba_cargador::instancia()->get_metadatos_extendidos$id$tiponull$resumidos );
                }
            }
            
$clase $tipo .'_info';
            
$obj = new $clase$datos$en_profundidad$resumidos );
            
self::$cache_infos[$hash] = $obj;
        }
        return 
self::$cache_infos[$hash];
    }    
    
    
/**
     * Retorna el objeto-php que representa un runtime YA INSTANCIADO previamente con
     *    con get_runtime()
     *    
     * @param array $id Arreglo con dos claves 'componente' y 'proyecto'
     * @param string $tipo Tipo de componente. Si no se brinda se busca automáticamente, aunque requiere mas toba_recursos
     * @return objeto
     */
    
static function buscar_runtime($id$numero_instancia=0
    {
        if ( isset(
self::$objetos_runtime_instanciados[$id['componente']]) && ! empty(self::$objetos_runtime_instanciados[$id['componente']])) {
            return 
self::$objetos_runtime_instanciados[$id['componente']][$numero_instancia];
        } else {
            throw new 
toba_error_def("El objeto '{$id['componente']}' no fue instanciado");    
        }
    }
    
    
/**
    *    Retorna la definicion compilada de un componente
    */
    
static function get_metadatos_compilados$id$item=false )
    {
        
//Chequea si no se redefinieron en runtime
        
$extendidos toba_cargador::instancia()->get_metadatos_redefinidos($id);
        if (isset(
$extendidos)) {
            return 
$extendidos;
        }
        if ( 
$item ) {
            
$clase 'toba_mc_item__' toba_manejador_archivos::nombre_valido$id['componente'] );
        } else {
            
$clase 'toba_mc_comp__' $id['componente'];
        }
        return 
call_user_func( array( $clase'get_metadatos' ) );
    }

    
/**
     * @ignore 
     */
    
static function control_clave_valida$clave_componente )
    {
        if(! 
is_array($clave_componente
            || !isset(
$clave_componente['componente']) 
            || !isset(
$clave_componente['proyecto']) ) {
            throw new 
toba_error_def("La clave utilizada para invocar el componente no es valida: ".var_export($clave_componentetrue));    
        }
    }
    
    
/**
     * Fuerza a que todos los componentes requeridos en este pedido de página no surjan de algún cache (util para testeos)
     */
    
static function set_refresco_forzado($refrescar)
    {
        
self::$refresco_forzado $refrescar;
    }
}
?>

:: 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.9406 ]--