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


Viewing file:     toba_editor.php (29.18 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
/**
 * A travez de esta clase el nucleo se relaciona con el proyecto toba_editor
 * Esta es una clase muy particular, su contenido deberia repartirse entre modelo,
 * proyecto editor y nucleo. Por simplicidad se deja todo junto.
 * @package Varios
 * @ignore 
 */
class toba_editor
{
    private static 
$memoria;    // Bindeo a $_sesion
    
private static $ultimo_item;
    private static 
$fuentes;

    static function 
get_id()
    {
        return 
'toba_editor';    
    }

    
/**
    *    _falta: Hacer un control de que el administrador esta en esa instancia
    *            (hoy en dia seria obligatorio)
    */
    
static function iniciar($instancia$proyecto)
    {
        if(!isset(
$instancia) || !isset($proyecto)) {
            throw new 
toba_error('Editor: es necesario definir la instancia y proyecto a utilizar.');    
        }
        
self::referenciar_memoria();
        
        
self::$memoria['instancia'] = $instancia;
        
self::$memoria['proyecto'] = $proyecto;
        
//Busco el ID de la base donde reside la instancia
        
$parametros_instancia toba::instancia()->get_datos_instancia($instancia);
        
self::$memoria['base'] = $parametros_instancia['base'];
        
//Averiguo el punto de acceso del editor
        
$punto_acceso explode('?'$_SERVER['PHP_SELF']);    
        
self::$memoria['punto_acceso'] = $punto_acceso[0];
        
self::$memoria['conexion_limitada'] = 1;
    }
    
    static function 
referenciar_memoria()
    {
        
self::$memoria =& toba::manejador_sesiones()->segmento_editor();
        
//Acceso a la informacion del modelo
        
toba_contexto_info::set_proyecto(toba_editor::get_proyecto_cargado());
        
toba_contexto_info::set_db(toba_editor::get_base_activa());
                
        if (! 
self::modo_prueba()) {
            return;
        }
        
        
//Cambia el perfil activo
        
$perfil_activo toba::memoria()->get_parametro('perfil_activo');
        if (isset(
$perfil_activo)) {
            if (
$perfil_activo == apex_ef_no_seteado) {
                
toba::manejador_sesiones()->set_perfiles_funcionales_activos(toba::manejador_sesiones()->get_perfiles_funcionales());
            } else {
                
toba::manejador_sesiones()->set_perfiles_funcionales_activos(array($perfil_activo));
            }
        }
        
        
//Cambia el usuario de conexion
        
$tipo_conexion toba::memoria()->get_parametro('usuario_conexion');
        if (isset(
$tipo_conexion)) {
            
self::$memoria['conexion_limitada'] = ($tipo_conexion == 'limitado');
        }
        
self::$fuentes toba_info_editores::get_fuentes_datos(toba_editor::get_proyecto_cargado());
        
$modelo self::get_modelo_proyecto();            
        foreach (
self::$fuentes as $fuente) {
            try {            
                if (
self::$memoria['conexion_limitada'] && $fuente['permisos_por_tabla']) {
                    
//El proyecto usa permisos por tablas para las operaciones, en modo previsualizacion se setea el rol especifico
                    
$id_base self::$memoria['instancia'].' '.self::get_proyecto_cargado().' '.$fuente['fuente_datos'];
                    
$parametros toba_dba::get_parametros_base($id_base);
                    
$usuario $modelo->get_usuario_prueba_db($fuente['fuente_datos']);
                    
$parametros['usuario'] = $usuario;
                    
$parametros['clave'] = $usuario;
                    
toba_dba::set_parametros_base($id_base$parametros);
                }

                
//Pone la base por defecto en modo debug, para leer la cantidad y tiempo de las querys
                
$base toba_admin_fuentes::instancia()->get_fuente($fuente['fuente_datos'], toba_editor::get_proyecto_cargado())->get_db();
                if (
$base) {
                    
$base->set_modo_debug(truefalse);
                }                
            } catch (
toba_error $e) {
                
//Si no se tiene acceso a la base no se hace nada
            
}
        }
        
        
        
//Cambia el skin
        
if (toba::memoria()->get_parametro('skin') != '') {
            
$skin explode(apex_qs_separadortoba::memoria()->get_parametro('skin'));
            
$sql "SELECT es_css3 FROM apex_estilo WHERE estilo = ".quote($skin[0])." AND proyecto =".quote($skin[1]);
            
$datos toba::instancia()->get_db()->consultar_fila($sql);
            
toba::proyecto()->set_parametro('estilo'$skin[0]);
            
toba::proyecto()->set_parametro('estilo_proyecto'$skin[1]);
            
toba::proyecto()->set_parametro('es_css3'$datos['es_css3']);
            
        }
        
//Cambia tipo de navegación
        
if (toba::memoria()->get_parametro('navegacion_ajax') != '') {
            
$ajax toba::memoria()->get_parametro('navegacion_ajax') ? true false;
            
toba::proyecto()->set_parametro('navegacion_ajax'$ajax);
        }
        
    }

    static function 
finalizar()
    {
        
toba::manejador_sesiones()->borrar_segmento_editor();
    }

    
    
/**
    *    Indica si el EDITOR de metadatos se encuentra encendido
    */
    
static function activado()
    {
        if (
count(self::$memoria)>0) {
            return 
true;    
        }
        return 
false;
    }

    
/**
    *    Indica si la ejecucion actual corresponde a la previsualizacion de un proyecto 
    *        lanzada desde el admin
    */
    
static function modo_prueba()
    {
        if (
self::activado() && toba::manejador_sesiones()->existe_sesion_activa() ) {
            return 
self::$memoria['proyecto'] == toba_proyecto::get_id();
        }
        return 
false;
    }

    static function 
get_id_instancia_activa()
    {
        if (
self::activado()) {
            return 
self::$memoria['instancia'];
        }
    }
    
    static function 
get_base_activa()
    {
        if (
self::activado()) {
            return 
toba_dba::get_db(self::$memoria['base']);
        }
    }
    
    static function 
get_db_defecto()
    {
        
$fuente toba_info_editores::get_fuente_datos_defecto(toba_editor::get_proyecto_cargado());
        return 
toba::db($fuentetoba_editor::get_proyecto_cargado());
    }

    static function 
get_proyecto_cargado()
    {
        if (
self::activado()) {
            return 
self::$memoria['proyecto'];
        }
    }
    
    static function 
set_proyecto_cargado($proyecto)
    {
        if (
self::$memoria['proyecto'] != $proyecto ) {
            
//Cambio el proyecto que se esta editando, elimino la sesion del anterior.
            
self::limpiar_memoria_proyecto_cargado();
        }
        
self::$memoria['proyecto'] = $proyecto;
        
self::get_parametros_previsualizacion(true);
    }
    
    
/**
     * Se cambio el item actual
     */
    
static function set_item_solicitado($item
    {
        if (isset(
$item) && $item[0] == self::$memoria['proyecto'] && 
                !isset(
self::$ultimo_item) && self::$ultimo_item[1] != $item[1]) {
            
self::$ultimo_item $item;            
                    
            
$modelo self::get_modelo_proyecto();

            if (isset(
self::$fuentes)) {
                foreach (
self::$fuentes as $fuente) {                
                    if (
self::$memoria['conexion_limitada'] && $fuente['permisos_por_tabla']) {
                        try {
                            
$rol $modelo->get_rol_prueba_db($fuente['fuente_datos'], $item[1]);
                            if (
toba::db()->existe_rol($rol)) {
                                
toba::db()->set_rol($rol);
                            } else {
                                
$rol $modelo->get_rol_prueba_db_basico($fuente['fuente_datos']);
                                
toba::db()->set_rol($rol);
                            }
                            
toba::logger()->info("Se cambio el rol postgres a '$rol'");                                                    
                        } catch (
toba_error_db $e) {
                            
toba::notificacion()->error("No fue posible cambiar el rol del usuario de conexion"$e->get_mensaje_log());
                        }
                    }
                }
            }
        }
    }
        
    static function 
get_punto_acceso_editor()
    {
        if (
self::activado()) {
            return 
self::$memoria['punto_acceso'];
        }
    }

    
/**
    *    Indica si el ADMIN se esta editando a si mismo
    */
    
static function acceso_recursivo()
    {
        if (
self::activado()) {
            return 
self::get_proyecto_cargado() == self::get_id();
        }
        return 
false;        
    }

    static function 
limpiar_memoria_proyecto_cargado()
    {
        if ( ! 
toba_editor::acceso_recursivo() ) {    //Si se esta editando el editor, no es necesario
            
$proyecto toba_editor::get_proyecto_cargado();
            if ( 
toba::manejador_sesiones()->existe_sesion_activa($proyecto) ) {
                
$msg 'El proyecto estaba en modo edicion y el usuario finalizo la sesion del editor.';
                
toba::manejador_sesiones()->abortar_sesion_proyecto($proyecto$msg);
            } elseif (
toba::manejador_sesiones()->existe_proyecto_cargado($proyecto)) {
                
//El proyecto puede estar cargado para mostrar un item publico, como la pantalla de login.
                
toba::manejador_sesiones()->borrar_segmento_proyecto($proyecto);
            }
        }
    }

    
//---------------------------------------------------------------------------
    //-- 
    //---------------------------------------------------------------------------

    /**
    *    Inicializa el contexto del proyecto en edicion.
    *        (Utilizado en el analisis de codigo y la simulacion)
    */
    
function iniciar_contexto_proyecto_cargado()
    {
        if(!
self::acceso_recursivo()){
            
self::incluir_path_proyecto_cargado();
            
$info toba::proyecto()->cargar_info_basica(self::get_proyecto_cargado());
            if(
$info['contexto_ejecucion_subclase_archivo']&&$info['contexto_ejecucion_subclase_archivo']) {
                require_once(
$info['contexto_ejecucion_subclase_archivo']);
                
$contexto = new $info['contexto_ejecucion_subclase']();
                
$contexto->conf__inicial();
            }
        }
    }
    
    function 
incluir_path_proyecto_cargado()
    {
        if(!
self::acceso_recursivo()){
            
//La subclase puede incluir archivos del proyecto
            
$path_proyecto toba::instancia()->get_path_proyecto(toba_editor::get_proyecto_cargado()) . '/php';
            
agregar_dir_include_path($path_proyecto);
        }        
    }

    
//---------------------------------------------------------------------------
    //-- Manejo de la configuracion de PREVISUALIZACION
    //-- ( La previsualizacion es la ejecucion de un proyecto desde el ADMIN)
    //---------------------------------------------------------------------------

    /**
    *    Alimenta a la clase que representa al editor en JS
    */
    
static function get_parametros_previsualizacion_js()
    {
        
$param_prev self::get_parametros_previsualizacion();
        
$param_prev['proyecto'] = self::get_proyecto_cargado();
        return 
$param_prev;
    }

    
/**
     * @deprecated Desde 1.5 usar get_perfiles_funcionales_previsualizacion
     */
    
static function get_grupos_acceso_previsualizacion()
    {
        return 
self::get_perfiles_funcionales_previsualizacion();
    }
    

    static function 
get_perfiles_funcionales_previsualizacion()
    {
        
$param_prev self::get_parametros_previsualizacion();
        if(isset(
$param_prev['grupo_acceso'])) {
            
$grupos explode(','$param_prev['grupo_acceso'] );
            
$grupos array_map('trim'$grupos);
            return 
$grupos;
        } else {
            throw new 
toba_error("No estan definidos los perfiles de acceso a la previsualización. Desde toba_editor se pueden definir en la opción de Configuración > Previsualización");    
        }
    }    

    static function 
get_perfil_datos_previsualizacion()
    {
        
$param_prev self::get_parametros_previsualizacion();
        if(isset(
$param_prev['perfil_datos'])) {
            return 
$param_prev['perfil_datos'];
        }
    }
        
    
/**
     * Retorna la URL base del proyecto editado, basandose en la URL del PA (puede no ser la real..)
     * @return unknown
     */
    
static function get_url_previsualizacion()
    {
        
$pa '';
        if (isset(
self::$memoria['previsualizacion']['punto_acceso'])) {
            
$pa self::$memoria['previsualizacion']['punto_acceso'];
        }
        if (
strpos($pa'.php') !== false) {
            return 
dirname($pa);
        } else {
            return 
$pa;    
        }
    }
    

    
/**
    *    Recuperar las propiedades y setearlas en la sesion
    */
    
static function get_parametros_previsualizacion($refrescar false)
    {
        if (
$refrescar || !isset(self::$memoria['previsualizacion'])) {
            
$rs self::get_parametros_previsualizacion_db();
            if (
$rs) {
                
self::$memoria['previsualizacion'] = $rs;
            } else {
                 
self::$memoria['previsualizacion'] = null;
            }
        }
        return     
self::$memoria['previsualizacion'];
    }
    
    
/**
    *    Establecer las propiedades desde el editor
    */
    
static function set_parametros_previsualizacion($datos)
    {
        if (!( 
array_key_exists('punto_acceso'$datos) && array_key_exists('grupo_acceso'$datos))) {
            throw new 
toba_error('Los parametros de previsualizacion son incorrectos.');    
        }
        
self::$memoria['previsualizacion']['punto_acceso'] = $datos['punto_acceso'];
        
self::$memoria['previsualizacion']['grupo_acceso'] = $datos['grupo_acceso'];
        
self::$memoria['previsualizacion']['perfil_datos'] = $datos['perfil_datos'];
        if (
self::get_id_instancia_activa() == toba::instancia()->get_id() ) {
            
//Si estoy editando un proyecto en otra instancia, no tengo certeza de como guardar estos datos.
            
self::set_parametros_previsualizacion_db($datos);
        }
    }

    static function 
get_parametros_previsualizacion_db()
    {
        
$proyecto =  quote(self::get_proyecto_cargado()) ;
        
$usuario quote(toba::usuario()->get_id());
        
$sql "SELECT perfil_datos, grupo_acceso, punto_acceso
                FROM apex_admin_param_previsualizazion
                WHERE proyecto = 
$proyecto
                AND usuario = 
$usuario;";
        
//Esto se accede solo desde el ADMIN
        
$datos toba::db()->consultar($sql);
        if (
$datos) {
            return 
$datos[0];    
        }
        return 
null;
    }
    
    static function 
set_parametros_previsualizacion_db($datos)
    {
        
$rs self::get_parametros_previsualizacion_db();
        
$datos quote($datos);
        
$proyecto quote(self::get_proyecto_cargado());
        
$usuario quote(toba::usuario()->get_id());
        if (!
$rs) {
            
$sql "INSERT INTO apex_admin_param_previsualizazion (perfil_datos, grupo_acceso, punto_acceso, proyecto, usuario) 
                    VALUES (
{$datos['perfil_datos']}{$datos['grupo_acceso']}{$datos['punto_acceso']}$proyecto$usuario);";
        } else {
            
$sql "UPDATE apex_admin_param_previsualizazion
                    SET grupo_acceso = 
{$datos['grupo_acceso']}
                        perfil_datos = 
{$datos['perfil_datos']}
                        punto_acceso = 
{$datos['punto_acceso']}
                    WHERE proyecto = 
$proyecto
                    AND usuario = 
$usuario;";
        }
        
//Esto se accede solo desde el ADMIN
        
toba::db()->ejecutar($sql);
    }

    
/**
     *
     * @return toba_modelo_proyecto
     */
    
static function get_modelo_proyecto()
    {
        return 
toba_modelo_catalogo::instanciacion()->get_proyecto(self::get_id_instancia_activa(), self::get_proyecto_cargado());
    }
    
    
//---------------------------------------------------------------------------
    //-- Generacion de VINCULOS al editor (desde un proyecto PREVISUALIZADO)
    //---------------------------------------------------------------------------

    /*
    *    Zona de vinculos de los items
    */
    
static function generar_zona_vinculos_item$item$accion$enviar_div_wrapper true )
    {
        if (! 
self::acceso_recursivo()) {
            
toba::solicitud()->set_cronometrar(true);
        }
        
toba_js::cargar_consumos_globales(array('utilidades/toba_editor'));
        
$html_ayuda_editor toba_recurso::ayuda(null'Presionando la tecla CTRL se pueden ver los enlaces hacia los editores de los distintos componentes de esta página');
        
$html_ayuda_cronometro toba_recurso::ayuda(null'Ver los tiempos de ejecución en la generación de esta página');
        
$html_ayuda_ajax toba_recurso::ayuda(null'Activar/Desactivar navegación interna de la operación via AJAX');
        
$html_ayuda_editor toba_recurso::ayuda(null'Volver al editor de toba');
        
$solicitud toba::solicitud()->get_id();
        
$link_cronometro toba::vinculador()->get_url('toba_editor''1000263'null, array('prefijo'=>toba_editor::get_punto_acceso_editor()));
        
$link_analizador_sql toba::vinculador()->get_url('toba_editor''30000030'null, array('prefijo'=>toba_editor::get_punto_acceso_editor()));
        
$link_logger toba::vinculador()->get_url('toba_editor''1000003'null, array('prefijo'=>toba_editor::get_punto_acceso_editor()));
        
$link_archivos toba::vinculador()->get_url('toba_editor''30000029'null, array('prefijo'=>toba_editor::get_punto_acceso_editor()));
        
$estilo toba::proyecto()->get_parametro('estilo');        
        if (
$enviar_div_wrapper) {
            echo 
"<div id='editor_previsualizacion'>";
        
/*echo "<div id='editor_previsualizacion_colap'><img style='cursor:pointer;_cursor:hand;' title='Ocultar la barra'
                src='".toba_recurso::imagen_toba('nucleo/expandir_izq.gif', false)."'
                onclick='toggle_nodo(\$\$(\"editor_previsualizacion_cont\"))'/></div>";*/
        
}
        echo 
"<span id='editor_previsualizacion_cont'>";
        echo 
"<span id='editor_previsualizacion_vis'>";

        
//Logger
        
list($log_nivel$log_cant) = toba::logger()->get_mensajes_minimo_nivel();
        
$niveles toba::logger()->get_niveles();
        
$niveles[0] = 'INFO';
        
$img self::imagen_editor('logger/'.strtolower($niveles[$log_nivel]).'.gif'true);
        
$html_ayuda_logger toba_recurso::ayuda(null'Visor de logs');        
        echo 
"<a href='$link_logger' target='logger' $html_ayuda_logger >".$img.$log_cant</a>\n";

        
//Cronometro
        
toba::cronometro()->marcar('Resumen toba_editor');
        echo 
"<a href='$link_cronometro' target='logger' $html_ayuda_cronometro >\n".
                
toba_recurso::imagen_toba('clock.png'true).
                
' '.round(toba::cronometro()->tiempo_acumulado(), 2). ' seg'."</a> ";
                
        
//Memoria
        
if (function_exists('memory_get_peak_usage')) {
            
$memoria_pico memory_get_peak_usage();
            echo 
toba_recurso::imagen_toba('memory.png'true1616'Pico máximo de memoria que ha consumido el script actual');
            echo 
' '.file_size($memoria_pico0).' ';
        }
        
        
//Base de datos
        
$fuente toba_admin_fuentes::instancia()->get_fuente_predeterminada(falsetoba_editor::get_proyecto_cargado());
        if (
$fuente) {
            try {
                
$base toba_admin_fuentes::instancia()->get_fuente($fuentetoba_editor::get_proyecto_cargado())->get_db();
                
$info_db $base->get_info_debug();
                
$total 0;
                foreach(
$info_db as $info) {
                    if (isset(
$info['fin'])) {
                        
$total += ($info['fin'] - $info['inicio']);
                    }
                }
                
$rol toba::db()->get_rol_actual();
                
toba::memoria()->set_dato_instancia('previsualizacion_consultas', array('fuente' => $fuente'datos' => $info_db));
                echo 
"<a href='$link_analizador_sql' target='logger'>".toba_recurso::imagen_toba('objetos/datos_relacion.gif'true1616'Ver detalles de las consultas y comandos ejecutados en este pedido de página').
                    
count($info_db). " ($rol)</a>";
                    
            } catch (
toba_error $e) {
                
//Si no se tiene acceso a la base no se hace nada
            
}
        }
        
        
//Archivos
        
$archivos self::get_archivos_incluidos();        
        
$total 0;
        foreach (
$archivos as $arch) {
            
$total += filesize($arch);
        }
        
toba::memoria()->set_dato_instancia('previsualizacion_archivos'$archivos);
        echo 
"<a href='$link_archivos' target='logger'>".toba_recurso::imagen_toba('nucleo/php.gif'true1616'Ver detalle de archivos .php del proyecto incluidos en este pedido de página').
            
' '.count($archivos)." arch. (".file_size($total,0).')</a>';
                
        
//Session        
        
$tamano file_size(strlen(serialize($_SESSION)), 0);
        echo 
toba_recurso::imagen_toba('sesion.png'true1616'Tamaño de la sesión').$tamano  ";
        echo 
"</span>";        
        
        
//-- ACCIONES
        
echo "<span id='editor_previsualizacion_acc'>";
        
$perfiles = array(apex_ef_no_seteado => '-- Todos --');
        foreach (
toba::manejador_sesiones()->get_perfiles_funcionales() as $perfil) {
            
$perfiles[$perfil] = $perfil;
        }
        
$actuales toba::manejador_sesiones()->get_perfiles_funcionales_activos();
        
$actual null;
        if (
count($actuales) == 1) {
            
$actual current($actuales);
        }
        
$js "title='Cambia el perfil actual del usuario' onchange=\"location.href = toba_prefijo_vinculo + '&perfil_activo=' + this.value\"";
        echo 
"Perfiles: ".toba_form::select('cambiar_perfiles'$actual$perfiles'ef-combo'$js);        

        
//Usuario de la base
        
$hay_limitado false;
        if (! isset(
self::$fuentes)) {
            
self::$fuentes toba_info_editores::get_fuentes_datos(toba_editor::get_proyecto_cargado());    
        }
        foreach (
self::$fuentes as $fuente) {
            if (
$fuente['permisos_por_tabla']) {
                
$hay_limitado true;
            }
        }        
        
        if (
$hay_limitado) {
            
$actual self::$memoria['conexion_limitada'] ? 'limitado' 'normal';
            
$datos = array("normal" => "Normal""limitado" => "Limitados");
            
$js "title='Cambia temporalmente el usuario de conexión a la base' onchange=\"location.href = toba_prefijo_vinculo + '&usuario_conexion=' + this.value\"";
            echo 
"Permisos DB: ".toba_form::select('cambiar_rol'$actual$datos'ef-combo'$js);
        }
        
        
        
//Skin
        
$skins rs_convertir_asociativo(toba_info_editores::get_lista_skins(), array('estilo','proyecto'), 'descripcion');
        
$js "title='Cambia temporalmente el skin de la aplicación' onchange=\"location.href = toba_prefijo_vinculo + '&skin=' + this.value\"";
        
$defecto toba::proyecto()->get_parametro('estilo').apex_qs_separador.toba::proyecto()->get_parametro('estilo_proyecto');
        echo 
"Skin: ".toba_form::select('cambiar_skin'$defecto$skins'ef-combo'$js);
        
        
//AJAX        
        
echo "<a id='editor_ajax' href='javascript: editor_cambiar_ajax()' $html_ayuda_ajax>".toba_recurso::imagen_toba('objetos/ajax_off.png'true)."</a>\n";
                
        
//Edicion
        
echo    "<a href='javascript: editor_cambiar_vinculos()' $html_ayuda_editor >".
        
toba_recurso::imagen_toba('edicion_chico.png'true)."</a>\n";

        
//Arbol
        
$vinculos self::get_vinculos_item($item$accion);
        if (isset(
$vinculos[1])) {
            
self::mostrar_vinculo($vinculos[1]);
        }
        
        
//Editor
        
echo "<a href='#' onclick='return toba_invocar_editor()' $html_ayuda_editor>".toba_recurso::imagen_toba('icono_16.png'true)."</a>\n";
        echo 
"</span>";
        echo 
"</span>";
        
            
        echo 
"<div class='div-editor' style='position:fixed; top: 85px; left: 1px;'>";
        foreach(
self::get_vinculos_item($item$accion) as $vinculo) {
            
self::mostrar_vinculo($vinculo);
        }
        echo 
"</div>";
        if (
$enviar_div_wrapper) {
            echo 
"</div>";

        }
    }
    
    static protected function 
get_archivos_incluidos()
    {
        
$todos get_included_files();
        
$path_relativo toba_manejador_archivos::path_a_unix(toba::proyecto()->get_path());
        
$archivos = array();
        foreach (
$todos as $archivo) {
            
$archivo toba_manejador_archivos::path_a_unix($archivo);
            if (
strpos($archivo$path_relativo) !== false) {
                
$archivos[] = $archivo;
            }
        }
        return 
$archivos;
    }

    static protected function 
mostrar_vinculo($vinculo)
    {
        if (! isset(
$vinculo['js'])) {
            echo 
"<a href='#' title='{$vinculo['tip']}' onclick=\"return toba_invocar_editor('{$vinculo['frame']}','{$vinculo['url']}')\">";
        } else {
            echo 
"<a href='#' title='{$vinculo['tip']}' onclick=\"return {$vinculo['js']}\">";
        }
        if (isset(
$vinculo['imagen_origen']) && $vinculo['imagen_origen'] == 'proyecto') {
            echo 
self::imagen_editor($vinculo['imagen'],true);
        } else {
            echo 
toba_recurso::imagen_toba($vinculo['imagen'],true);
        }
        echo 
"</a>\n";
    }

    
/*
    *    Acceso a la edicion del componente
    */
    
static function generar_zona_vinculos_componente$componente$editor$clase$con_subclase )
    {
        
$salida "<span class='ei-base' style='height: 55px' >";
        if (
$con_subclase) {
            
$salida .= self::get_utileria_editor_abrir_php(array('componente'=>$componente[1], 'proyecto' => $componente[0]));
        }
        foreach(
self::get_vinculos_componente($componente$editor$clase) as $vinculo) {
            
$salida .= "<a href='#' onclick=\"return toba_invocar_editor('{$vinculo['frame']}','{$vinculo['url']}')\">";
            if (
$vinculo['imagen_recurso_origen'] == 'apex') {
                
$salida .= toba_recurso::imagen_toba($vinculo['imagen'],true,null,null,$vinculo['etiqueta']);
            } else {
                
$salida .= self::imagen_editor($vinculo['imagen'],true,null,null,$vinculo['etiqueta']);
            }
            
$salida .= "</a>\n";
        }
        
$salida .= "</span>";
        return 
$salida;
    }

    
/*
    *    Vinculos a EFs y a COLUMNAS
    */
    
static function get_vinculo_subcomponente($item_editor$parametros$opciones=array(),$frame='frame_centro')
    {
        
$imagen='objetos/editar.gif';
        if(!isset(
$opciones['celda_memoria'])) $opciones['celda_memoria'] = 'central';
        if(!isset(
$opciones['prefijo'])) $opciones['prefijo'] = self::get_punto_acceso_editor();
        if(!isset(
$opciones['validar'])) $opciones['validar'] = false;
        if(!isset(
$opciones['menu'])) $opciones['menu'] = true;
        
$url toba::vinculador()->get_url(self::get_id(),$item_editor,$parametros,$opciones);
        
$html "<a href='#' title='Editar' class='div-editor' onclick=\"return toba_invocar_editor('$frame','$url')\">";
        
$html .= toba_recurso::imagen_toba($imagen,true);
        
$html .= '</a>';
        return 
$html;
    }

    static function 
get_vinculos_item$item$accion )
    {
        
//Celda de memoria central
        //punto de acceso del admin

        
$proyecto self::get_proyecto_cargado();
        
$vinculos = array();
        
        
//Accion
        
if ($accion != '') {
            
$parametros[apex_hilo_qs_zona] = $proyecto apex_qs_separador $item;
            
$opciones = array('servicio' => 'ejecutar''zona' => false'celda_memoria' => 'ajax''menu' => true);
            
$vinculo toba::vinculador()->get_url(toba_editor::get_id(), "30000014"$parametros$opciones);
            
$js "toba.comunicar_vinculo('$vinculo')";
            
$vinculo = array();            
            
$vinculo['js'] = $js;
            
$vinculo['frame'] = '';
            
$vinculo['imagen'] = 'reflexion/abrir.gif';
            
$vinculo['imagen_origen'] = 'proyecto';
            
$vinculo['tip'] = 'Abrir el PHP del ítem en el escritorio';
            
$vinculos[] = $vinculo;
        }

        
//Etitor Item
        
$opciones = array();
        
$opciones['celda_memoria'] = 'central';
        
$opciones['prefijo'] = self::get_punto_acceso_editor();
        
$opciones['validar'] = false;
        
$parametros = array(apex_hilo_qs_zona=> $proyecto apex_qs_separador $item);
        
$vinculo = array();
        
$vinculo['url'] = toba::vinculador()->get_url(self::get_id(),'1000240',$parametros,$opciones);
        
$vinculo['frame'] = 'frame_centro';
        
$vinculo['imagen'] = 'objetos/editar.gif';
        
$vinculo['tip'] = 'Ir al editor de la operación.';
        
$vinculos[] = $vinculo;

        
//Catalogo Unificado
        
$parametros = array("proyecto"=>$proyecto,"item"=>$item);
        
$opciones = array();
        
$opciones['celda_memoria'] = 'lateral';
        
$opciones['prefijo'] = self::get_punto_acceso_editor();
        
$vinculo = array();        
        
$vinculo['url'] = toba::vinculador()->get_url(self::get_id(),'1000239',$parametros,$opciones);
        
$vinculo['frame'] = 'frame_lista';
        
$vinculo['imagen'] = 'objetos/arbol.gif';
        
$vinculo['tip'] = 'Ver composicion de la operación en el editor.';
        
$vinculos[] = $vinculo;

/*        //Consola JS
        //-- Link a la consola JS
        $vinculos[2]['url'] = toba::vinculador()->get_url(self::get_id(),'/admin/objetos/consola_js');
        $vinculos[2]['frame'] = 'frame_lista';
        $vinculos[2]['imagen'] = 'solic_consola.gif';
        $vinculos[2]['tip'] = 'Ir al editor de la operación.';
*/
        
return $vinculos;
    }

    static function 
