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


Viewing file:     toba_modelo_nucleo.php (28.05 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php

class toba_modelo_nucleo extends toba_modelo_elemento
{
    
// Directorios de trabajo
    
protected $dir_sql;
    protected 
$dir_ddl;
    protected 
$ba_instancia 'toba_db_tablas_instancia';    // ba = base archivo
    
protected $ba_nucleo 'toba_db_tablas_nucleo';
    protected 
$ba_proyecto 'toba_db_tablas_proyecto';
    protected 
$ba_componente 'toba_db_tablas_componente';
    protected 
$ba_no_clasificadas 'toba_db_tablas_no_clasificadas';
    
// Parseo
    
protected $secuencias = array();
    protected 
$tablas = array();
    protected 
$archivos_procesados 0;
    protected 
$cantidad_tablas_total 0;    
    protected 
$cantidad_secuencias_total 0;    
    protected 
$archivos;
    
// Plan de generacion de PHP
    
protected $plan;
    protected 
$catalogo;
    
// Sincro SVN    
    
private $sincro_archivos;
    
// Compilacion del nucleo
    
private $comp_archivos_nucleo;
    private 
$comp_archivos_modelo;
    
    
//------------------------------------------------
    // Informacion
    //------------------------------------------------

    
function get_sincronizador()
    {
        if ( ! isset( 
$this->sincro_archivos ) ) {
            
$this->sincro_archivos = new toba_sincronizador_archivos$this->get_dir_metadatos(), '|apex_|' );
        }
        return 
$this->sincro_archivos;
    }

    static function 
get_dir_ddl()
    {
        return 
toba_dir() . '/php/modelo/ddl';
    }
    
    static function 
get_dir_estructura_db()
    {
        return 
toba_dir() . '/php/modelo/estructura_db';        
    }

    static function 
get_dir_metadatos()
    {
        return 
toba_dir() . '/php/modelo/metadatos';        
    }

    
//-------------------------------------------------------------------
    // PARSEO de TABLAS toba para generar planes de export / import
    //-------------------------------------------------------------------

    /**
    *    Genera la informacion que describe el modelo de datos para todos los procesos toba
    */
    
function parsear_ddl()
    {
        try {
            
$this->get_archivos_ddl();
            
$this->parsear_archivos();
            
$this->analizar_tablas();
            
$this->generar_archivos_estructura();
            
$this->generar_archivos_catalogo();
        } catch ( 
toba_error $e ) {
            
$this->manejador_interface->error'Ha ocurrido un error durante el parseo.' );
            
$this->manejador_interface->error$e->getMessage() );
        }
    }

    
/**
    *    Crea la lista de archivos SQL del toba
    */
    
private function get_archivos_ddl()
    {
        
$directorio $this->get_dir_ddl();
        
$patron '|pgsql_a.*\.sql|';
        
$this->archivos toba_manejador_archivos::get_archivos_directorio$directorio$patron );
        
sort($this->archivos);
    }

    
/**
    *    Parsea los archivos. ( Genera las estructuras $this->tablas y $this->secuencias )
    */
    
private function parsear_archivos()
    {
        foreach(
$this->archivos as $archivo)
        {
            
//Intento abrir    el archivo
            
$fd    = @fopen ($archivo,    "r");
            if(!
is_resource($fd)){
                throw new 
toba_error("ERROR: '$archivo' no es un archivo valido\n");
            }
            
//Recorro el archivo
            
$table null//Referencia a una tabla.
            
if(isset($table)) unset($table);
            while (!
feof ($fd))    
            
//while((!feof    ($fd)) && $tabla_actual    < 3    )
            
{
                
$buffer    fgets($fd4096);    
                
//------- Entro    en una tabla
                
if(preg_match("/^create\ssequence/i",$buffer))
                {
                    
$temp =    preg_split("/\s+/",$buffer);
                    
$this->secuencias[] = $temp[2];
                    
$this->cantidad_secuencias_total++;
                }
                
//------- Entro    en una tabla
                
if(preg_match("/^create\stable/i",$buffer))
                {
                    
$temp =    preg_split("/\s+/",$buffer);
                    
$nombre_tabla $temp[2];
                    if(!isset(
$this->tablas[$nombre_tabla])){
                        
$this->tablas[$nombre_tabla] = array();
                    }
                    
//Apunto la referencia a la tabla
                    
$tabla =& $this->tablas[$nombre_tabla];
                    
$tabla['archivo'] = basename($archivo);
                    
$this->cantidad_tablas_total++;
                }
                
//------- Entre    en una propiedad
                
if(preg_match("/^--:/",$buffer))
                {
                    
$temp =    preg_split("/(\s*):(\s*)/",$buffer);
                    if(!isset(
$temp[1])||!isset($temp[2])){    
                        throw new 
toba_error("Error parseando la linea: $temp\n (archivo: $archivo)");
                    }
                    
$tabla[trim($temp[1])]=addslashes(trim($temp[2]));
                }
                
//------- Entre    en una columna
                
if(preg_match("/^\s*?\w+\s*?.*NULL/",$buffer))
                {
                    
$temp =    preg_split("/\s+|\t/",$buffer);    
                    
//print_r($temp);
                    
$columna $temp[1];
                    
//$columna_definicion    = addslashes(trim(preg_replace("/^\s*?\w+\s*?/","",$buffer)));
                    //$tabla['columnas'][$columna] = $columna_definicion;
                    
$tabla['columnas'][] = $columna;    
                }
            }
            
$this->archivos_procesados++;    
            
fclose ($fd);
        }
    }
    
    
