!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/proyectos/toba_usuarios/php/perfiles/restricciones_funcionales/   drwxr-xr-x
Free 14.63 GB of 61.93 GB (23.63%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     arbol_restricciones_funcionales.php (7.55 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php 
class arbol_restricciones_funcionales extends toba_ei_arbol
{
    
    protected 
$nodos_activos = array();
    protected 
$nodos_inactivos = array();

    protected function 
generar_campos_hidden()
    {
        
parent::generar_campos_hidden();
        echo 
toba_form::hidden($this->_submit.'__nodos_invisibles''');
        echo 
toba_form::hidden($this->_submit.'__nodos_visibles''');
    }

    private function 
cargar_estado_post()
    {
        
$id_activos $this->_submit.'__nodos_visibles';
        if (isset(
$_POST[$id_activos]) && $_POST[$id_activos] != '') {
            
$this->nodos_activos explode(apex_qs_sep_interno$_POST[$id_activos]);
        }
        
        
$id_inactivos $this->_submit.'__nodos_invisibles';
        if (isset(
$_POST[$id_inactivos]) && $_POST[$id_inactivos] != '') {
            
$this->nodos_inactivos explode(apex_qs_sep_interno$_POST[$id_inactivos]);
        }        
    }

    function 
disparar_eventos()
    {
        
$this->cargar_estado_post();        
        
//Aca valido los ids contra los enviados, para que nadie intente pasarse de vivo.
        
foreach ($this->nodos_activos as $id_nodo) {
            
$this->validar_id_nodo_recibido($id_nodo);
        }        
        foreach (
$this->nodos_inactivos as $id_nodo) {
            
$this->validar_id_nodo_recibido($id_nodo);
        }
    
        
//Transmito el estado recuperado del post a cada nodo.
        
if (isset($this->_nodos_inicial) && ! empty($this->_nodos_inicial)) {
            
$raiz $this->_nodos_inicial[0];
            
$raiz->propagar_estado_hijos($this->nodos_activos$this->nodos_inactivos);
        }        
        
parent::disparar_eventos();
    }
    
    function 
generar_fila_nodo($nodo$nivel)
    {
        
$nodo->desactivar_envio_inputs();
        return 
parent::generar_fila_nodo($nodo$nivel);
    }
    
    function 
servicio__ejecutar()
    {
        
toba::memoria()->desactivar_reciclado();
        
$id_nodo toba::memoria()->get_parametro('id_nodo');
        
$nodo $this->reportar_evento_interno('cargar_nodo'$id_nodo);
        if (isset(
$nodo) && $nodo !== apex_ei_evt_sin_rpta) {
            
$html $this->recorrer_hijos(current($nodo), 0);
            
$html .= '[--toba--]';    
            
$html .= toba_js::abrir();
            
$html .= $this->actualizar_estado_js(current($nodo));
            
$html .= toba_js::cerrar();
            
$html .= '[--toba--]';    
            echo 
$html;
        } else {
            
toba::logger()->warning("toba_ei_arbol: No se pudo obtener el nodo que representa al ID $id_nodo");
        }
    }
    
    
//-------------------------------------------------------------------------------------------------------------//
    //                        JAVASCRIPT
    //-------------------------------------------------------------------------------------------------------------//
    
function recuperar_estado_nodos($nodo_raiz)
    {        
        
$estado = array('activos' => array(), 'inactivos' => array());    
        if (isset(
$nodo_raiz)) {
            
//Recopilo el estado de los nodos y los hijos
            
if ($nodo_raiz->tiene_hijos_cargados()) {            
                foreach (
$nodo_raiz->get_hijos() as $hijo) {
                    
$aux $hijo->recuperar_estado_recursivo();
                    
$estado['activos'] = array_merge($estado['activos'], $aux['activos']);
                    
$estado['inactivos'] = array_merge($estado['inactivos'], $aux['inactivos']);
                }
            }        
        }
        return 
$estado;        
    }
    
    function 
actualizar_estado_js($nodo)
    {
        
$js_code '';        
        
$estado $this->recuperar_estado_nodos($nodo);        //Busco el estado de los nodos
        
if (! empty($estado['activos'])) {
            
$js_code .= $this->objeto_js .'.agregar_activos(' toba_js::arreglo(array_fill_keys($estado['activos'], true), true) . ');';
        }
        if (! empty(
$estado['inactivos'])) {
            
$js_code .= $this->objeto_js .'.agregar_inactivos(' toba_js::arreglo(array_fill_keys($estado['inactivos'], true), true) . ');';
        }        
        return 
$js_code;
    }    
    
    function 
extender_objeto_js()
    {
        
parent::extender_objeto_js();
        
$img_oculto toba_recurso::imagen_toba('no-visible.png'false);
        
$img_visible toba_recurso::imagen_toba('visible.png'false);
        
$img_solo_lectura toba_recurso::imagen_toba('no-editable.gif'false);
        
$img_editable toba_recurso::imagen_toba('editable.gif'false);
        
        echo 
"var {$this->objeto_js}_nodo_rf_activas = []; \n";
        echo 
"var {$this->objeto_js}_nodo_rf_inactivas = [];\n";    
        echo 
"            
            
{$this->objeto_js}.agregar_activos = function(nuevos)
            {
                for (var key in nuevos) {
                    
{$this->objeto_js}_nodo_rf_activas[key] = nuevos[key];
                }                
            }
            
            
{$this->objeto_js}.agregar_inactivos = function(nuevos)
            {
                for (var key in nuevos) {
                    
{$this->objeto_js}_nodo_rf_inactivas[key] = nuevos[key];
                }                
            }

            
{$this->objeto_js}.cambiar_oculto = function(id_nodo)
            {
                var activos = 
{$this->objeto_js}_nodo_rf_activas;
                var inactivos = 
{$this->objeto_js}_nodo_rf_inactivas;
                var id_input = '
{$this->_submit}_' + id_nodo + '_oculto_img';

                if (isset(activos[id_nodo])) {                            //Esta visible, hay que ocultarlo
                    delete( 
{$this->objeto_js}_nodo_rf_activas[id_nodo]);
                     
{$this->objeto_js}_nodo_rf_inactivas[id_nodo] = true;                                
                    $$(id_input).src = '
$img_oculto';                         
                        
                } else if (isset(inactivos[id_nodo])) {                        //Esta oculto, hay que mostrarlo
                    delete( 
{$this->objeto_js}_nodo_rf_inactivas[id_nodo]);
                     
{$this->objeto_js}_nodo_rf_activas[id_nodo] = true;                            
                    $$(id_input).src = '
$img_visible';                                         
                }
            }
            
            
{$this->objeto_js}.cambiar_editable = function(id_input) 
            {
                var valor_actual = $$(id_input).value;
                if (valor_actual == 1) {                    //Esta oculto, hay que mostrarlo                    
                    $$(id_input + '_img').src = '
$img_editable';
                    $$(id_input).value = 0;
                } else {                                //Esta visible, hay que ocultarlo                    
                    $$(id_input + '_img').src = '
$img_solo_lectura';
                    $$(id_input).value = 1;
                }
            }
            

            
{$this->objeto_js}.submit = function()
            {            
                var padre_esta_en_proceso = this.controlador && !this.controlador.en_submit();
                if (padre_esta_en_proceso) {
                    return this.controlador.submit();
                }
                if (this._evento) {
                    //Si es la selección de una semana marco la semana
                    if (this._evento.id == 'ver_propiedades') {
                        document.getElementById(this._input_submit + '__seleccion').value = this._evento.parametros;
                    }
                    //Marco la ejecucion del evento para que la clase PHP lo reconozca
                    document.getElementById(this._input_submit).value = this._evento.id;            
                }
                document.getElementById(this._input_submit + '__apertura_datos').value = this.datos_apertura();                

                //Agrego como lista los nodos seleccionados y deseleccionados
                var claves = [];
                for (var i in 
{$this->objeto_js}_nodo_rf_activas) {
                    claves.push(i);
                }
                document.getElementById('
{$this->_submit}__nodos_visibles').value = claves.join(toba_hilo_separador_interno);

                var claves = [];                
                for (var i in 
{$this->objeto_js}_nodo_rf_inactivas) {
                    claves.push(i);
                }
                document.getElementById('
{$this->_submit}__nodos_invisibles').value = claves.join(toba_hilo_separador_interno);
            }
            

            
{$this->objeto_js}.retorno_expansion = function(resultado)
            {
                var partes = toba.analizar_respuesta_servicio(resultado);                            //Tengo que separar el HTML del JS aca
                if (partes === false) {
                    notificacion.agregar('Se produjo un error de comunicación, intente reiniciar la operación');
                    return false;
                }
                
                var nodo = resultado.argument;                //Busco el lugar donde insertar la respuesta
                var ul = this.buscar_primer_ul(nodo.parentNode);        
                if (ul) {
                    if (partes[1] != '') {ejecutar_scripts(partes[1]); }
                    ul.innerHTML = partes[0];                    
                    this.toggle_expansion(nodo,ul);                    
                }
                return true;
            };"
;
        if (! empty(
$this->_nodos_inicial)) {                
            echo 
$this->actualizar_estado_js($this->_nodos_inicial[0]);
        }
    }            
}
?>

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