]> git.llucax.com Git - mecon/meconlib.git/blobdiff - lib/MECON/Usuario.php
Se agrega la posibilidad de cambiar el esquema de colores en MECON_Graph para gráfico...
[mecon/meconlib.git] / lib / MECON / Usuario.php
index be7fe89584e281e710aa5a4a3ad3dfa6a41184d3..8d4b9a2f0d8e45f1ae174654fe59e3f540f84bbb 100644 (file)
@@ -23,10 +23,11 @@ Autor:  Manuel Nazar <manazar@mecon.gov.ar>
 -------------------------------------------------------------------------------
 $Id: Usuario.php 242 2003-08-11 18:02:16Z manazar $
 -----------------------------------------------------------------------------*/
-
+require_once 'MECON/Agente.php';
+    
 require_once 'DB.php';
+require_once 'PEAR.php';
 
-// +X2C Class 131 :MECON_Usuario
 /**
  * @access public
  */
@@ -42,102 +43,102 @@ class MECON_Usuario {
     * @access public
     */
     var $login;
+    
+    /**
+      * @var    string $nivelygrado
+      * @access public
+      */
+    var $nivelygrado;
 
+    /**
+      * @var    string $codep
+      * @access public
+      */
+    var $codep;
 
     /**
       * @var    string $nombre
       * @access public
       */
     var $nombre;
+    
     /**
-      * @var    string $dsn
+      * @var    string $tipo
       * @access public
       */
-    var $dsn = 'mysql://intranet:intranet@bal747f.mecon.ar/usuario';
-
+    var $tipo;
 
-    // ~X2C
-
-    // +X2C Operation 138
+    /**
+     * @protected
+     */
+    var $_db;
+    
     /**
      * @param  string $dni 
      *
      * @return void
      * @access public
      */
-    function ArmarconDNI($dni) // ~X2C
+    function ArmarconDNI($dni) 
     {
-        $db = DB::connect($this->dsn);
-        if (DB::isError($db)) {
-            die ($db->getMessage("No pudo conectarse a la base"));
+        $sql = "SELECT login,nombre
+               from usuario.Usuario
+               where dni = $dni";
+        $result = $this->_db->query($sql);
+        if (DB::isError($result)) {
+            return $result;
+        } elseif ($result->NumRows()>0) {
+            $row = $result->fetchRow(DB_FETCHMODE_ORDERED);
+            $login = $row[0];
+            $nombre = $row[1];
+            $this->login=$login;
+            $this->nombre=$nombre;
+            $this->dni=$dni;
         } else {
-            $sql = "SELECT login,nombre
-                   from Usuario
-                   where dni = $dni";
-            $result = $db->query($sql);
-
-            if ($result->NumRows()>0) {
-                $row = $result->fetchRow();
-                $login = $row[0];
-                $nombre = $row[1];
-                $this->login=$login;
-                $this->nombre=$nombre;
-                $this->dni=$dni;
-            } else {
-                die ('El dni '.$dni.' no existe, debe loguearse al
-                     menos una vez a la intranet.');
-            }
-
+            return new PEAR_Error ('El dni '.$dni.' no existe, debe loguearse al
+                 menos una vez a la intranet.');
         }
     }
-    // -X2C
-
 
-    // +X2C Operation 136
     /**
      * @param  string $login 
      *
      * @return void
      * @access public
      */
-    function ArmarconLOGIN($login) // ~X2C
+    function ArmarconLOGIN($login) 
     {
-        $db = DB::connect($this->dsn);
-        if (DB::isError($db)) {
-            die ($db->getMessage("No pudo conectarse a la base"));
-        } else {
-
-            //$login = ereg_replace ("@", "\\\@", $login);
-            $sql = "SELECT dni,nombre
-                   from Usuario
-                   where login = '$login'";
+        //$login = ereg_replace ("@", "\\\@", $login);
+        $sql = "SELECT dni,nombre
+               from usuario.Usuario
+               where login = '$login'";
 
-            $result = $db->query($sql);
+        $result = $this->_db->query($sql);
 
-            if ($result->NumRows()>0) {
-                $row = $result->fetchRow();
-                $dni = $row[0];
-                $nombre = $row[1];
-                $this->dni=$dni;
-                $this->nombre=$nombre;
-                $this->login=$login;
-            } else {
-                die ('El usuario '.$login.' no existe, debe loguearse al
-                     menos una vez a la intranet.');
-            }
+        if (DB::isError($result)) {
+            return $result;
+        } elseif ($result->NumRows()>0) {
+            $row = $result->fetchRow(DB_FETCHMODE_ORDERED);
+            $this->dni = $row[0];
+            $this->nombre = $row[1];
+            $this->login = $login;
+        } else {
+            return new PEAR_Error ('El usuario '.$login.' no existe, debe loguearse al
+                 menos una vez a la intranet.');
         }
     }
-    // -X2C
 
-    // +X2C Operation 135
     /**
      * @param  int $dni 
      *
      * @return void
      * @access public
      */
-    function MECON_Usuario($dni = NULL, $login = NULL) // ~X2C
+    function MECON_Usuario($db, $dni = null, $login = null) 
     {
+        $this->_db = $db;
         if(! is_null($dni)) {
             $this->ArmarconDNI($dni);
             $this->buscarUsuarioDNI($dni);
@@ -148,110 +149,100 @@ class MECON_Usuario {
         }
 
     }
-    // -X2C
 
-    // +X2C Operation 136
     /**
      * @param  int $uario 
      *
-     * @return void
+     * @return lo que devuelve el query (DB_Result o DB_Error).
      * @access public
      */
-    function Insertar_Usuario($dni = NULL, $login = NULL, $nombre = NULL) // ~X2C
+    function Insertar_Usuario($dni, $login, $nombre) 
     {
-        if((! is_null($dni)) && (! is_null($login)) && (! is_null($nombre))) {
-            $db = DB::connect($this->dsn);
-            if (DB::isError($db)) {
-                die ($db->getMessage("No pudo conectarse a la base"));
-            } else {
-                $sql = "REPLACE INTO Usuario (login,dni,nombre)
-                       values ('$login',$dni,'$nombre')";
-                $result = $db->query($sql);
-            }
-        }
+        $sql = "REPLACE INTO usuario.Usuario (login,dni,nombre)
+               values ('$login',$dni,'$nombre')";
+        return $this->_db->query($sql);
     }
-    // -X2C
 
-    // +X2C Operation 136
     /**
      * @return int
      * @access public
      */
-    function getDni() // ~X2C
+    function getDni() 
     {
         return $this->dni;
     }
-    // -X2C
 
-    // +X2C Operation 137
     /**
      * @return string
      * @access public
      */
-    function getLogin() // ~X2C
+    function getLogin()
     {
         return $this->login;
     }
-    // -X2C
 
-    // +X2C Operation 138
     /**
      * @return string
      * @access public
      */
-    function getNombre() // ~X2C
+    function getCodep() 
+    {
+        return $this->codep;
+    }
+
+
+    /**
+     * @return string
+     * @access public
+     */
+    function getNombre()
     {
         return $this->nombre;
     }
-    // -X2C
+
+    /**
+     * @return string
+     * @access public
+     */
+    function getNivelygrado() 
+    {
+        return $this->nivelygrado;
+    }
+
+
+    /**
+     * @return string
+     * @access public
+     */
+    function getTipo() 
+    {
+        return $this->tipo;
+    }
 
 
-    // +X2C Operation 154
     /**
      * @param  int $dni 
      *
      * @return void
      * @access public
      */
-    function buscarUsuarioDNI($dni) // ~X2C
+    function buscarUsuarioDNI($dni) 
     {
+        $MECON_Agente= & new MECON_Agente($this->_db, $dni);
         $this->dni = $dni;
-        $dsn = 'mysql://intranet:intranet@intranet-db/novedades';
-        $db = DB::connect($dsn);
-        if (DB::isError($db))
-            die ($db->getMessage("No pudo conectarse a la base"));
-        $sql = "SELECT nombre
-               FROM web003
-               WHERE nrodoc = $dni";
-        $result = $db->query($sql);
-        if(DB::isError($result)) {
-            die($result->getMessage("query mal hecho"));
-        }
-        if($result->numRows() > 0) {
-            $row = $result->fetchRow();
-            $nombre = $row[0];
-            $this->nombre = $nombre;
-        } else {
-            $dsn = 'mysql://intranet:intranet@intranet-db/Contratados';
-            $db = DB::connect($dsn);
-            if (DB::isError($db))
-                die ($db->getMessage("No pudo conectarse a la base"));
-            $sql = "SELECT nombre
-                   FROM Contratados
-                   WHERE nrodoc = $dni";
-            $result = $db->query($sql);
-            if(DB::isError($result))
-                die($result->getMessage("query mal hecho"));
-            if($result->numRows() > 0) {
-                $row = $result->fetchRow();
-                $nombre = $row[0];
-                $this->nombre = $nombre;
-            } else
-                return false;
+        $nombre = $MECON_Agente->getNombre();
+        $this->nombre = $nombre;
+        $codep= $MECON_Agente->getDependencia();
+        $this->codep = $codep;
+        $tipo= $MECON_Agente->getTipo();
+        $this->tipo = $tipo;
+        $this->nivelygrado="";
+        if (isset($MECON_Agente->datos['nivel']))
+        {
+            $this->nivelygrado=  $MECON_Agente->datos['nivel'].$MECON_Agente->datos['grado'];                               
         }
-        return true;
+                                
     }
-    // -X2C
 
     /**
       * Verifica si el login pasado por parametro es valido
@@ -261,24 +252,51 @@ class MECON_Usuario {
       * @return mixed
       * @access public
       */
-    function verificarLogin($login = null) {
-        if ($login) {
-            $db = DB::connect($this->dsn);
-            if (PEAR::isError($db)) {
-                return $db;
-            }
-            $sql = "SELECT count(*) as cuenta FROM Usuario WHERE login = '$login'";
-            $result = $db->query($sql);
-            if (PEAR::isError($result)) {
-                return $result;
-            }
-            $row = $result->fetchRow(DB_FETCHMODE_ASSOC);
-            if ($row['cuenta'] != 0) {
-                return true;
-            }
+    function verificarLogin($login) {
+        $sql = "SELECT count(*) as cuenta FROM usuario.Usuario WHERE login = " 
+            . $this->_db->quote($login) ;
+        $result = $this->_db->query($sql);
+        if (PEAR::isError($result)) {
+            return $result;
+        }
+        $row = $result->fetchRow(DB_FETCHMODE_ASSOC);
+        if ($row['cuenta'] != 0) {
+            return true;
         }
         return false;
     }
 
-} // -X2C Class :MECON_Usuario
+    /**
+     * Devuelve un array de logins con aquellos que cumplan con algun requisito
+     * del filtro.
+     *
+     * @param DB &$db Base de Datos
+     * @param string $login Login a filtrar. (Puede ser completo o una parte de el)
+     * @param string $nombre Nombre a filtrar.
+     *
+     * @return mixed
+     * @access public
+     * @static
+     */
+    function filtrarUsuarios(&$db, $login, $nombre) {
+        if ($login && $nombre) {
+            return new PEAR_Error('Solo debe ingresarse una opcion de filtro,
+                    login o nombre, a la vez.');
+        }
+        $sql = "SELECT u.login as login, u.nombre as nombre FROM usuario.Usuario as u 
+                WHERE ";
+
+        if ($login) {
+            $sql.= ' u.login LIKE \'%'.$login.'%\'';
+        }
+        else {
+            $sql.= ' u.nombre LIKE \'%'.$nombre.'%\'';
+        }
+        $sql.= 'ORDER BY u.login';
+
+        $db->setFetchMode(DB_FETCHMODE_ASSOC);
+        $result = $db->query($sql);
+        return $result;
+    }
+} 
 ?>