/**
    *    Analiza las tablas creando planes de dumpeo. ( Genera la estructura $this->plan,
    *        que posee la lista de tablas por dominio y sus respectivos catalogos.
    */
    
private function analizar_tablas()
    {
        foreach(
$this->tablas as $id => $tabla) {
            
//-- Clasificacion de tablas --
            
$es_instancia = ( isset( $tabla['instancia'] ) && ( $tabla['instancia'] == '1' ) );
            
$es_log = ( isset( $tabla['historica'] ) && ( $tabla['historica'] == '1' ) );
            
$es_usuario = ( isset( $tabla['usuario'] ) && ( $tabla['usuario'] == '1' ) );
            
$dump_componente = ( $tabla['dump'] == 'componente' );
            
$dump_proyecto = ( ($tabla['dump'] == 'multiproyecto') || ($tabla['dump'] == 'nucleo_multiproyecto') );
            
$dump_nucleo = ( $tabla['dump'] == 'nucleo' );
            
$dump_nucleo_multiproyecto = ( $tabla['dump'] == 'nucleo_multiproyecto' );
            
$dump_permisos = ( $tabla['dump'] == 'permisos' );
            
$sin_dump = ( $tabla ['dump'] == 'no_requerido');
            
            
//-- Controles de integridad de la DEFINICION del plan --
            
if ( $dump_componente && ( $es_instancia || $es_log ) ) {
                throw new 
toba_error("La tabla '$id' posee un error en el plan de dumpeo: componente + (historica || instancia).");
            }
            if( 
$es_instancia && $es_log ) {
                throw new 
toba_error("La tabla '$id' posee un error en el plan de dumpeo: historica + instancia.");
            }
            if( !( 
$dump_componente || $dump_proyecto || $dump_nucleo || $dump_permisos || $sin_dump) ) {
                throw new 
toba_error("La tabla '$id' no posee una modalidad de dumpeo definida.");
            }
            
//-- Armo el PLAN --
            
if ( $es_instancia ) {
                
$this->plan$this->ba_instancia ]['tablas'][] = $id;
                if ( 
$dump_proyecto ) {
                    if ( 
$es_usuario ) {
                        
$this->plan$this->ba_instancia ]['indices']['get_lista_proyecto_usuario'][] = $id;
                    } else {
                        
$this->plan$this->ba_instancia ]['indices']['get_lista_proyecto'][] = $id;
                    }
                } elseif ( 
$dump_nucleo ) {
                    if ( 
$es_usuario ) {
                        
$this->plan$this->ba_instancia ]['indices']['get_lista_global_usuario'][] = $id;
                    } else {
                        
$this->plan$this->ba_instancia ]['indices']['get_lista_global'][] = $id;
                    }
                }
            } elseif ( 
$es_log ) {
                if (! 
$sin_dump){
                
$this->plan$this->ba_instancia ]['tablas'][] = $id;
                }
                if ( 
$dump_proyecto ) {
                    
$this->plan$this->ba_instancia ]['indices']['get_lista_proyecto_log'][] = $id;
                } elseif ( 
$dump_nucleo ) {
                    
$this->plan$this->ba_instancia ]['indices']['get_lista_global_log'][] = $id;
                }
            } else {
                if ( 
$dump_componente ) {
                    
$this->plan$this->ba_componente ]['tablas'][] = $id;
                    
$this->plan$this->ba_componente ]['indices']['get_lista'][] = $id;
                } elseif ( 
$dump_proyecto ) {
                    
$this->plan$this->ba_proyecto ]['tablas'][] = $id;
                    
