]> git.llucax.com Git - mecon/samurai.git/blobdiff - lib/SAMURAI/Usuario.php
Agrego a la seccion perfiles la funcionalidad de tabladb.
[mecon/samurai.git] / lib / SAMURAI / Usuario.php
index 57c04893e34466b948c98fab68f425b466658204..28a2755c5f0058bc4f74b44ed3a5db41ad1fcb8c 100644 (file)
 
 require_once 'PEAR.php';
 require_once 'Perfil.php';
 
 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.
 
 
 // +X2C Class 207 :SAMURAI_Usuario
 /**
  * Clase para el manejo de los usuarios.
+@see \ref page_samurai_html_usuario
  *
  * @access public
  */
  *
  * @access public
  */
@@ -75,6 +77,14 @@ class SAMURAI_Usuario {
      */
     var $_perfiles;
 
      */
     var $_perfiles;
 
+    /**
+     * Identificador del sistema en el cual se esta trabajando.
+     *
+     * @var    int $idSistema
+     * @access protected
+     */
+    var $_idSistema;
+
     /**
      * Gets Login.
      *
     /**
      * Gets Login.
      *
@@ -175,15 +185,20 @@ class SAMURAI_Usuario {
      *
      * @param  SAMURAI_DB &$db Objeto conexion.
      * @param  string $login Login del 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
      */
      *
      * @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->_db = $db; 
         $this->setLogin($login);
+        $this->_idSistema = $idSistema;
         if (!is_null($login)) {
         if (!is_null($login)) {
+            $tmp =& new MECON_Usuario($db, null, $login);
+            $this->setNrodoc($tmp->getDni());
+            $this->setNombre($tmp->getNombre());
             $this->_obtenerDatosDb();
         }
     }
             $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) {
         //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;
     }
         }
         return $rta;
     }
@@ -262,7 +277,7 @@ class SAMURAI_Usuario {
     {
         $rta = array ();
         foreach (SAMURAI_Usuario::_getLoginUsuarios($db, $id_sistema) as $login) {
     {
         $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;
             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);
     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);
         $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();
         $rta = array();
+
         while ($re  = $res->fetchRow(DB_FETCHMODE_ASSOC)) {
         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);
             $rta[] = $tmp->getId();
         }
         $this->setPerfiles($rta);
@@ -346,12 +347,12 @@ class SAMURAI_Usuario {
     function _grabarDb() // ~X2C
     {   
         $datos = array ('login', 'id_perfil', 'id_sistema', 'responsable');
     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,
         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;
             $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);
         $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
         return $this->_db->execute($dbh,$tmp);        
     }
     // -X2C
@@ -399,20 +400,177 @@ class SAMURAI_Usuario {
      * @access public
      */
     function verificarLogin() // ~X2C
      * @access public
      */
     function verificarLogin() // ~X2C
+    {
+        $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.<br>Recuerde que &eacute;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);
     {
         $sql = parse_ini_file(dirname(__FILE__) . '/Usuario/consultas.ini', true);
-        $tmp = $sql['verificar_login'];
+        $tmp = $sql['verificar_login2'];
         $dbh = $this->_db->prepare($tmp);
         $dbh = $this->_db->prepare($tmp);
-        $res = $this->_db->execute($dbh,array($this->getLogin()));
+        $res = $this->_db->execute($dbh,array($this->getLogin(),
+                    $this->_idSistema));
         $re  = $res->fetchRow(DB_FETCHMODE_ASSOC);
         $re  = $res->fetchRow(DB_FETCHMODE_ASSOC);
-        if ($re['cuenta'] == 0) {
-            return new PEAR_Error('Usuario no reconocido.<br>Recuerde que &eacute;ste debe haberse logueado previamente a Intranet');
+        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($db);
+        $tmp = $usu->verificarLogin($login); 
+        if ($tmp) {
+            if (PEAR::isError($tmp)) {
+                return $tmp;
+            }
         }
         else {
         }
         else {
-            return 1;
+            return new PEAR_Error('Usuario no reconocido.<br>Recuerde que &eacute;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 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
 
     }
     // -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
 ?>
 } // -X2C Class :SAMURAI_Usuario
 ?>