!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/proyectos/toba_editor/php/editores/editor_item/   drwxrwxr-x
Free 14.17 GB of 61.93 GB (22.87%)
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 (14.44 KB)      -rwxrwxr-x
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
require_once('seleccion_imagenes.php');

define('id_temporal''Automático');

class 
ci_principal extends toba_ci
{
    protected 
$s__id_item ;
    protected 
$s__inicializar_item_nuevo true;
    protected 
$s__fuentes;
    protected 
$s__hay_con_permisos;
    protected 
$cambio_item false;    
    private 
$elemento_eliminado false;
    private 
$refrescar false;
    
    function 
ini__operacion()
    {
        if (! isset(
$this->s__fuentes)) {
            
$this->s__fuentes toba_info_editores::get_fuentes_datos(toba_editor::get_proyecto_cargado());            
        }
        
$this->s__hay_con_permisos false;
        foreach (
$this->s__fuentes as $fuente) {
            if (isset(
$fuente['permisos_por_tabla']) && $fuente['permisos_por_tabla'] == '1') {
                
$this->s__hay_con_permisos true;
            }
        }    
    }
        
    function 
ini()
    {
        
//Se quita la secuencia para manejar el caso de alta de un ID alfanumerico a gusto
        
$this->get_entidad()->tabla('base')->set_definicion_columna('item''secuencia'null);

        
//Se quita el control de concurrencia porque permite modificar claves
        
$this->get_entidad()->persistidor()->set_lock_optimista(false);        
        
$zona toba::zona();
        if (
$zona->cargada()) {
            list(
$proyecto$item) = $zona->get_editable();
            
//Se notifica un item y un proyecto    
            
if (isset($item) && isset($proyecto)) {
                
//Se determina si es un nuevo item
                
$es_nuevo = (!isset($this->s__id_item ) || 
                            (
$this->s__id_item['proyecto'] != $proyecto || $this->s__id_item['item'] != $item));
                if (
$es_nuevo) {
                    
$this->set_item(array('proyecto'=>$proyecto'item'=>$item));
                    
$this->cambio_item true;
                }
            }
        } else {
            
//Creacion de un item nuevo
            
if ($this->s__inicializar_item_nuevo) {
                unset(
$this->s__id_item );
                
$datos $this->get_entidad();
                
$datos->resetear();
                
$this->inicializar_item($datos);
                
$this->s__inicializar_item_nuevo false;
            }
        }
    }
    
    function 
get_entidad()
    {    
//Acceso al DATOS_RELACION
        
if ($this->cambio_item) {
            
toba::logger()->debug($this->get_txt() . '*** se cargo el item: ' print_r($this->s__id_item,true));
            
$this->dependencia('datos')->cargar($this->s__id_item);
        }
        return 
$this->dependencia('datos');
    }    

    function 
set_item($id)
    {
        
$this->s__id_item  $id;
    }
    
    function 
conf()
    {
        if (! 
$this->get_entidad()->esta_cargada()) {
            
$this->pantalla()->eliminar_evento('eliminar');
        }        
        if (! 
$this->s__hay_con_permisos) {
            
$this->pantalla()->eliminar_tab('pant_permisos');
        }
    }    
    
    
/**
    *    Inicializacion de un ITEM nuevo, llega el DR vacio
    */
    
function inicializar_item($dr)
    {
        
//Ver si el padre viene por post
        
$datos = array();                                                            //TODO: See this -.-
        
$padre_i toba::memoria()->get_parametro('padre_i');
        
$padre_p toba::memoria()->get_parametro('padre_p');
        if (isset(
$padre_p) && isset($padre_i)) {
            
$datos = array('item' => id_temporal);
            
$datos['padre'] = $padre_i;
            
$datos['padre_proyecto'] = $padre_p;
        }
        
$dr->tabla('base')->set($datos);
        
//Le agrego el permiso del usuario actual
        
foreach (toba::usuario()->get_grupos_acceso() as $grupo) {
            
$permiso_usuario_actual = array('usuario_grupo_acc' => $grupo);
            
$dr->tabla('permisos')->nueva_fila($permiso_usuario_actual);
        }
    }

    
//-------------------------------------------------------------------
    //--- PROPIEDADES BASICAS
    //-------------------------------------------------------------------

    
function conf__prop_basicas(toba_ei_formulario $form)
    {
        
$datos $this->get_entidad()->tabla('base')->get();
        if (!isset(
$datos['carpeta']) || $datos['carpeta'] != 1) {
            if (!
$this->get_entidad()->esta_cargada()) {
                
$form->ef('item')->set_iconos_utilerias(array(new utileria_identificador_nuevo()));
            } else {
                
$form->ef('item')->set_iconos_utilerias(array(new utileria_identificador_actual()));
            }
        }
    
        
//Transfiere los campos accion, buffer y patron a uno comportamiento
        
if (isset($datos['actividad_accion']) && $datos['actividad_accion'] != '') {
            
$datos['comportamiento'] = 'accion';
        }
        if (isset(
$datos['actividad_buffer']) && $datos['actividad_buffer'] != 0) {
            
$datos['comportamiento'] = 'buffer';
        }
        if (isset(
$datos['actividad_patron']) && $datos['actividad_patron'] != 'especifico') {
            
$datos['comportamiento'] = 'patron';
        }
        if (! isset(
$datos['pagina_tipo'])) {
            
$pagina toba_info_editores::get_tipo_pagina_defecto();
            
$datos['pagina_tipo'] = $pagina['pagina_tipo'];
            
$datos['pagina_tipo_proyecto'] = $pagina['proyecto']; 
        }
        if (
$form->existe_ef('accion')) {
            
$form->ef('accion')->set_iconos_utilerias(admin_util::get_ef_popup_utileria_php());
        }
        
$form->set_datos($datos);
    }

    function 
evt__prop_basicas__modificacion($registro)
    {
        
//El campo comportamiento incide en el buffer, patron y accion
        
if ($registro['solicitud_tipo'] == 'browser') {        
            switch (
$registro['comportamiento']) {
                case 
'accion':
                    
$registro['actividad_buffer'] = 0;
                    
$registro['actividad_patron'] = 'especifico';
                    break;
                case 
'buffer':
                    
$registro['actividad_accion'] = '';
                    
$registro['actividad_patron'] = 'especifico';                
                    break;
                case 
'patron':
                    
$registro['actividad_buffer'] = 0;
                    
$registro['actividad_accion'] = '';
                    break;                                
            }
        }
        unset(
$registro['comportamiento']);
        
$this->get_entidad()->tabla('base')->set($registro);
    }
    
    
//----------------------------------------------------------
    //-- OBJETOS -----------------------------------------------
    //----------------------------------------------------------
    
function conf__objetos()
    {
        
$objetos $this->get_entidad()->tabla('objetos')->get_filas(nulltrue);
        return 
$objetos;
    }
    
    function 
evt__objetos__modificacion($objetos)
    {
        
$this->get_entidad()->tabla('objetos')->procesar_filas($objetos);
    }
    
    
//----------------------------------------------------------
    //-- PERMISOS -------------------------------------------------
    //----------------------------------------------------------
    
    
function conf__pant_permisos_tablas(toba_ei_pantalla $pant)
    {        
        if (! 
$this->s__hay_con_permisos && $this->existe_dependencia('form_tablas')) {
            
$pant->eliminar_dep('form_tablas');
            
$this->get_entidad()->tabla('permisos_tablas')->eliminar_filas();
        }
    }
        
    
/*
    *    Toma los permisos actuales, les agrega los grupos faltantes y les pone descripcion
    */
    
function conf__permisos()
    {
        
$asignados $this->get_entidad()->tabla('permisos')->get_filas();
        
$grupos toba_info_permisos::get_grupos_acceso(toba_editor::get_proyecto_cargado());
        
$datos = array();
        foreach (
$grupos as $grupo) {
            
//El grupo esta asignado al item?
            
$esta_asignado false;    
            foreach (
$asignados as $asignado) {
                
//Si esta asignado ponerle el nombre del grupo y chequear el checkbox
                
if ($asignado['usuario_grupo_acc'] == $grupo['usuario_grupo_acc']) {
                    
$grupo['tiene_permiso'] = 1;
                    
$grupo['item'] = $this->s__id_item['item'];
                    
$esta_asignado true;
                }
            }
            
//Si no esta asignado poner el item y deschequear el checkbox
            
if (!$esta_asignado) {
                
$grupo['tiene_permiso'] = 0;
                
$grupo['item'] = $this->s__id_item['item'];
            }
            
$datos[] = $grupo;
        }
        return 
$datos;
    }
    
    function 
evt__permisos__modificacion($grupos)
    {
        
$dbr $this->get_entidad()->tabla('permisos');
        
$asignados $dbr->get_filas(array(), true);
        if (!
$asignados) {
            
$asignados = array();        
        }
        
//ei_arbol($asignados, 'asignados');
        //ei_arbol($grupos, 'nuevos');
        
foreach ($grupos as $grupo) {
            
$estaba_asignado false;
            foreach (
$asignados as $id => $asignado) {
                
//¿Estaba asignado anteriormente?
                
if ($asignado['usuario_grupo_acc'] == $grupo['usuario_grupo_acc']) {
                    
$estaba_asignado true;
                    if (! 
$grupo['tiene_permiso']) {
                        
//Si estaba asignado, y fue deseleccionado entonces borrar
                        
$dbr->eliminar_fila($id);
                    }
                }
            }
            
//Si no estaba asignado y ahora se asigna, agregarlo
            
if (!$estaba_asignado && $grupo['tiene_permiso']) {
                unset(
$grupo['tiene_permiso']);
                unset(
$grupo['nombre']);
                
$dbr->nueva_fila($grupo);
            }
        }
    }
    
    function 
conf__form_tablas(toba_ei_formulario_ml $form
    {
        
$configurados $this->get_entidad()->tabla('permisos_tablas')->get_cantidad_filas();
        
$permisos = array();
        
        foreach (
$this->s__fuentes as $fuente) {
            
$con_permisos $fuente['permisos_por_tabla'];
            if (! 
$con_permisos) {
                continue;
            }
            
            if (
$configurados === 0) {                                                //No hay permisos configurados
                    
$fuente['esquema'] = $fuente['schema'];
                    
$fuente['proyecto'] = toba_editor::get_proyecto_cargado();
                    
$fuente['tablas_modifica'] = array();
                    
$permisos[] = $fuente;
            } else {                                                            
//Hay permisos previos
                
$aux = array();                
                
$datos_fila $this->get_entidad()->tabla('permisos_tablas')->get_filas(array('fuente_datos' => $fuente['fuente_datos']));
                foreach (
$datos_fila as $fila) {                                        //Agrupo las tablas por schema
                    
$indx $fila['esquema'];
                    
$aux[$indx][] = $fila['tabla'];
                }
                if (! empty(
$aux)) {
                    foreach(
$aux as $schema => $tablas) {
                        
$permisos[] = array('fuente_datos' => $fuente['fuente_datos'], 'esquema' => $schema'proyecto' => toba_editor::get_proyecto_cargado(), 'tablas_modifica' => $tablas);
                    }
                    unset(
$aux);
                }                
            }
        }
        
$form->set_datos($permisos);
    }
    
    function 
evt__form_tablas__modificacion($datos
    {
        
$conj_actual = array();
        
$datos_actuales $this->get_entidad()->tabla('permisos_tablas')->get_filas();
        foreach(
$datos_actuales as $fila) {
            
$indx "{$fila['fuente_datos']}_{$fila['esquema']}_{$fila['tabla']}";
            
$conj_actual[$indx] = $fila;
        }
        
        
$conj_nuevo = array();
        foreach(
$datos as $fila) {
            foreach (
$fila['tablas_modifica'] as $tabla) {
                
$indx "{$fila['fuente_datos']}_{$fila['esquema']}_$tabla";
                
$conj_nuevo[$indx] = $fila;
                
$conj_nuevo[$indx]['tabla'] = $tabla;
            }
        }
        
        
$nuevos array_diff_key($conj_nuevo$conj_actual);
        
$borrados array_diff_key($conj_actual$conj_nuevo);
        
        foreach(
$borrados as $fila) {
            
$condicion = array('fuente_datos' => $fila['fuente_datos'], 'esquema' => $fila['esquema'], 'tabla' => $fila['tabla']);            
            
$id $this->get_entidad()->tabla('permisos_tablas')->get_id_fila_condicion($condicion);            
            
$this->get_entidad()->tabla('permisos_tablas')->eliminar_fila(current($id));            
        }
        
        foreach(
$nuevos as $fila) {
            
$id $this->get_entidad()->tabla('permisos_tablas')->nueva_fila($fila);
            
$this->set_permisos_basicos($id);
        }
    }
    
    function 
get_tablas_fuente($fuente$schema null
    {
        try {
            return 
toba::db($fuentetoba_editor::get_proyecto_cargado())->get_lista_tablas(false$schema);
        } catch (
toba_error $e) {
            
toba::notificacion()->warning("La fuente '$fuente' no está definida en bases.ini. Si guarda los cambios es posible que borre información existente");
            
//No esta definida en bases.ini
            
return array();
        }
    }

    function 
get_schemas_fuente($fuente
    {
        try {
            return 
toba::db($fuentetoba_editor::get_proyecto_cargado())->get_lista_schemas_disponibles();
        } catch (
toba_error $e) {
            
toba::notificacion()->warning("La fuente '$fuente' no está definida en bases.ini. Si guarda los cambios es posible que borre información existente");
            
//No esta definida en bases.ini
            
return array();
        }
    }

    
//----------------------------------------------------------------------------------------------------------------------------------------------------//
    //                                PANTALLA PERMISOS                                       //
    //----------------------------------------------------------------------------------------------------------------------------------------------------//
    
function conf__form_acl(toba_ei_formulario_ml $form)
    {
        
$datos $this->get_entidad()->tabla('permisos_tablas')->get_filas();
        
toba::logger()->var_dump($datos);
        foreach(
$datos as $klave => $fila) {
            
$permisos explode(',' $fila['permisos']);
            if (
in_array('select'$permisos)) {
                
$datos[$klave]['chk_select'] = 1;
            }
            if (
in_array('insert'$permisos)) {
                
$datos[$klave]['chk_insert'] = 1;
            }
            if (
in_array('update'$permisos)) {
                
$datos[$klave]['chk_update'] = 1;
            }
            if (
in_array('delete'$permisos)) {
                
$datos[$klave]['chk_delete'] = 1;
            }            
        }
        
$form->set_datos($datos);
    }
    
    function 
evt__form_acl__modificacion($datos)
    {
        foreach(
$datos as $klave => $fila) {
            
$permisos = array();
            
$datos[$klave]['permisos'] = array();
            if (isset(
$fila['chk_select']) && $fila['chk_select'] == 1) {
                
$permisos[] = 'select';
            }
            if (isset(
$fila['chk_insert']) && $fila['chk_insert'] == 1) {
                
$permisos[] = 'insert';
            }
            if (isset(
$fila['chk_update']) && $fila['chk_update'] == 1) {
                
$permisos[] = 'update';
            }
            if (isset(
$fila['chk_delete']) && $fila['chk_delete'] == 1) {
                
$permisos[] = 'delete';
            }
            if (! empty(
$permisos)) {
                
$datos[$klave]['permisos'] = implode(','$permisos);
            }
        }
        
$this->get_entidad()->tabla('permisos_tablas')->procesar_filas($datos);
    }
    
    function 
set_permisos_basicos($id_fila)
    {
        
$this->get_entidad()->tabla('permisos_tablas')->set_fila_columna_valor($id_fila'permisos''select,insert,update,delete');        
    }
    
    
// *******************************************************************
    // *******************  PROCESAMIENTO  *******************************
    // *******************************************************************

    
function evt__procesar()
    {
        
//Seteo los datos asociados al uso de este editor
        
$basicos $this->get_entidad()->tabla('base');
        
$basicos->set_fila_columna_valor(0'proyecto'toba_editor::get_proyecto_cargado());
        
$es_temporal $basicos->get_columna('item') == id_temporal;
        if (
$es_temporal) {
            
//Reemplazar el automático por la secuencia
            
$basicos->set_columna_valor('item'toba::instancia()->get_db()->recuperar_nuevo_valor_secuencia('apex_item_seq'));
        }
        
        
//Sincronizo el DBT
        
$this->get_entidad()->sincronizar();    
        
$datos $this->get_entidad()->tabla('base')->get();        
        
        
//Si el proyecto usa esquema de permisos por tabla
        
$modelo_proyecto toba_editor::get_modelo_proyecto();
        try {
            
$modelo_proyecto->generar_roles_db($datos['item']);
        } catch (
toba_error_db $e) {
            
toba::notificacion()->error('Error al actualizar los roles postgres para esta operación'$e->get_mensaje_log());
        }
        
        if (! isset(
$this->s__id_item )) {        //Si el item es nuevo
            
admin_util::refrescar_editor_item($datos['item']);                        
            
admin_util::redirecionar_a_editor_item($datos['proyecto'], $datos['item']);            
        }
    }

    function 
evt__eliminar()
    {
        
$this->get_entidad()->eliminar();
        
toba::notificacion()->agregar('La operación ha sido eliminada''info');
        
toba::zona()->resetear();
        
admin_util::refrescar_editor_item();
    }
    

    
/**
     * Servicio para mostrar la imagen
     */
    
function servicio__ejecutar()
    {
        
seleccion_imagenes::generar_html_listado();
    }
}



?>

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