$this->plan$this->ba_proyecto ]['indices']['get_lista'][] = $id;
                    if ( 
$dump_nucleo_multiproyecto ) {
                        
$this->plan$this->ba_nucleo ]['tablas'][] = $id;
                        
$this->plan$this->ba_nucleo ]['indices']['get_lista_nucleo_multiproyecto'][] = $id;
                    }
                }  elseif ( 
$dump_permisos ) {
                    
$this->plan$this->ba_proyecto ]['tablas'][] = $id;
                    
$this->plan$this->ba_proyecto ]['indices']['get_lista_permisos'][] = $id;
                } elseif ( 
$dump_nucleo ) {
                    
$this->plan$this->ba_nucleo ]['tablas'][] = $id;
                    
$this->plan$this->ba_nucleo ]['indices']['get_lista'][] = $id;
                } else {
                    
//Las tablas que entran aca no son catalogadas en ningun lado
                    
$this->plan$this->ba_no_clasificadas ]['tablas'][] = $id;
                    
$this->plan$this->ba_no_clasificadas ]['indices']['get_lista'][] = $id;
                }
            }
            
//Armo el catalogo GENERAL
            
$this->catalogo['toba_db_catalogo_general'][] = $id;
        }
    }

    
/**
    *    Crea los archivos PHP que describen el modelo. Utiliza $this->plan,
    *        por cada entrada crea una clase con N metodos catalogo y un metodo
    *        informativo por tabla
    */
    
private function generar_archivos_estructura()
    {
        foreach(
array_keys($this->plan) as $nombre ) {
            
$this->manejador_interface->titulo$nombre );
            
$clase = new toba_clase_datos$nombre );
            
//Creo los indices
            
foreach ( $this->plan[$nombre]['indices'] as $id => $indice) {
                
$clase->agregar_metodo_datos$id$indice );
            }
            
//Informacion de cada tabla
            
foreach($this->plan[$nombre]['tablas'] as $tabla) {
                
$this->manejador_interface->mensaje("Tabla: $tabla");
                
$clase->agregar_metodo_datos$tabla$this->tablas[$tabla] );
            }
            
$clase->guardar$this->get_dir_estructura_db() .'/'.$nombre.'.php' );
        }
    }

    private function 
generar_archivos_catalogo()
    {
        
$this->manejador_interface->titulo("Creacion de catalogos");
        foreach( 
array_keys$this->catalogo ) as $nombre ) {
            
$this->manejador_interface->mensaje"Catalogo: $nombre);
            
$clase = new toba_clase_datos$nombre );
            
//Informacion de cada tabla
            
$clase->agregar_metodo_datos'get_tablas' $this->catalogo$nombre ] );
            
$clase->guardar$this->get_dir_estructura_db() .'/'.$nombre.'.php' );
        }
    }

    
//-------------------------------------------------------------------
    // Conversion de archivos DDL a mysql
    //-------------------------------------------------------------------

    
function migrar_ddl()
    {
        
$this->manejador_interface->mensaje('Migrar DDL postgresql a la sintaxis de otros motores');
        
$directorio toba_modelo_nucleo::get_dir_ddl();
        
$archivos toba_manejador_archivos::get_archivos_directorio$directorio'|.*\.sql|' );
        
sort($archivos);
        
//Migracion a MYSQL
        
$dir toba_modelo_nucleo::get_dir_ddl() . '/mysql/';
        foreach( 
$archivos as $archivo ) {
            
$sql $this->get_ddl_mysql($archivo);
            
toba_manejador_archivos::crear_archivo_con_datos($dir basename($archivo), $sql);
        }
    }
    
    
/**
    *    Convierte de la sintaxis de postgres a la de mysql
    
            Problemas
                - No se puede llamar a un campo SQL
                - El campo item es un varchar de 60 con autoincrement!!
                - PUede haber solo una auto_increment (apex_item tiene varias)

            Actualizacion inicial de secuencias con INSERT
            recuperacion de secuencias de tablas con mas de una PK multiple son distintas
    */
    
