// $Rev$
//
-#require_once 'PEAR.php';
-
+require_once 'PEAR.php';
+require_once 'Perfil.php';
// +X2C Class 207 :SAMURAI_Usuario
*/
class SAMURAI_Usuario {
/**
- * Login del usuario en intranet.x2c: get set
+ * Login del usuario en intranet.
*
* @var string $login
* @access protected
var $_nombre;
/**
- * Fecha de ultimo logueo del usuario a la intranet.
+ * Objeto Samurai_DB
*
- * @var date $fecha
+ * @var SAMURAI_DB $db
* @access protected
*/
- var $_fecha;
+ var $_db;
/**
- * Objeto Samurai_DB
+ * Array con los identificadores de los perfiles asociados a un usuario
*
- * @var SAMURAI_DB $db
+ * @var array(int) $perfiles
* @access protected
*/
- var $_db;
+ var $_perfiles;
+
+ /**
+ * 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.
}
/**
- * Gets Fecha.
+ * Gets Perfiles.
*
- * @return date
+ * @return array(int)
* @access public
*/
- function getFecha()
+ function getPerfiles()
{
- return $this->_fecha;
+ return $this->_perfiles;
}
/**
- * Sets Fecha.
+ * Sets Perfiles.
*
- * @param date $fecha Fecha.
+ * @param array(int) $perfiles Perfiles.
*
* @return void
* @access public
*/
- function setFecha($fecha)
+ function setPerfiles($perfiles)
{
- $this->_fecha = $fecha;
+ $this->_perfiles = $perfiles;
}
// ~X2C
*/
function SAMURAI_Usuario(&$db, $login = null) // ~X2C
{
+ $this->_db = $db;
+ $this->setLogin($login);
if (!is_null($login)) {
- //BUSCAR INFO EN LA DB,
- //SETEAR LAS VI
+ $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 {
- //INICIALIZO LA VI
- $this->_login = null;
- $this->_nrodoc = null;
- $this->_nombre = null;
- $this->_fecha = null;
+ $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[$permiso->getLogin()] = $permiso->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);
+ 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_datos_usuario'].$sql['obtener_datos_usuario3'];
+ $dbh = $this->_db->prepare($tmp);
+ $res = $this->_db->execute($dbh,array($this->getLogin()));
+
+ if ($re = $res->fetchRow(DB_FETCHMODE_ASSOC)) {
+ if (isset($re['nrodoc'])) {
+ $this->setNrodoc($re['nrodoc']);
+ }
+ else {
+ $this->setNrodoc();
+ }
+ if (isset($re['nombre'])) {
+ $this->setNombre($re['nombre']);
+ }
+ else {
+ $this->setNombre();
+ }
+ }
+ $tmp = $sql['obtener_perfiles_usuario'];
+ $dbh = $this->_db->prepare($tmp);
+ $res = $this->_db->execute($dbh,array($this->getLogin(), $_SESSION['samurai']['id_sistema']));
+ $rta = array();
+ while ($re = $res->fetchRow(DB_FETCHMODE_ASSOC)) {
+ $tmp = new SAMURAI_Perfil($this->_db, $re['id_perfil']);
+ $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('perfil_sist_usuario', $datos, DB_AUTOQUERY_INSERT);
+ foreach ($this->getPerfiles() as $perfil) {
+ $datos = array ($this->getLogin(),
+ $perfil,
+ $_SESSION['samurai']['id_sistema'],
+ $_SESSION['samurai']['login']);
+ $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(), $_SESSION['samurai']['id_sistema']);
+ 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
+ {
+ $sql = parse_ini_file(dirname(__FILE__) . '/Usuario/consultas.ini', true);
+ $tmp = $sql['verificar_login'];
+ $dbh = $this->_db->prepare($tmp);
+ $res = $this->_db->execute($dbh,array($this->getLogin()));
+ $re = $res->fetchRow(DB_FETCHMODE_ASSOC);
+ if ($re['cuenta'] == 0) {
+ return new PEAR_Error('Usuario no reconocido.<br>Recuerde que éste debe haberse logueado previamente a Intranet');
+ }
+ return 1;
+ }
+ // -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(), $_SESSION['samurai']['id_sistema']));
+ $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);
+ //Verifico que el usuario exista
+ $tmp = $sql['verificar_login'];
+ $dbh = $db->prepare($tmp);
+ $res = $db->execute($dbh,array($login));
+ $re = $res->fetchRow(DB_FETCHMODE_ASSOC);
+ if ($re['cuenta'] == 0) {
+ return new PEAR_Error('Usuario no reconocido.');
+ }
+
+ //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 Class :SAMURAI_Usuario
-
?>
\ No newline at end of file