get_vinculos_componente($componente,$editor,$clase
    {
        
$vinculos = array();
        
$opciones['celda_memoria'] = 'central';
        
$opciones['menu'] = true;
        
$opciones['prefijo'] = self::get_punto_acceso_editor();
        
$opciones['validar'] = false;

        
$vinculos call_user_func(array('toba_datos_editores''get_pantallas_'.$clase));        
        foreach(
array_keys($vinculos) as $id) {
            
$parametros = array(apex_hilo_qs_zona => implode(apex_qs_separador,$componente),
                                
'etapa' => $vinculos[$id]['identificador']);
            
$vinculos[$id]['url'] = toba::vinculador()->get_url(self::get_id(),$editor,$parametros,$opciones);
            
$vinculos[$id]['frame'] = 'frame_centro';
        }
        return 
$vinculos;
    }

    static function 
get_vinculo_evento($componente$editor$evento)
    {
        
$opciones['celda_memoria'] = 'central';
        
$opciones['prefijo'] = self::get_punto_acceso_editor();
        
$opciones['validar'] = false;
        
$parametros = array(apex_hilo_qs_zona=>implode(apex_qs_separador,$componente), 'evento' => $evento);
        
$url toba::vinculador()->get_url(self::get_id(),$editor,$parametros,$opciones);
        
$salida "<span class='div-editor'>";        
        
$salida .= "<a href='#' title='Editar propiedades del evento' onclick=\"return toba_invocar_editor('frame_centro', '$url')\">";
        
$salida .= toba_recurso::imagen_toba('objetos/editar.gif',true);
        
$salida .= "</a>\n";
        
$salida .= "</span>";        
        return 
$salida;
    }
    
    static function 
get_vinculo_pantalla($componente$editor$pantalla)
    {
        
$opciones['celda_memoria'] = 'central';
        
$opciones['prefijo'] = self::get_punto_acceso_editor();
        
$opciones['validar'] = false;
        
$parametros = array(apex_hilo_qs_zona=>implode(apex_qs_separador,$componente), 'pantalla' => $pantalla);
        
$url toba::vinculador()->get_url(self::get_id(),$editor,$parametros,$opciones);
        
$salida "<span class='div-editor' style='position:absolute'>";        
        
$salida .= "<a href='#' title='Editar propiedades de la pantalla' onclick=\"return toba_invocar_editor('frame_centro', '$url')\">";
        
$salida .= toba_recurso::imagen_toba('objetos/editar.gif',true);
        
$salida .= "</a>\n";
        
$salida .= "</span>";        
        return 
$salida;        
    }
    
    static function 
get_utileria_editor_abrir_php($id_componente$icono='reflexion/abrir.gif')
    {
        
$parametros[apex_hilo_qs_zona] = $id_componente['proyecto'] . apex_qs_separador $id_componente['componente'];
        
$opciones = array('servicio' => 'ejecutar''zona' => false'celda_memoria' => 'ajax''menu' => true);
        
$vinculo toba::vinculador()->get_url(toba_editor::get_id(), "3463"$parametros$opciones);
        
$js "toba.comunicar_vinculo('$vinculo')";
        
$ayuda 'Abre la extensión PHP del componente en el editor del escritorio';
        return 
"<a href='#' title='$ayuda' onclick=\"$js\">".self::imagen_editor($iconotrue)."</a>";
    }    
    
    static function 
imagen_editor($imagen,$html=false,$ancho=null$alto=null,$tooltip=null,$mapa=null)
    {
        
$src toba_recurso::url_proyecto(self::get_id()) . "/img/" $imagen;
        if (
$html){
            return 
toba_recurso::imagen($src$ancho$alto$tooltip$mapa);
        }else{
            return 
$src;
        }
    }
    
    
//--------------------------------------------------------------------------
    // Abrir una fuente de datos del proyecto editado
    //--------------------------------------------------------------------------
    
    
static function db_proyecto_cargado($id_fuente)
    {
        
$fuente_datos toba_admin_fuentes::instancia()->get_fuente$id_fuente,
                                                                     
toba_editor::get_proyecto_cargado() );
        return 
$fuente_datos->get_db();        
    }
    
}
?>

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