!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_editor/php/objetos_toba/ei_cuadro/   drwxr-xr-x
Free 12.26 GB of 61.93 GB (19.8%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     ci_principal.php (13.83 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
require_once('objetos_toba/ci_editores_toba.php');

class 
ci_principal extends ci_editores_toba
{
    
//Columnas
    
protected $s__seleccion_columna;
    protected 
$s__seleccion_columna_anterior;
    private 
$id_intermedio_columna;
    protected 
$s__cortes_control;
    protected 
$s__importacion_cols;
    protected 
$disparar_importacion_columnas;
    protected 
$clase_actual 'toba_ei_cuadro';
    
    function 
ini()
    {
        
parent::ini();
        
$col toba::memoria()->get_parametro('columna');
        
//¿Se selecciono un ef desde afuera?
        
if (isset($col)) {
            
$this->set_pantalla(2);
            
$id_interno $this->get_entidad()->tabla('columnas')->get_id_fila_condicion(array('clave'=>$col));
            if (
count($id_interno) == 1) {
                
$this->evt__columnas_lista__seleccion($id_interno[0]);            
            } else {
                throw new 
toba_error("No se encontro la columna $col.");
            }
        }
    }
    
    function 
evt__procesar()
    {
        
$datos $this->get_entidad()->tabla('prop_basicas')->get();
        
$tiene_clave = ($datos['clave_dbr'] == || $datos['columnas_clave'] != '');
        if (!
$tiene_clave && $this->get_dbr_eventos()->hay_evento_de_fila()) {
            
toba::notificacion()->agregar('El cuadro no tiene definido cuales de sus columnas
                forman la <strong>clave de los registros</strong>. Esto hace que los eventos asociados a las filas no
                puedan propagar el valor que las representa.<br><br>
                Estas columnas claves se pueden indicar en la solapa de Prop.Básicas.'
'info');
        }
        
$this->get_entidad()->get_persistidor()->retrasar_constraints();
        
parent::evt__procesar();        
    }    
    
    
//*******************************************************************
    //*****************  PROPIEDADES BASICAS  ***************************
    //*******************************************************************

    
function conf__prop_basicas()
    {
        
$datos $this->get_entidad()->tabla('prop_basicas')->get();
        
$datos['posicion_botonera'] = $this->get_entidad()->tabla('base')->get_columna('posicion_botonera');
        return 
$datos;
    }

    function 
evt__prop_basicas__modificacion($datos)
    {
        
$this->get_entidad()->tabla('base')->set_columna_valor('posicion_botonera'$datos['posicion_botonera']);
        unset(
$datos['posicion_botonera']);
        
$this->get_entidad()->tabla('prop_basicas')->set($datos);
    }

    
//*******************************************************************
    //*******************  COLUMNAS  *************************************
    //*******************************************************************

    
function mostrar_columna_detalle()
    {
        if (isset(
$this->s__seleccion_columna)) {
            return 
true;    
        }
        return 
false;
    }
    
    function 
conf__2($pantalla)
    {
        
//--- Armo la lista de DEPENDENCIAS disponibles
        
$this->s__cortes_control = array();
        if (
$registros $this->get_entidad()->tabla('cortes')->get_filas()) {
            foreach (
$registros as $reg) {
                
$this->s__cortes_control[$reg['identificador']] = $reg['identificador'];
            }
        }
        
//--- Configuro la pantalla
        
if ($this->mostrar_columna_detalle()) {
            
$pantalla->eliminar_dep('columnas_importar');
            
$existen_cortes count($this->s__cortes_control) > 0;
            if (! 
$existen_cortes) {
                
$pantalla->eliminar_dep('columna_corte');
            }
            
$this->dependencia('columnas_lista')->set_fila_protegida($this->s__seleccion_columna);
            
$this->dependencia('columnas_lista')->seleccionar($this->s__seleccion_columna);
        } else {
            
$pantalla->eliminar_dep('columnas');
            
$pantalla->eliminar_dep('columna_corte');
            
$this->dependencia('columnas_importar')->colapsar();
        }
    }
    
    function 
evt__2__salida()
    {
        unset(
$this->s__seleccion_columna);
        unset(
$this->s__seleccion_columna_anterior);
    }

    
//-------------------------------
    //---- EI: Lista de columnas ----
    //-------------------------------
    
    
function evt__columnas_lista__modificacion($registros)
    {
        
/*
            Como en el mismo request es posible dar una columna de alta y seleccionarla,
            tengo que guardar el ID intermedio que el ML asigna en las columnas NUEVAS,
            porque ese es el que se pasa como parametro en la seleccion
        */
        
$dbr $this->get_entidad()->tabla('columnas');
        
$orden 1;
        foreach (
array_keys($registros) as $id)
        {
            
//Creo el campo orden basado en el orden real de las filas
            
$registros[$id]['orden'] = $orden;
            
$orden++;
            
$accion $registros[$id][apex_ei_analisis_fila];
            if (isset(
$registros[$id]['formateo'])) {
                
$estilo toba_info_editores::get_estilo_defecto_formateo_columna($registros[$id]['formateo']);
            } else {
                
$estilo 4;
            }
            
$fila $dbr->get_fila($id);
            if (! isset(
$fila) || !isset($fila['estilo'])) {
                
$registros[$id]['estilo'] = $estilo;
            }
            unset(
$registros[$id][apex_ei_analisis_fila]);
            switch(
$accion){
                case 
'A':
                    
$this->id_intermedio_columna[$id] = $dbr->nueva_fila($registros[$id]);
                    break;    
                case 
'B':
                    
$dbr->eliminar_fila($id);
                    break;    
                case 
'M':
                    
$dbr->modificar_fila($id$registros[$id]);
                    break;    
            }
        }
    }
    
    function 
conf__columnas_lista()
    {
        if (
$datos_dbr $this->get_entidad()->tabla('columnas')->get_filas()) {
            
//Ordeno los registros segun la 'posicion'
            //ei_arbol($datos_dbr,"Datos para el ML: PRE proceso");
            
for ($a 0;$a count($datos_dbr); $a++) {
                
$orden[] = $datos_dbr[$a]['orden'];
            }
            
array_multisort($ordenSORT_ASC$datos_dbr);
            
//EL formulario_ml necesita necesita que el ID sea la clave del array
            //No se solicita asi del DBR porque array_multisort no conserva claves numericas
            // y las claves internas del DBR lo son
            
for ($a 0$a count($datos_dbr); $a++) {
                
$id_dbr $datos_dbr[$a][apex_db_registros_clave];
                unset( 
$datos_dbr[$a][apex_db_registros_clave]);
                
$datos[$id_dbr] = $datos_dbr[$a];
            }
            
//ei_arbol($datos,"Datos para el ML: POST proceso");
            
return $datos;
        }
    }

    function 
evt__columnas_lista__seleccion($id)
    {
        if (isset(
$this->id_intermedio_columna[$id])) {
            
$id $this->id_intermedio_columna[$id];
        }
        
$this->s__seleccion_columna $id;
    }

    
//-----------------------------------------
    //---- EI: Info detalla de una COLUMNA ----
    //-----------------------------------------

    
function evt__columnas__modificacion($datos)
    {
        if (isset(
$datos['estilo_precarga'])) {
            if (! isset(
$datos['estilo'])) {
                
$datos['estilo'] = toba_info_editores::get_nombre_clase_css($datos['estilo_precarga']);
            }
            unset(
$datos['estilo_precarga']);
        }
                
        
$this->get_entidad()->tabla('columnas')->modificar_fila($this->s__seleccion_columna_anterior$datos);
    }
    
    function 
evt__columnas__aceptar($datos)
    {
        if (isset(
$datos['estilo_precarga'])) {
            if (! isset(
$datos['estilo'])) {
                
$datos['estilo'] = toba_info_editores::get_nombre_clase_css($datos['estilo_precarga']);
            }
            unset(
$datos['estilo_precarga']);
        }
        
        
$this->get_entidad()->tabla('columnas')->modificar_fila($this->s__seleccion_columna_anterior$datos);
        
$this->evt__columnas__cancelar();
    }

    function 
conf__columnas()
    {
        
$this->s__seleccion_columna_anterior $this->s__seleccion_columna;
        
$datos $this->get_entidad()->tabla('columnas')->get_fila($this->s__seleccion_columna_anterior);

        if (isset(
$datos['estilo'])) {
            
$datos['estilo_precarga'] = apex_ef_no_seteado;
            
$en_base toba_info_editores::get_lista_estilos_columnas();        //Busco la inversa del texto para setear el combo si existe
            
foreach($en_base as $estilo) {
                if (
$estilo['css'] == $datos['estilo']) {
                    
$datos['estilo_precarga'] = $estilo['columna_estilo'];
                }
            }            
        }

        
//Aqui comienza el engendro malefico
        
$posibles $this->get_eventos_vinculo_cargados();
        if (
is_array($posibles)) {
            foreach (
$posibles as $evento) {    //Si encuentro match con el evento
                
if (isset($evento['evento_id']) && isset($datos['evento_asociado']) &&($datos['evento_asociado'] == $evento['evento_id'])) {
                    
$datos['evento_asociado'] = $evento['identificador']; //Uso el nombre del evento
                
}
            }
        }
                
        return 
$datos;
    }

    function 
evt__columnas__cancelar()
    {
        unset(
$this->s__seleccion_columna);
    }

    
//-----------------------------------------
    //---- EI: Participacion en los CORTES de CONTROL del cuadro
    //-----------------------------------------

    
function conf__columna_corte($form)
    {
        
$indice 0;
        
$ids_visitados = array();
        
$filas = array();
        
$busqueda $this->get_entidad()->tabla('columna_total_cc')->nueva_busqueda();
        
$busqueda->set_padre('columnas'$this->s__seleccion_columna_anterior);
        
//Inicializo con los cortes de control existentes para cuando no existe carga previa o cuando se agregan cortes.
        
foreach ($this->s__cortes_control as $corte) {
            
$filas[$indice] = array('identificador' => $corte'total' => 0);
            
$ids_visitados[$corte] = $indice;
            
$indice++;
        }
        
//Obtengo las asociaciones entre columnas y cortes de control
        
$resultado_busqueda $busqueda->buscar_ids();
        foreach (
$resultado_busqueda  as $id_fila) {
            
$col_asoc $this->get_entidad()->tabla('columna_total_cc')->get_fila($id_fila);
            if (isset(
$ids_visitados[$col_asoc['identificador']])) {
                
$id_tmp $ids_visitados[$col_asoc['identificador']];
            } else {
                
$id_tmp $indice;
                
$ids_visitados[$col_asoc['identificador']] = $indice;
                
$indice++;
            }
            
$filas[$id_tmp] = array('identificador' => $col_asoc['identificador'], 'total' => $col_asoc['total']);
        }
        
$form->set_datos($filas);
    }

    function 
evt__columna_corte__modificacion($datos)
    {
        
//Borro los datos anteriores de la tabla para solo colocar los nuevos
        
if (! empty($datos)) {
            
$busqueda $this->get_entidad()->tabla('columna_total_cc')->nueva_busqueda();
            
$busqueda->set_padre('columnas'$this->s__seleccion_columna_anterior);
            foreach (
$busqueda->buscar_ids() as $id_fila) {
                
$this->get_entidad()->tabla('columna_total_cc')->eliminar_fila($id_fila);
            }
        }

        
//Setear cursor en tabla columnas con $this->s__seleccion_columna_anterior
        
$this->get_entidad()->tabla('columnas')->set_cursor($this->s__seleccion_columna_anterior);
        
// Buscar id para setear cursor en tabla cortes mediante el identificador
        
foreach ($datos as $valores) {
            
$id $this->get_entidad()->tabla('cortes')->get_id_fila_condicion(array('identificador' => $valores['identificador']));
            if (
$valores['total'] == 1) {
                
$this->get_entidad()->tabla('cortes')->set_cursor(current($id));
                
$this->get_entidad()->tabla('columna_total_cc')->nueva_fila($valores);                //Guardo los valores en la tabla
            
}
        }

        
//Resetear el cursor para que no se quede pensando
        
$this->get_entidad()->tabla('cortes')->resetear_cursor();
    }

    
//---------------------------------
    //---- EI: IMPORTAR definicion ----
    //---------------------------------

    
function evt__columnas_importar__importar($datos)
    {
        
$this->s__importacion_cols $datos;
        
$this->disparar_importacion_columnas true;
    }

    function 
post_eventos()
    {
        if (
$this->disparar_importacion_columnas) {
            if (isset(
$this->s__importacion_cols['datos_tabla'])) {
                
$clave = array('proyecto' => toba_editor::get_proyecto_cargado(),
                                
'componente' => $this->s__importacion_cols['datos_tabla']);
                
$dt toba_constructor::get_info($clave'toba_datos_tabla');
                
$this->s__importacion_cols $dt->exportar_datos_columnas($this->s__importacion_cols['pk']);
                
//ei_arbol($this->s__importacion_cols);
                
$cols $this->get_entidad()->tabla('columnas');
                foreach (
$this->s__importacion_cols as $col) {
                    try{
                        
$cols->nueva_fila($col);
                    }catch(
toba_error $e){
                        
toba::notificacion()->agregar("Error agregando la columna '{$col['clave']}'. " $e->getMessage());
                    }
                }
            }            
            
$this->disparar_importacion_columnas false;
        }        
    }

    function 
conf__columnas_importar()
    {
        if (isset(
$this->s__importacion_cols)) {
            return 
$this->s__importacion_cols;
        }
    }

    
/**
     * Recibe la notificacion sobre un evento eliminado
     * @param array $evt Fila que representa el evento
     * @private
     */
    
function notificar_eliminacion_evento($evt)
    {
        
//Chequeo contra identificador y contra id_real
        
$id_real = (isset($evt['evento_id'])) ? $evt['evento_id'] : null;
        
$identificador $evt['identificador'];

        
$columnas $this->get_entidad()->tabla('columnas')->get_filas(nullfalse);
        if (
is_array($columnas)) {
            foreach (
$columnas as $col) {
                if (isset(
$col['evento_asociado']) && ($col['evento_asociado'] == $identificador || $col['evento_asociado'] == $id_real)) {
                    throw new 
toba_error_def("No se puede eliminar el evento '$identificador' aún esta asociado a la columna '{$col['clave']}'");
                }
            }
        }
    }

    
//*******************************************************************
    //*******************  EVENTOS  ************************************
    //*******************************************************************
    /*
        Metodos necesarios para que el CI de eventos funcione
    */

    
function get_eventos_estandar($modelo)
    {
        return 
toba_ei_cuadro_info::get_lista_eventos_estandar($modelo);
    }

    function 
evt__3__salida()
    {
        
$this->dependencia('eventos')->limpiar_seleccion();
    }

    function 
get_dbr_eventos()
    {
        return 
$this->get_entidad()->tabla('eventos');
    }

    function 
get_eventos_vinculo_cargados()
    {
        
$condicion null;
        
$datos $this->get_dbr_eventos()->get_filas($condicionfalsefalse);
        return 
$datos;
    }

    
//*******************************************************************
    //*****************  CORTES de CONTROL  *****************************
    //*******************************************************************
    
    
function conf__prop_cortes()
    {
        return 
$this->get_entidad()->tabla('prop_basicas')->get();
    }

    function 
evt__prop_cortes__modificacion($datos)
    {
        
$this->get_entidad()->tabla('prop_basicas')->set($datos);
    }

    function 
evt__cortes__modificacion($datos)
    {
        
$this->get_entidad()->tabla('cortes')->procesar_filas($datos);
    }
    
    function 
conf__cortes()
    {
        if(
$datos_dbr $this->get_entidad()->tabla('cortes')->get_filas()) {
            for (
$a 0$a count($datos_dbr); $a++) {
                
$orden[] = $datos_dbr[$a]['orden'];
            }
            
array_multisort($ordenSORT_ASC$datos_dbr);
            for (
$a 0$a count($datos_dbr); $a++) {
                
$id_dbr $datos_dbr[$a][apex_db_registros_clave];
                unset(
$datos_dbr[$a][apex_db_registros_clave]);
                
$datos[$id_dbr] = $datos_dbr[$a];
            }
            return 
$datos;
        }
    }

}
?>

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