private function get_ddl_mysql($archivo)
    {
        
$this->manejador_interface->mensaje('Procesando: ' $archivo);
        
$renglones file($archivo);
        
$sql '';
        foreach(
$renglones as $renglon) {
            
//Las secuencias
            
if(preg_match("/^create\ssequence/i",$renglon)){
                continue;
            }
            
//Elimino los comentarios generales
            
if(preg_match("/^\s*--/",$renglon)){
                continue;
            }
            
//Saco comentarios lineas
            
$renglon preg_replace("/--.*$/",'',$renglon);
            
//Saco comillas dobles
            
$renglon preg_replace("/\"/",' ',$renglon);
            
//Cambio la declaracion del TIMESTAMP
            
$renglon preg_replace("/(?<!default)\stimestamp.*zone/i",' timestamp ',$renglon);
            
//Cambio la declaracion del TIME
            
$renglon preg_replace("/(?<!default)\stime.*zone/i",' time ',$renglon);
            
//Pongo los VARCHAR que no tienen largo definido como text
            
$renglon preg_replace("/varchar(?!\\s?\()/i",'text',$renglon);
            
//Marco el tipo de tabla como InnoDB
            
$renglon preg_replace("/^\s*\);\s*$/",") ENGINE=InnoDB;\n",$renglon);
            
//Saco la declaracion de constraints especifica de postgres
            
$renglon preg_replace("/DEFERRABLE|INITIALLY|IMMEDIATE/","",$renglon);
            
//Tipos de datos
            
$renglon preg_replace("/\Wint4\W/","integer",$renglon);
            
//Cambio las secuencias
            
$renglon preg_replace("/default\s*nextval\s*\(.*\)/i"," auto_increment ",$renglon);


            
//fatan las enumeraciones

            //--- Temporales ---     SHOW INNODB STATUS

            //No se puede llamar "sql" a una columna
            
$renglon preg_replace("/\Wsql\W/","nosql",$renglon);
            
$renglon preg_replace("/\Witem\s*varchar\(60\).*NOT NULL/"," item varchar(60) NOT NULL ",$renglon);
            
$renglon preg_replace("/\Witem_id\s*integer.*NULL/"," item_id integer NULL",$renglon);
            
$sql .= $renglon;
        }
        return 
$sql;
    }

    
//-------------------------------------------------------------------
    // EXPORTACION de TABLAS con METADATOS del NUCLEO
    //-------------------------------------------------------------------

    /*
    *    Exporta los metadatos correspondientes a las tablas maestras del sistema
    */
    
function exportar(toba_modelo_instancia $instancia)
    {
        
$this->exportar_tablas_nucleo($instancia);
        
$this->exportar_tablas_nucleo_multiproyecto($instancia);
        
$this->get_sincronizador()->sincronizar();
    }

    function 
exportar_tablas_nucleo(toba_modelo_instancia $instancia)
    {
        try {
            
$this->manejador_interface->titulo"Tablas NUCLEO" );
            
toba_manejador_archivos::crear_arbol_directorios$this->get_dir_metadatos() );
            foreach ( 
toba_db_tablas_nucleo::get_lista() as $tabla ) {
                
$this->manejador_interface->mensaje"tabla  --  $tabla);
                
$definicion toba_db_tablas_nucleo::$tabla();
                
//Genero el SQL
                
$sql 'SELECT ' implode(', '$definicion['columnas']) .
                        
" FROM $tabla " .
                        
" ORDER BY {$definicion['dump_order_by']} ;\n";
                
$contenido "";
                
$datos $instancia->get_db()->consultar$sql );
                
$regs count$datos );
                if ( 
$regs ) {
                    
$columnas_orden array_map('trim'explode(',',$definicion['dump_order_by']) );
                    
$datos rs_ordenar_por_columnas$datos$columnas_orden );
                }
                for ( 
$a 0$a $regs $a++ ) {
                    
$contenido .= sql_array_a_insert$tabla$datos[$a], $instancia->get_db() )."\n";
                }
                if ( 
trim$contenido ) != '' ) {
                    
$this->guardar_tabla_archivo($tabla$contenido);
                }
            }
        } catch ( 
toba_error $e ) {
            
$this->manejador_interface->error'Ha ocurrido un error durante la exportacion.' );
            
$this->manejador_interface->error$e->getMessage() );
        }
    }

    private function 
