// +----------------------------------------------------------------------+ // // $Id$ // $Author$ // $URL$ // $Date$ // $Rev$ // require_once 'PEAR.php'; require_once 'Perfil.php'; require_once 'MECON/Usuario.php'; // +X2C Class 207 :SAMURAI_Usuario /** * Clase para el manejo de los usuarios. @see \ref page_samurai_html_usuario * * @access public */ class SAMURAI_Usuario { /** * Login del usuario en intranet. * * @var string $login * @access protected */ var $_login; /** * Numero de documento del usuario * * @var int $nrodoc * @access protected */ var $_nrodoc; /** * Nombre del usuario * * @var string $nombre * @access protected */ var $_nombre; /** * Objeto Samurai_DB * * @var SAMURAI_DB $db * @access protected */ var $_db; /** * Array con los identificadores de los perfiles asociados a un usuario * * @var array(int) $perfiles * @access protected */ var $_perfiles; /** * Identificador del sistema en el cual se esta trabajando. * * @var int $idSistema * @access protected */ var $_idSistema; /** * Gets Login. * * @return string * @access public */ function getLogin() { return $this->_login; } /** * Sets Login. * * @param string $login Login. * * @return void * @access public */ function setLogin($login) { $this->_login = $login; } /** * Gets Nrodoc. * * @return int * @access public */ function getNrodoc() { return $this->_nrodoc; } /** * Sets Nrodoc. * * @param int $nrodoc Nrodoc. * * @return void * @access public */ function setNrodoc($nrodoc) { $this->_nrodoc = $nrodoc; } /** * Gets Nombre. * * @return string * @access public */ function getNombre() { return $this->_nombre; } /** * Sets Nombre. * * @param string $nombre Nombre. * * @return void * @access public */ function setNombre($nombre) { $this->_nombre = $nombre; } /** * Gets Perfiles. * * @return array(int) * @access public */ function getPerfiles() { return $this->_perfiles; } /** * Sets Perfiles. * * @param array(int) $perfiles Perfiles. * * @return void * @access public */ function setPerfiles($perfiles) { $this->_perfiles = $perfiles; } // ~X2C // +X2C Operation 216 /** * Constructor.Recibe como parametro opcional el login del usuario. y busca en la base la informacion referida a el. * * @param SAMURAI_DB &$db Objeto conexion. * @param string $login Login del usuario * @param int $idSistema Identificador del sistema en el cual se esta trabajando * * @return void * @access public */ function SAMURAI_Usuario(&$db, $login = null, $idSistema = null) // ~X2C { $this->_db = $db; $this->setLogin($login); $this->_idSistema = $idSistema; if (!is_null($login)) { $tmp =& new MECON_Usuario(null, $login); $this->setNrodoc($tmp->getDni()); $this->setNombre($tmp->getNombre()); $this->_obtenerDatosDb(); } } // -X2C // +X2C Operation 365 /** * Devuleve un array con los login's de los usuarios asociados al sistema * * @param SAMURAI_DB &$db Base de Datos * @param int $id_sistema Identificador del sistema * * @return array(string) * @access protected * @static */ function _getLoginUsuarios(&$db, $id_sistema = null) // ~X2C { //OBTENGO LOS LOGIN DE LA BASE $consulta=''; $rta = array(); $tmp = array(); $sql = parse_ini_file(dirname(__FILE__) . '/Usuario/consultas.ini', true); if ($id_sistema) { $consulta.= $sql['obtener_datos_usuario2']; $tmp[] = $id_sistema; } else { $consulta = $sql['obtener_datos_usuario']; } $consulta.= $sql['obtener_datos_usuario4']; $dbh = $db->prepare($consulta); $res = $db->execute($dbh, $tmp); while ($re = $res->fetchrow(DB_FETCHMODE_ASSOC)) { array_push($rta,$re['login']); } $res->free(); return $rta; } // -X2C // +X2C Operation 366 /** * Devuelve un array asociativo en donde la clave es el login y el valor es el nombre del usuario * * @param SAMURAI_DB &$db Base de Datos * @param int $id_sistema Identificador del sistema * * @return array() * @access public * @static */ function getArrayUsuarios(&$db, $id_sistema = null) // ~X2C { //FORECHEO LO QUE ME DEVUELVA GET USUARIOS $rta = array (); foreach (SAMURAI_Usuario::getUsuarios($db, $id_sistema) as $Usuario) { $rta[$Usuario->getLogin()] = $Usuario->getNombre(); } return $rta; } // -X2C // +X2C Operation 367 /** * Devuelve el array de usuarios * * @param SAMURAI_DB &$db Base de Datos * @param int $id_sistema Identificador del sistema * * @return array(Permiso) * @access public * @static */ function getUsuarios(&$db, $id_sistema = null) // ~X2C { $rta = array (); foreach (SAMURAI_Usuario::_getLoginUsuarios($db, $id_sistema) as $login) { $tmp = new SAMURAI_Usuario($db, $login, $id_sistema); array_push($rta, $tmp); } return $rta; } // -X2C // +X2C Operation 368 /** * Obtiene de la base de datos la informacion del usuario * * @return void * @access protected */ function _obtenerDatosDb() // ~X2C { $sql = parse_ini_file(dirname(__FILE__) . '/Usuario/consultas.ini', true); $tmp = $sql['obtener_perfiles_usuario']; $dbh = $this->_db->prepare($tmp); $res = $this->_db->execute($dbh,array($this->getLogin(), $this->_idSistema)); $rta = array(); while ($re = $res->fetchRow(DB_FETCHMODE_ASSOC)) { $tmp = new SAMURAI_Perfil($this->_db, $re['id_perfil'], $this->_idSistema); $rta[] = $tmp->getId(); } $this->setPerfiles($rta); } // -X2C // +X2C Operation 370 /** * Modifica la base de datos segun accion * * @param string $accion Indica la accion a realizar * * @return mixed * @access public */ function guardarDatos($accion = grabar) // ~X2C { $accion = strtolower($accion); switch ($accion) { case 'grabar': $res = $this->_grabarDb(); break; case 'modificar': $res = $this->_modificarDb(); break; case 'eliminar': $res = $this->_borrarDb(); break; } return $res; } // -X2C // +X2C Operation 371 /** * Graba en base la relacion * * @return mixed * @access protected */ function _grabarDb() // ~X2C { $datos = array ('login', 'id_perfil', 'id_sistema', 'responsable'); $re = $this->_db->autoPrepare('samurai.perfil_sist_usuario', $datos, DB_AUTOQUERY_INSERT); foreach ($this->getPerfiles() as $perfil) { $datos = array ($this->getLogin(), $perfil, $this->_idSistema, $_SESSION['usuario']); $res = $this->_db->execute($re, $datos); if (PEAR::isError($res)) { return $res; } } } // -X2C // +X2C Operation 372 /** * Borra de la base la relacion * * @return mixed * @access protected */ function _borrarDb() // ~X2C { $sql = parse_ini_file(dirname(__FILE__) . '/Usuario/consultas.ini', true); $tmp = $sql['borrar']; $dbh = $this->_db->prepare($tmp); $tmp = array ($this->getLogin(), $this->_idSistema); return $this->_db->execute($dbh,$tmp); } // -X2C // +X2C Operation 373 /** * Actualiza los datos de la relacion * * @return mixed * @access protected */ function _modificarDb() // ~X2C { $this->_borrarDb(); $this->_grabarDb(); } // -X2C // +X2C Operation 374 /** * Verifica si el login actual es valido * * @return mixed * @access public */ function verificarLogin() // ~X2C { $usu = new MECON_Usuario(); $tmp = $usu->verificarLogin($this->getLogin()); if ($tmp) { if (PEAR::isError($tmp)) { return $tmp; } else { return true; } } else { return new PEAR_Error('Usuario no reconocido.
Recuerde que éste debe haberse logueado previamente a Intranet'); } } // -X2C // +X2C Operation 375 /** * Verifica si el login actual ya esta asociado en base. * * @return mixed * @access public */ function verificarAsociacionExistente() // ~X2C { $sql = parse_ini_file(dirname(__FILE__) . '/Usuario/consultas.ini', true); $tmp = $sql['verificar_login2']; $dbh = $this->_db->prepare($tmp); $res = $this->_db->execute($dbh,array($this->getLogin(), $this->_idSistema)); $re = $res->fetchRow(DB_FETCHMODE_ASSOC); if ($re['login']) { return new PEAR_Error('El usuario seleccionado ya esta cargado. Modifique sus opciones.'); } return 1; } // -X2C // +X2C Operation 386 /** * Metodo estatico que permite asociar un usuario con un perfil en un sistema determinado. * * @param DB &$db Conexion a la base de datos * @param string $login Login del usuario que se quiere asociar * @param int $id_perfil Identificador del perfil que se quiere asociar * @param int $id_sistema identificador del sistema en el que se esta haciendo la asociacion * @param int $responsable Login del usuario que esta haciendo los cambios * * @return mixed * @access public * @static */ function asociarPerfil(&$db, $login, $id_perfil, $id_sistema, $responsable) // ~X2C { $sql = parse_ini_file(dirname(__FILE__) . '/Usuario/consultas.ini', true); $usu = new MECON_Usuario(); $tmp = $usu->verificarLogin($login); if ($tmp) { if (PEAR::isError($tmp)) { return $tmp; } } else { return new PEAR_Error('Usuario no reconocido.
Recuerde que éste debe haberse logueado previamente a Intranet'); } //Asocio el perfil con el usuario en perfil_sist_usuario $datos = array ('login' => $login, 'id_perfil' => $id_perfil, 'id_sistema' => $id_sistema, 'responsable' => $responsable); $res = $db->autoExecute('samurai.perfil_sist_usuario', $datos, DB_AUTOQUERY_INSERT); if (PEAR::isError($res)) { return $res; } return 1; } // -X2C // +X2C Operation 396 /** * Devuelve la informacion completa del usuario. Sistemas a los que esta asignado, perfiles que tiene dentro de cada sistema y permisos. * * @return mixed * @access public */ function informacionGeneral() // ~X2C { $sql = parse_ini_file(dirname(__FILE__) . '/Usuario/consultas.ini', true); $tmp = $sql['obtener_informacion']; $dbh = $this->_db->prepare($tmp); $res = $this->_db->execute($dbh,array($this->getLogin())); if (PEAR::isError($res)) { return $res; } $rta = array(); while ($re = $res->fetchRow(DB_FETCHMODE_ASSOC)) { $rta[$re['id_sistema']]['nombre_sistema'] = $re['nombre_sistema']; $rta[$re['id_sistema']]['perfiles'][$re['id_perfil']]['desc_perfil'] = $re['desc_perfil']; $rta[$re['id_sistema']]['perfiles'][$re['id_perfil']]['permisos'][$re['id_permiso']] [$re['observaciones']]['desc_permiso'] = $re['desc_permiso']; $rta[$re['id_sistema']]['perfiles'][$re['id_perfil']]['permisos'][$re['id_permiso']] [$re['observaciones']]['observaciones'] = $re['observaciones']; } return $rta; } // -X2C } // -X2C Class :SAMURAI_Usuario ?>