X-Git-Url: https://git.llucax.com/mecon/samurai.git/blobdiff_plain/1ecc9798cbde319c7c4168c14f613670accb9982..698ca0ba3178e27141c4d03c943f085c13107d39:/lib/SAMURAI/Usuario.php
diff --git a/lib/SAMURAI/Usuario.php b/lib/SAMURAI/Usuario.php
index 96b7847..28a2755 100644
--- a/lib/SAMURAI/Usuario.php
+++ b/lib/SAMURAI/Usuario.php
@@ -26,11 +26,13 @@
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
*/
@@ -75,6 +77,14 @@ class SAMURAI_Usuario {
*/
var $_perfiles;
+ /**
+ * Identificador del sistema en el cual se esta trabajando.
+ *
+ * @var int $idSistema
+ * @access protected
+ */
+ var $_idSistema;
+
/**
* Gets Login.
*
@@ -175,15 +185,20 @@ class SAMURAI_Usuario {
*
* @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) // ~X2C
+ 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($db, null, $login);
+ $this->setNrodoc($tmp->getDni());
+ $this->setNombre($tmp->getNombre());
$this->_obtenerDatosDb();
}
}
@@ -241,7 +256,7 @@ class SAMURAI_Usuario {
//FORECHEO LO QUE ME DEVUELVA GET USUARIOS
$rta = array ();
foreach (SAMURAI_Usuario::getUsuarios($db, $id_sistema) as $Usuario) {
- $rta[$permiso->getLogin()] = $permiso->getNombre();
+ $rta[$Usuario->getLogin()] = $Usuario->getNombre();
}
return $rta;
}
@@ -262,7 +277,7 @@ class SAMURAI_Usuario {
{
$rta = array ();
foreach (SAMURAI_Usuario::_getLoginUsuarios($db, $id_sistema) as $login) {
- $tmp = new SAMURAI_Usuario($db,$login);
+ $tmp = new SAMURAI_Usuario($db, $login, $id_sistema);
array_push($rta, $tmp);
}
return $rta;
@@ -279,30 +294,16 @@ class SAMURAI_Usuario {
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']));
+ $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']);
+ $tmp = new SAMURAI_Perfil($this->_db, $re['id_perfil'],
+ $this->_idSistema);
$rta[] = $tmp->getId();
}
$this->setPerfiles($rta);
@@ -346,12 +347,12 @@ class SAMURAI_Usuario {
function _grabarDb() // ~X2C
{
$datos = array ('login', 'id_perfil', 'id_sistema', 'responsable');
- $re = $this->_db->autoPrepare('perfil_sist_usuario', $datos, DB_AUTOQUERY_INSERT);
+ $re = $this->_db->autoPrepare('samurai.perfil_sist_usuario', $datos, DB_AUTOQUERY_INSERT);
foreach ($this->getPerfiles() as $perfil) {
$datos = array ($this->getLogin(),
$perfil,
- $_SESSION['samurai']['id_sistema'],
- $_SESSION['samurai']['login']);
+ $this->_idSistema,
+ $_SESSION['usuario']);
$res = $this->_db->execute($re, $datos);
if (PEAR::isError($res)) {
return $res;
@@ -372,7 +373,7 @@ class SAMURAI_Usuario {
$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']);
+ $tmp = array ($this->getLogin(), $this->_idSistema);
return $this->_db->execute($dbh,$tmp);
}
// -X2C
@@ -400,15 +401,19 @@ class SAMURAI_Usuario {
*/
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) {
+ $usu = new MECON_Usuario($this->_db);
+ $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');
}
- return 1;
}
// -X2C
@@ -424,7 +429,8 @@ class SAMURAI_Usuario {
$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']));
+ $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.');
@@ -450,16 +456,18 @@ class SAMURAI_Usuario {
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.');
- }
+ $usu = new MECON_Usuario($db);
+ $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,
@@ -475,5 +483,94 @@ class SAMURAI_Usuario {
}
// -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 Operation 398
+ /**
+ * Funcion que obtiene la lista de usuarios que tienen al menos un permiso en la intranet.
+ *
+ * @param DB &$db Conexion a la base de datos
+ * @param string $login Parte del login a filtrar
+ *
+ * @return mixed
+ * @access public
+ * @static
+ */
+ function filtrarUsuarios(&$db, $login) // ~X2C
+ {
+ $sql = parse_ini_file(dirname(__FILE__) . '/Usuario/consultas.ini', true);
+ $sql = str_replace ('##?##', $login, $sql['obtener_datos_compartido']);
+ $db->setFetchMode(DB_FETCHMODE_ASSOC);
+ return $db->query($sql);
+ }
+ // -X2C
+
+ /**
+ * Metodo que devuelve los datos necesarios para listar usuarios.
+ *
+ * @param SAMURAI_DB &$db Base de Datos
+ * @param int $id_sistema Identificador del sistema
+ *
+ * @return mixed
+ * @access public
+ * @static
+ */
+ function getUsuariosPager(&$db, $id_sistema = null) {
+
+ //@TODO REEMPLAZA A getUsuarios
+ if ($id_sistema) {
+ $sql = '
+ SELECT DISTINCT u.login, u.nombre
+ FROM usuario.Usuario AS u, perfil_sist_usuario AS psu
+ WHERE u.login = psu.login
+ AND psu.id_sistema = '. $id_sistema .'
+ ORDER BY login
+ ';
+ }
+ else {
+ $sql = '
+ SELECT login, nombre
+ FROM usuario.Usuario
+ ORDER BY login
+ ';
+ }
+ return $db->query ($sql);
+
+ }
+
} // -X2C Class :SAMURAI_Usuario
-?>
\ No newline at end of file
+?>