]> git.llucax.com Git - mecon/meconlib.git/blobdiff - lib/MECON/Usuario.php
Agrego nueva funcionalidad a MECON_PDF_Texto.
[mecon/meconlib.git] / lib / MECON / Usuario.php
index 83329ad26ad71e7b64ef0959586d9963b907fdba..860658971dfd08de7f40f1dedc0ae414baa870ae 100644 (file)
@@ -4,12 +4,12 @@
                                     meconlib
 -------------------------------------------------------------------------------
 This file is part of meconlib.
-
 meconlib is free software; you can redistribute it and/or modify it under
 the terms of the GNU General Public License as published by the Free
 Software Foundation; either version 2 of the License, or (at your option)
 any later version.
-
 meconlib is distributed in the hope that it will be useful, but WITHOUT
 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
 FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
@@ -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
  */
@@ -37,224 +38,265 @@ class MECON_Usuario {
      */
     var $dni;
 
-     /**
-     * @var    string $login
-     * @access public
-     */
+    /**
+    * @var    string $login
+    * @access public
+    */
     var $login;
+    
+    /**
+      * @var    string $nivelygrado
+      * @access public
+      */
+    var $nivelygrado;
 
+    /**
+      * @var    string $codep
+      * @access public
+      */
+    var $codep;
 
-   /**
-     * @var    string $nombre
-     * @access public
-     */
+    /**
+      * @var    string $nombre
+      * @access public
+      */
     var $nombre;
-   /**
-     * @var    string $dsn
-     * @access public
-     */
-    var $dsn = 'mysql://intranet:intranet@bal747f.mecon.ar/usuario';
-
-
-    // ~X2C
+    
+    /**
+      * @var    string $tipo
+      * @access public
+      */
+    var $tipo;
 
-// +X2C Operation 138
+    /**
+     * @protected
+     */
+    var $_db;
+    
     /**
      * @param  string $dni 
      *
      * @return void
      * @access public
      */
-    function ArmarconDNI($dni) // ~X2C
-  {
-        $db = DB::connect($this->dsn);
-        if (DB::isError($db)) 
-        {
-            die ($db->getMessage("No pudo conectarse a la base"));
-        }
-        else
-        {
-            $sql = "SELECT login,nombre
-                    from Usuario
-                    where dni = $dni";
-            $result = $db->query($sql);
-            $row = $result->fetchRow();
+    function ArmarconDNI($dni) 
+    {
+        $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 {
+            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
-  {
-        $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'";
-            $result = $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;
-            }
+    function ArmarconLOGIN($login) 
+    {
+        //$login = ereg_replace ("@", "\\\@", $login);
+        $sql = "SELECT dni,nombre
+               from usuario.Usuario
+               where login = '$login'";
+
+        $result = $this->_db->query($sql);
+
+        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
-  {
-      if(! is_null($dni))
-      {
+    function MECON_Usuario($db, $dni = null, $login = null) 
+    {
+        $this->_db = $db;
+        if(! is_null($dni)) {
             $this->ArmarconDNI($dni);
             $this->buscarUsuarioDNI($dni);
-      }
-      if(! is_null($login))
-      {
+        }
+        if(! is_null($login)) {
             $this->ArmarconLOGIN($login);
             $this->buscarUsuarioDNI($this->getDni());
-      }
-        
-  }
-  // -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
-  {
-      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);
-        }
-      }
-  }
-  // -X2C
+    function Insertar_Usuario($dni, $login, $nombre) 
+    {
+        $sql = "REPLACE INTO usuario.Usuario (login,dni,nombre)
+               values ('$login',$dni,'$nombre')";
+        return $this->_db->query($sql);
+    }
 
-// +X2C Operation 136
     /**
      * @return int
      * @access public
      */
-    function getDni() // ~X2C
-  {
-      return $this->dni;
-  }
-  // -X2C
+    function getDni() 
+    {
+        return $this->dni;
+    }
 
-    // +X2C Operation 137
     /**
      * @return string
      * @access public
      */
-    function getLogin() // ~X2C
-  {
-      return $this->login;
-  }
-  // -X2C
+    function getLogin()
+    {
+        return $this->login;
+    }
 
-    // +X2C Operation 138
     /**
      * @return string
      * @access public
      */
-    function getNombre() // ~X2C
-  {
-      return $this->nombre;
-  }
-  // -X2C
+    function getCodep() 
+    {
+        return $this->codep;
+    }
+
+
+    /**
+     * @return string
+     * @access public
+     */
+    function getNombre()
+    {
+        return $this->nombre;
+    }
+
+    /**
+     * @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) 
     {
-      $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;
-      }
-      return true;
+        $MECON_Agente= & new MECON_Agente($dni);
+        $this->dni = $dni;
+        $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'];                               
+        }
+                                
+    }
+
+    /**
+      * Verifica si el login pasado por parametro es valido
+      *
+      * @param string $login Login a verificar
+      *
+      * @return mixed
+      * @access public
+      */
+    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
 
-} // -X2C Class :MECON_Usuario
-?>
\ No newline at end of file
+    /**
+     * 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;
+    }
+} 
+?>