exportar_tablas_nucleo_multiproyecto(toba_modelo_instancia $instancia)
    {
        
$this->manejador_interface->titulo"Tablas NUCLEO - PROYECTO" );
        foreach ( 
toba_db_tablas_nucleo::get_lista_nucleo_multiproyecto() as $tabla ) {
            
$definicion toba_db_tablas_nucleo::$tabla();
            
//Genero el SQL
            
if( isset($definicion['dump_where']) && ( trim($definicion['dump_where']) != '') ) {
                    
$w stripslashes($definicion['dump_where']);
                    
$where str_replace("%%",'toba'$w);
            } else {
                    
$where " ( proyecto = 'toba')";
            }
            
$sql 'SELECT ' implode(', '$definicion['columnas']) .
                    
" FROM $tabla " .
                    
" WHERE $where " .
                    
//" WHERE {$definicion['dump_clave_proyecto']} = '".$this->get_id()."}' " .
                    
" ORDER BY {$definicion['dump_order_by']} ;\n";
            
//$this->manejador_interface->mensaje( $sql );
            
$contenido "";
            
$datos $instancia->get_db()->consultar($sql);
            
$regs count$datos );
            if ( 
$regs ) {
                
$columnas_orden array_map('trim'explode(',',$definicion['dump_order_by']) );
                
$datos rs_ordenar_por_columnas$datos$columnas_orden );
            }
            
$this->manejador_interface->mensaje"TABLA  $tabla  --  $regs);
            for ( 
$a 0$a $regs $a++ ) {
                
$contenido .= sql_array_a_insert$tabla$datos[$a], $instancia->get_db() )."\n";
            }
            if ( 
trim$contenido ) != '' ) {
                
$this->guardar_tabla_archivo($tabla$contenido);
            }
        }
    }

    private function 
guardar_tabla_archivo$tabla$contenido )
    {
        
$archivo $this->get_dir_metadatos() .'/'$tabla '.sql';
        
file_put_contents$archivo$contenido );
        
$this->get_sincronizador()->agregar_archivo$archivo );
    }
    
    
//------------------------------------------------------------------------
    //-- PARSEO de los EDITORES ----------------------------------------------
    //------------------------------------------------------------------------

    
function parsear_editores(toba_modelo_instancia $instancia)
    {
        
toba_contexto_info::set_db($instancia->get_db());
        
//--- Se busca el CI asociado a cada clase
        
$sql "SELECT
                    c.clase,
                     o.proyecto,
                    o.objeto
                FROM
                    apex_clase c,
                    apex_item_objeto io,
                    apex_objeto o
                WHERE
                    c.clase IN ('"
implode("','"toba_info_editores::get_lista_tipo_componentes() ) ."')    AND
                    c.proyecto = 'toba' AND
                    c.editor_item = io.item AND                -- Se busca el item editor
                    c.editor_proyecto = io.proyecto AND
                    io.objeto = o.objeto AND                -- Se busca el CI del item
                    io.proyecto = o.proyecto AND
                    o.clase = 'toba_ci'"
;
        
$rs $instancia->get_db()->consultar($sql);
        
        
$clase_php = new toba_clase_datos"toba_datos_editores" );        
        foreach (
$rs as $datos) {
            
//--- Se buscan las pantallas asociadas a un CI especifico
            
$this->manejador_interface->mensaje("Procesando " $datos['clase'] . "...");
            
$proyecto $instancia->get_db()->quote($datos['proyecto']);
            
$objeto $instancia->get_db()->quote($datos['objeto']);
            
$sql "
                SELECT
                    pant.identificador,
                    pant.etiqueta,
                    pant.imagen,
                    pant.imagen_recurso_origen
                FROM
                    apex_objeto_ci_pantalla pant
                WHERE
                        pant.objeto_ci_proyecto = 
$proyecto
                    AND pant.objeto_ci = 
$objeto
                ORDER BY pant.orden
            "
;
            
$pantallas $instancia->get_db()->consultar($sql);
            
$clase_php->agregar_metodo_datos'get_pantallas_'.$datos['clase'] , $pantallas );
        }
        
$dir toba_dir()."/php/modelo/info";
        
$clase_php->guardar$dir.'/toba_datos_editores.php' );
    }
    
    function 
