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


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

/**
 * Permite construir busquedas complejas en torno a un datos_tabla específico y su relación con otras tablas
 * 
 * @package Componentes
 * @subpackage Persistencia
 */
class toba_datos_busqueda
{
    protected 
$relacion;
    protected 
$tabla;
    protected 
$padres = array();
    protected 
$condiciones = array();
    protected 
$_info_orden_col = array();        //Mantiene las columnas por las que se debe ordenar.
    
    /**
     * @ignore 
     */
    
function __construct($relacion$tabla)
    {
        
$this->relacion $relacion;
        
$this->tabla $tabla;
    }

    
/**
     * Fuerza que en la búsqueda se tome en cuenta solo los registros hijos de un padre
     *
     * @param string $tabla_padre    Nombre del datos_tabla padre
     * @param string $id_padre        Id. interno de la fila padre
     */
    
function set_padre($tabla_padre$id_padre)
    {
        
$this->padres[$tabla_padre] = $id_padre;
    }
    
    
/**
     * Fuerza que en la búsqueda se respete una condición sobre los registros de la tabla
     *
     * @param string $campo Columna de la condición
     * @param string $operador Operador de la condición (==, ===, <, >, etc)
     * @param mixed $valor Valor de la condición
     */
    
function set_condicion($campo$operador$valor)
    {
        
$this->condiciones[] = array($campo$operador$valor);
    }
    
    
/**
     * Limpia las condiciones 
     */
    
function limpiar_condiciones()
    {
        
$this->condiciones = array();    
    }

    
/**
     * Dado los criterios seteados busca los ids de los registros de la tabla
     * @return array de Ids. de la tabla
     */
    
function buscar_ids()
    {
        
$ids $this->tabla->get_id_fila_condicion($this->condicionesfalse);
        
        if (! empty(
$this->padres)) {
            foreach (
$this->padres as $tabla_padre => $id_padre) {
                
$hijas $this->tabla->get_relacion_con_padre($tabla_padre)->get_id_filas_hijas_de($id_padre);
                
$ids array_intersect($ids$hijas);
            }
        }
        return 
$ids;
    }
    
    
/**
     * Dado los criterios seteados, retorna las filas de los registros de la tabla
     * @return array Recordset 
     */
    
function buscar_filas()
    {
        
$ids $this->buscar_ids();
        
$salida = array();
        foreach (
$ids as $id) {
            
$salida[] = $this->tabla->get_fila($id);
        }
        if (
$this->hay_ordenamiento()) {
            
$salida $this->ordenar_datos_x_columnas($salida);
        }
        return 
$salida;
    }

    
/**
     * Verifica si existe ordenamiento de los datos o no
     * @return boolean
     */
    
function hay_ordenamiento()
    {
        return (! empty(
$this->_info_orden_col));
    }

    
/**
     * Retorna un arreglo con las columnas definidas para el ordenamiento
     * @return array
     */
    
function get_columnas_orden()
    {
        return 
$this->_info_orden_col;
    }

    
/**
     * Fija que columnas se utilizaran para realizar el ordenamiento de los datos,
     * el orden posicional en el arreglo define que columna se utiliza antes.
     * @param array $cols Arreglo asociativo de columnas => sentido ej: array('id_persona' => SORT_ASC, 'nombre' => SORT_DESC, 'descripcion_trabajo' => SORT_ASC)
     */
    
function set_columnas_orden($cols = array())
    {
        
//Tengo que verificar que las columnas pertenecen a la tabla.
        
$cols_existentes array_keys($this->tabla->get_columnas());        
        foreach(
$cols as $columna => $sentido) {
            if (! 
in_array($columna$cols_existentes)) {
                throw new 
toba_error_def('La columna por la que intenta ordenar no existe: '$columna);
            }
        }
        
$this->_info_orden_col $cols;
    }

    
/**
     * Ordena el conjunto de datos recibido segun lo especificado en $this->_info_orden_col
     * @param recordset $datos_orig        Conjunto de datos a ordenar
     * @return recordset $datos_destino Conjunto de datos ordenados
     * @ignore
     */
    
function ordenar_datos_x_columnas($datos_orig)
    {
        if (! empty(
$this->_info_orden_col) && ! empty($datos_orig)) {
            
$columnas array_keys($this->_info_orden_col);
            
$datos_destino rs_ordenar_por_columnas($datos_orig$columnas$this->_info_orden_col);
        } else {
            
$datos_destino $datos_orig;
        }
        return 
$datos_destino;
    }
}
?>

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