!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.91 GB of 61.93 GB (24.07%)
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_pms.php (6.55 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php

class toba_modelo_pms
{
    const 
prefijo_ini 'pm_';
    const 
pm_php  'proyecto';
    const 
pm_pers 'personalizacion';

    
/**
     * @var toba_modelo_proyecto
     */
    
protected $proyecto;
    
/**
     * @var toba_db_postgres7
     */
    
protected $db;
    
    function 
__construct(toba_modelo_proyecto $proyecto)
    {
        
$this->proyecto $proyecto;
        
$this->db $proyecto->get_db();
    }

    function 
get_listado($excluir_predefinidos true)
    {
        
$proyecto $this->db->quote($this->proyecto->get_id());
        
$sql "SELECT * FROM apex_puntos_montaje WHERE proyecto=$proyecto";
        
$pms_base $this->db->consultar($sql);

        
$rs = array();
        foreach (
$pms_base as $registro) {
            
$punto toba_punto_montaje_factory::construir($registro);
            if (
$excluir_predefinidos && $punto->es_interno()) {
                continue;
            }
            
$rs[] = $punto->to_array();
        }

        return 
$rs;
    }

    
/**
     * Devuelve verdadero si el punto pasado por parámetro existe en la base
     * @param toba_punto_montaje $punto
     * @return boolean
     */
    
function existe(toba_punto_montaje $punto)
    {
        
$id $punto->get_id();
        if (empty(
$id)) {
            return 
false;
        }
        
        
$id $this->db->quote($id);
        
$sql "SELECT * FROM apex_puntos_montaje WHERE id=$id";
        
$registro $this->db->consultar_fila($sql);

        if (empty(
$registro)) {
            return 
false;
        }

        return 
true;
    }

    
/**
     * @param string $etiqueta
     * @return toba_punto_montaje
     */
    
protected function get($etiqueta)
    {
        
// idem anterior
        
$etiqueta $this->db->quote($etiqueta);
        
$proyecto $this->db->quote($this->proyecto->get_id());
        
$sql "SELECT * FROM apex_puntos_montaje WHERE etiqueta=$etiqueta AND proyecto=$proyecto";
        
$registro $this->db->consultar_fila($sql);
        if (empty(
$registro)) {
            throw new 
toba_error("PUNTOS MONTAJE: El punto de montaje con etiqueta $etiqueta no existe");
        } else {
            return 
toba_punto_montaje_factory::construir($registro);
        }
    }

    
/**
     * @param string $id
     * @return toba_punto_montaje
     */
    
function get_por_id($id)
    {
        return 
$this->get_pm($id$this->proyecto->get_id());
    }

    
/**
     * Guarda el punto de montaje pasado por parámetro. Dependiendo su tipo el
     * guardado impactará: la base, instancia.ini y/o proyecto.ini
     * @param toba_punto_montaje $punto
     */
    
function guardar(toba_punto_montaje $punto)
    {
        if (
$this->existe($punto)) {
            
$this->modificacion($punto);
        } else {
            
$this->alta($punto);
        }
    }

    protected function 
alta(toba_punto_montaje $punto)
    {
        
// primero se intenta impactar la base, si pasa de este punto se
        // escriben los archivos correspondientes
        
$registro toba_pm_a_registro::insert($punto$this->db);
        
$registro->grabar();
        
        
//Se actualiza el registro con el serial asignado
        
$punto->set_id($this->db->recuperar_secuencia("apex_puntos_montaje_seq"));
        
        if (
$punto->es_de_proyecto()) {
            if (!
$punto->es_interno()) {
                
$this->proyecto->agregar_dependencia($punto->get_proyecto_referenciado());
            }
        } else {
            
$this->actualizar_punto_indefinido($punto);
        }
    }

    
/**
     * Elimina el punto de montaje pasado por parámetro. Dependiendo su tipo el
     * borrado impactará: la base, instancia.ini y/o proyecto.ini
     * @param toba_punto_montaje $punto
     */
    
function baja(toba_punto_montaje $punto)
    {
        
$registro toba_pm_a_registro::delete($punto$this->db);
        
$registro->grabar();
        
        if (
$punto->es_de_proyecto()) {
            if (!
$punto->es_interno()) {
                
$this->proyecto->quitar_dependencia($punto->get_proyecto_referenciado());
            }
        } else {
            
$this->eliminar_punto_indefinido($punto);
        }
    }

    protected function 
modificacion(toba_punto_montaje $punto)
    {
        
$registro toba_pm_a_registro::update($punto$this->db);
        
$registro->grabar();
        
        if (!
$punto->es_de_proyecto()) { // Si no es de proyecto no hay que modificar nada
            
$this->actualizar_punto_indefinido($punto);
        }
    }

    protected function 
actualizar_punto_indefinido(toba_punto_montaje $punto)
    {
        
$path_instancia_ini toba::instancia()->get_path_ini();
        
$instancia_ini = new toba_ini($path_instancia_ini);

        
$id_proyecto $punto->get_proyecto();
        
$nombre self::prefijo_ini.$punto->get_etiqueta();

        
$datos $instancia_ini->get_datos_entrada($id_proyecto);

        if (
$punto->tiene_etiqueta_anterior()) {
            
$nombre_anterior self::prefijo_ini.$punto->get_etiqueta_anterior();
            
// Cambió el nombre de la etiqueta, hay que eliminar la entrada
            
unset($datos[$nombre_anterior]);    
        }

        
$datos[$nombre] = $punto->get_path_absoluto();

        
$instancia_ini->agregar_entrada($id_proyecto$datos);
        
$instancia_ini->guardar();
    }

    protected function 
eliminar_punto_indefinido(toba_punto_montaje $punto)
    {
        
$path_instancia_ini toba::instancia()->get_path_ini();
        
$instancia_ini = new toba_ini($path_instancia_ini);

        
$id_proyecto $punto->get_proyecto();
        
$nombre self::prefijo_ini.$punto->get_etiqueta();

        if (
$instancia_ini->existe_entrada($id_proyecto$nombre)) {
            
$datos $instancia_ini->get_datos_entrada($id_proyecto);
            unset(
$datos[$nombre]);
        }

        
$instancia_ini->agregar_entrada($id_proyecto$datos);
        
$instancia_ini->guardar();
    }

    
/**
     * Shortcut para crear el punto de montaje por defecto de un proyecto
     */
    
function crear_pm_proyecto()
    {
        
$id_proyecto $this->proyecto->get_id();
        
$punto = new toba_punto_montaje_proyecto();
        
$punto->set_etiqueta(toba_modelo_pms::pm_php);
        
$punto->set_proyecto($id_proyecto);
        
$punto->set_proyecto_referenciado($id_proyecto);
        
$punto->set_descripcion('Punto de montaje por defecto de todos los proyectos de toba');
        
$punto->set_path('php');
        
$this->guardar($punto); // creamos el punto de montaje php del proyecto
        
$this->proyecto->set_pm_defecto($punto);
    }

    
/**
     * Shortcut para crear el punto de montaje de la personalización de un proyecto
     */
    
function crear_pm_personalizacion()
    {
        
$id_proyecto $this->proyecto->get_id();

        
$punto = new toba_punto_montaje_pers();
        
$punto->set_etiqueta(toba_modelo_pms::pm_pers);
        
$punto->set_proyecto($id_proyecto);
        
$punto->set_proyecto_referenciado($id_proyecto);
        
$punto->set_descripcion('Punto de montaje por defecto de la personalización de todos los proyectos de toba');
        
$punto->set_path('personalizacion/php');

        
$this->guardar($punto);
    }

    
/**
     * Shortcut para no instanciar el modelo sólo para obtener un pm
     * @param string $id
     */
    
static function get_pm($id$proyecto)
    {
        
$id toba::db()->quote($id);
        
$proyecto toba::db()->quote($proyecto);
        
$sql "SELECT * FROM apex_puntos_montaje WHERE id=$id AND proyecto = $proyecto";
        
$registro toba::db()->consultar_fila($sql);
        if (empty(
$registro)) {
            throw new 
toba_error("PUNTOS MONTAJE: El punto de montaje con id $id no existe");
        } else {
            return 
toba_punto_montaje_factory::construir($registro);
        }
    }
}
?>

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