get_archivos_js_propios($patron_incl=null$patron_excl=null)
    {
        
$dir_js toba_dir().'/www/js';        
        
$archivos = array();        
        if (! isset(
$patron_incl)) {
            
//--- Algunos archivos se ponen por adelantado porque requieren un orden de inclusión
            
$archivos[] = $dir_js."/basicos/basico.js";        
            
$archivos[] = $dir_js."/basicos/toba.js";
            
$archivos[] = $dir_js."/componentes/ei.js";
            
$archivos[] = $dir_js."/componentes/ei_formulario.js";
            
$archivos[] = $dir_js."/componentes/ei_formulario_ml.js";
            
$archivos[] = $dir_js."/efs/ef.js";
            
$patron '/.\.js/';    
        }
        
        
$dirs = array($dir_js.'/basicos'$dir_js.'/componentes'$dir_js.'/efs');
        foreach (
$dirs as $directorio) {
            
$nuevos toba_manejador_archivos::get_archivos_directorio($directorio$patron_incl);
            
$archivos array_merge($archivos$nuevos);
        }
        if (isset(
$patron_excl)) {
            
$nuevos = array();
            foreach( 
$archivos as $archivo) {
                if(! 
preg_match$patron_excl$archivo )){
                    
$nuevos[] = $archivo;
                }
            }
            
$archivos $nuevos;
        }
        
$archivos array_unique($archivos);
        return 
$archivos;
    }
    
    function 
comprimir_js()
    {
        
$archivos $this->get_archivos_js_propios();
        
$total 0;
        require_once(
toba_dir() . '/php/3ros/jscomp/JavaScriptCompressor.class.php');
        require_once(
toba_dir() . '/php/3ros/jscomp/BaseConvert.class.php');
        
$comp = new JavaScriptCompressor(false);
        
$salida = array();
        
$this->manejador_interface->mensaje('Comprimiendo '.count($archivos).' archivo/s'false);                
        foreach (
$archivos as $archivo) {
            if (
strpos($archivo"www/js/toba_") !== false) {
                
//--- Evita comprimir dos veces
                
continue;    
            }
            
$atr stat($archivo);
            
$total += $atr['size'];
            
$nuevo $comp->getClean(array('code' =>file_get_contents($archivo), 'name' => basename($archivo)));
            
$salida[] = $nuevo;
            
$this->manejador_interface->progreso_avanzar();            
        }
        
$this->manejador_interface->progreso_fin();        
        
$todo implode("\n"$salida);
        
$version toba_modelo_instalacion::get_version_actual();
        
$version $version->__toString();
        
$archivo toba_dir()."/www/js/toba_$version.js";
        
file_put_contents($archivo$todo);
        
$atr stat($archivo);
        
$nuevo_total $atr['size'];        
        
$this->manejador_interface->mensaje("Antes: $total bytes");
        
$this->manejador_interface->mensaje("Despues: ".$nuevo_total." bytes");
        
$this->manejador_interface->mensaje("Radio: ".number_format($nuevo_total/$total2));
        
toba_modelo_instalacion::cambiar_info_basica(array('js_comprimido' => 1));
    }
    
    function 
validar_js($patron_incl=null$patron_excl=null)
    {
        
$archivos $this->get_archivos_js_propios($patron_incl$patron_excl);
        
$this->manejador_interface->mensaje('Validando '.count($archivos).' archivo/s'false);        
        
$validador toba_dir().'/bin/herramientas/jslint.js';
        
$ok true;
        foreach (
$archivos as $archivo) {
            if (
strpos($archivo"www/js/toba_") !== false) {
                
//--- Evita chequear el comprimido
                
continue;    
            }            
            
$cmd "rhino -opt 9 $validador $archivo";
            
$otro null;
            
exec($cmd$salida);
            if (! empty(
$salida)) {
                
$this->manejador_interface->enter();
                
$relativo str_replace(toba_dir(), ''$archivo);
                
$this->manejador_interface->subtitulo("$relativo :");            
                
$this->manejador_interface->mensaje(implode("\n"$salida));
                
$ok false;
                break;
            }
            
$this->manejador_interface->progreso_avanzar();
        }
        if (
$ok) {
            
$this->manejador_interface->progreso_fin();
        }
    }

    
//------------------------------------------------------------------------
    //-- Compilacion del nucleo ----------------------------------------------
    //------------------------------------------------------------------------

    
function compilar()
    {
        
$this->manejador_interface->titulo('Compilacion del nucleo');
        
$this->resumir_definicion_componentes();
        
//$this->resumir_nucleo();
    
}
    
    function 
