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


Viewing file:     toba_tarea_pers.php (4.61 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
abstract class toba_tarea_pers {
    
/**
     * @var toba_importador_plan_item
     */
     
protected $item_plan;

    
/**
     * @var toba_db_postgres7
     */
    
protected $db;

    
/**
     * @var SimpleXMLElement
     */
    
protected $raw_data null;

    
/**
     * @var toba_tarea_datos
     */
    
protected $datos;
    
    protected 
$preparada false;
    protected 
$descripcion_actual '';
    protected 
$ejecuta_transaccion_global false;

    
/**
     * @param toba_importador_plan_item $item_plan Cada tarea tiene asociado un item del plan
     * al que pertenece
     * @param $db la base de datos donde va a impactar la tarea
     */
    
function  __construct(toba_importador_plan_item $item_plan$db)
    {
        
$this->item_plan $item_plan;
        
$this->db $db;
        
$this->cargar_componente();
        
$this->armar_datos();
    }

    
/**
     * Carga la componente desde el archivo xml
     */
    
protected function cargar_componente()
    {
        
$contenido file_get_contents($this->item_plan->get_path_absoluto());
        
$this->raw_data simplexml_load_string($contenido'SimpleXMLIterator');
    }
    
    
/**
     * Registra todos los toba_registro_conflictos que hay en esta tarea a los toba_registro_conflictos de
     * la personalización
     */
    
function registrar_conflictos($save_to_log true)
    {
        
$reg_conflictos toba_personalizacion::get_registro_conflictos();
        
$this->armar_datos();
        foreach (
$this->datos as $registro) {
            
$conf_array $registro->get_conflictos();            
            if (
$save_to_log && ! empty($conf_array)) {
                foreach (
$conf_array as $conf) {
                    
$conf->set_descripcion_componente($this->descripcion_actual);         //Agregar en este punto la descripcion del componente obtenido de la tarea.
                    
$reg_conflictos->add_conflicto($conf$this->item_plan->get_path());
                }
            }
        }
    }

    
/**
     * Indica si la ejecucion se hace con transaccion global o local
     * @return boolean
     */
    
function ejecuta_en_transaccion_global()
    {
        return 
$this->ejecuta_transaccion_global;
    }
    
    
/**
     *  Se usa para avisar que el modo de ejecucion esta  en transaccion global
     */
    
function set_ejecuta_transaccion_global()
    {
        
$this->ejecuta_transaccion_global true;
    }    
    
    
/**
     * Intenta ejecutar una tarea, si hay conflicto el usuario decide si se guarda o no.
     * En modo transaccion local, se aborta a pedido del usuario o por error de SQL 
     * En modo global, se dispara excepcion a pedido del usuario
     */
    
function ejecutar(consola $consola null)
    {
        if (! 
$this->ejecuta_en_transaccion_global()) {        //Se usan transacciones a nivel local.
            
$this->db->abrir_transaccion();
        }
        
        foreach (
$this->datos as $registro) {
            
/** @todo Agregar llamada al migrador con $this->datos para que modifique los campos que tenga que modificar */            
            //Tomo en cuenta la postura del usuario segun el tipo de conflicto
            
if (!is_null($consola) && $registro->tiene_conflictos()) {
                
$conflicto $registro->get_conflicto_irresoluble();
                if (!
is_null($conflicto)) {
                    
$this->io_conflicto_irresoluble($consola$conflicto);
                    
$this->elegir_camino_accion(false);
                    return;
                }

                
$conflictos $registro->get_conflictos_solubles();
                foreach (
$conflictos as $conflicto) {
                    
$continuar $this->io_conflicto_soluble($consola$conflicto);
                    
$this->elegir_camino_accion($continuar);
                    if (! 
$continuar) { return;}
                }
            }        
            
            
//Ejecuto la SQL que representa el registro
            
try {            
                
$registro->grabar();
            } catch (
toba_error_db $e) {
                if (
$this->ejecuta_en_transaccion_global()) {throw $e;}        //Si la transaccion esta afuera tiro para arriba la excepcion.
                
$this->db->abortar_transaccion();
                return;
            }
        }
        
        if (! 
$this->ejecuta_en_transaccion_global()) {        //Si ejecuta con transaccion local            
            
$this->db->cerrar_transaccion();
        }
    }

    protected function 
io_conflicto_soluble(consola $consolatoba_registro_conflicto $conflicto)
    {
        return 
$consola->dialogo_simple("Se encontró el siguiente conflicto: {$conflicto->get_descripcion()}. Desea importar este cambio de cualquier manera?");
    }

    protected function 
io_conflicto_irresoluble(consola $consolatoba_registro_conflicto $conflicto)
    {
        
$consola->mensaje("Se encontro un error irrecuperable, se abortará la importación de esta tarea. El error fue: {$conflicto->get_descripcion()}.");
    }

    function 
elegir_camino_accion($usuario_elige_seguir)
    {
        if ( ! 
$usuario_elige_seguir) {        
            if (
$this->ejecuta_en_transaccion_global()) {            //Si se esta ejecutando en una transaccion global se maneja afuera
                
throw new toba_error_usuario('No se continua con el procedimiento, la importación falló. Se revertirán todos los cambios.');            
            } else {
                
$this->db->abortar_transaccion();            //Si se usa transaccion local aborto aca.
            
}
        }        
    }
    
    abstract protected function 
armar_datos();
}
?>

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ Read-Only ]

:: Make Dir ::
 
[ Read-Only ]
:: Make File ::
 
[ Read-Only ]

:: Go Dir ::
 
:: Go File ::
 

--[ c99shell v. 2.1 [PHP 8 Update] [02.02.2022] maintained byC99Shell Github | Generation time: 0.3853 ]--