resumir_nucleo()
    {
        
$destino toba_dir() . '/php/nucleo/toba_motor.php';
        
$this->manejador_interface->mensaje('Clases del nucleo'false);            
        
$this->cargar_lista_archivos();
        
$resumen '';
        
$archivos array_merge($this->comp_archivos_nucleo$this->comp_archivos_modelo);
        
$buscar = array(    '|<\?php|',
                            
'|\?>|',
                        
//    '|/\*\*.*?\*/|s',
                        //    '|/\*.*?\*/|s',
                        //    '|\s*//.*|',
                            
'|^\s*$|m'
                        
);
        foreach(
$archivos as $archivo) {
            
$php file_get_contents(toba_dir(). '/php/' $archivo);
            
$php preg_replace($buscar,'',$php);
            
$resumen .= $php;
            
$this->manejador_interface->progreso_avanzar();            
        }
        
$resumen "<?php\n" $resumen "\n?>";
        
file_put_contents($destino$resumen);
        
$this->manejador_interface->progreso_fin();            
    }
    
    function 
cargar_lista_archivos()
    {
        
$this->comp_archivos_nucleo = array(
            
'lib/toba_parseo.php',
            
'lib/toba_sql.php',
            
'lib/toba_varios.php',
            
'lib/toba_asercion.php',
            
'lib/toba_cache_db.php',
            
'lib/db/toba_db.php',
            
'lib/toba_encriptador.php',
            
'lib/toba_manejador_archivos.php',
            
'nucleo/lib/interface/toba_form.php',
            
'nucleo/lib/salidas/toba_impr_html.php',
            
'nucleo/lib/salidas/toba_impresion.php',
            
'nucleo/lib/salidas/toba_pdf.php',
            
'nucleo/lib/interface/toba_ei.php',
            
'nucleo/lib/interface/toba_formateo.php',
            
'nucleo/lib/toba_admin_fuentes.php',
            
'nucleo/lib/toba_contexto_ejecucion.php',
            
'nucleo/lib/toba_cronometro.php',
            
'nucleo/lib/toba_db.php',
            
'nucleo/lib/toba_dba.php',
            
'nucleo/lib/toba_debug.php',
            
'nucleo/lib/toba_editor.php',
            
'nucleo/lib/toba_error.php',
            
'nucleo/lib/toba_fuente_datos.php',
            
'nucleo/lib/toba_http.php',
            
'nucleo/lib/toba_instalacion.php',
            
'nucleo/lib/toba_instancia.php',
            
'nucleo/lib/toba_interface_contexto_ejecucion.php',
            
'nucleo/lib/toba_interface_usuario.php',
            
'nucleo/lib/toba_js.php',
            
'nucleo/lib/toba_logger.php',
            
'nucleo/lib/toba_manejador_sesiones.php',
            
'nucleo/lib/toba_memoria.php',
            
'nucleo/lib/toba_mensajes.php',
            
'nucleo/lib/toba_notificacion.php',
            
'nucleo/lib/toba_parser_ayuda.php',
            
'nucleo/lib/toba_derechos.php',
            
'nucleo/lib/toba_proyecto.php',
            
'nucleo/lib/toba_proyecto_db.php',
            
'nucleo/lib/toba_puntos_control.php',
            
'nucleo/lib/toba_recurso.php',
            
'nucleo/lib/toba_sesion.php',
            
'nucleo/lib/toba_usuario.php',
            
'nucleo/lib/toba_usuario_anonimo.php',
            
'nucleo/lib/toba_usuario_basico.php',
            
'nucleo/lib/toba_usuario_no_autenticado.php',
            
'nucleo/lib/toba_vinculador.php',
            
'nucleo/lib/toba_vinculo.php',
            
'nucleo/lib/toba_zona.php',
            
'nucleo/menu/toba_menu.php',
            
'nucleo/tipo_pagina/toba_tipo_pagina.php',
            
'nucleo/tipo_pagina/toba_tp_basico.php',
            
'nucleo/tipo_pagina/toba_tp_basico_titulo.php',
            
'nucleo/tipo_pagina/toba_tp_logon.php'
            
'nucleo/tipo_pagina/toba_tp_popup.php'
            
'nucleo/tipo_pagina/toba_tp_normal.php',
            
'nucleo/toba_solicitud.php',
            
'nucleo/toba_solicitud_web.php',
            
'nucleo/toba_solicitud_accion.php',
            
'nucleo/toba_solicitud_consola.php',
            
'nucleo/componentes/toba_definicion_componentes.php',
            
'nucleo/componentes/toba_cargador.php',
            
'nucleo/componentes/toba_catalogo.php',
            
'nucleo/componentes/toba_constructor.php',
            
'nucleo/componentes/toba_componente.php',
            
'nucleo/componentes/interface/botones/toba_boton.php',
            
'nucleo/componentes/interface/botones/toba_evento_usuario.php',
            
'nucleo/componentes/interface/botones/toba_tab.php',
            
'nucleo/componentes/interface/efs/toba_ef.php',
            
'nucleo/componentes/interface/efs/toba_ef_combo.php',
            
'nucleo/componentes/interface/efs/toba_ef_cuit.php',
            
'nucleo/componentes/interface/efs/toba_ef_editable.php',
            
'nucleo/componentes/interface/efs/toba_ef_multi_seleccion.php',
            
'nucleo/componentes/interface/efs/toba_ef_oculto.php',
            
'nucleo/componentes/interface/efs/toba_ef_popup.php',
            
'nucleo/componentes/interface/efs/toba_ef_sin_estado.php',
            
'nucleo/componentes/interface/efs/toba_ef_upload.php',
            
'nucleo/componentes/interface/efs/toba_ef_varios.php',
            
'nucleo/componentes/interface/interfaces.php',
            
'nucleo/componentes/interface/toba_ei.php',
            
'nucleo/componentes/interface/toba_ci.php',
            
'nucleo/componentes/interface/toba_ei_arbol.php',
            
'nucleo/componentes/interface/toba_ei_archivos.php',
            
'nucleo/componentes/interface/toba_ei_calendario.php',
            
'nucleo/componentes/interface/toba_ei_cuadro.php',
            
'nucleo/componentes/interface/toba_ei_esquema.php',
            
'nucleo/componentes/interface/toba_ei_filtro.php',
            
'nucleo/componentes/interface/toba_ei_formulario.php',
            
'nucleo/componentes/interface/toba_ei_formulario_ml.php',
            
'nucleo/componentes/interface/toba_ei_pantalla.php',
            
'nucleo/componentes/persistencia/toba_ap.php',
            
'nucleo/componentes/persistencia/toba_ap_relacion_db.php',
            
'nucleo/componentes/persistencia/toba_ap_tabla_db.php',
            
'nucleo/componentes/persistencia/toba_ap_tabla_db_mt.php',
            
'nucleo/componentes/persistencia/toba_ap_tabla_db_s.php',
            
'nucleo/componentes/persistencia/toba_datos_busqueda.php',
            
'nucleo/componentes/persistencia/toba_datos_relacion.php',
            
'nucleo/componentes/persistencia/toba_datos_tabla.php',
            
'nucleo/componentes/persistencia/toba_relacion_entre_tablas.php',
            
'nucleo/componentes/persistencia/toba_tipo_datos.php',
            
'nucleo/componentes/negocio/toba_cn.php'
        
);
        
$this->comp_archivos_modelo = array(
            
'modelo/info/componentes/toba_datos_editores.php',
            
'modelo/info/componentes/toba_interface_meta_clase.php',
            
'modelo/info/componentes/toba_componente_info.php',
            
'modelo/info/componentes/toba_ap_relacion_db_info.php',
            
'modelo/info/componentes/toba_ap_tabla_db_info.php',
            
'modelo/info/componentes/toba_cn_info.php',
            
'modelo/info/componentes/toba_datos_relacion_info.php',
            
'modelo/info/componentes/toba_datos_tabla_info.php',
            
'modelo/info/componentes/toba_ei_info.php',
            
'modelo/info/componentes/toba_ci_info.php',
            
'modelo/info/componentes/toba_ci_pantalla_info.php',
            
'modelo/info/componentes/toba_ei_arbol_info.php',
            
'modelo/info/componentes/toba_ei_archivos_info.php',
            
'modelo/info/componentes/toba_ei_calendario_info.php',
            
'modelo/info/componentes/toba_ei_cuadro_info.php',
            
'modelo/info/componentes/toba_ei_esquema_info.php',
            
'modelo/info/componentes/toba_ei_formulario_info.php',
            
'modelo/info/componentes/toba_ei_formulario_ml_info.php',
            
'modelo/info/componentes/toba_ei_filtro_info.php',
            
'modelo/info/componentes/toba_item_info.php',
            
'modelo/info/toba_info_editores.php',
            
'modelo/info/toba_info_permisos.php',
            
'modelo/info/toba_contexto_info.php'        
        
);
    }
}
?>

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