]> git.llucax.com Git - mecon/meconlib.git/blob - lib/MLIB/Usuario.php
Agrego tareas pendientes al TODO.
[mecon/meconlib.git] / lib / MLIB / Usuario.php
1 <?php /* vim: set binary expandtab tabstop=4 shiftwidth=4 textwidth=80:
2 -------------------------------------------------------------------------------
3                              Ministerio de Economía
4                                     meconlib
5 -------------------------------------------------------------------------------
6 This file is part of meconlib.
7  
8 meconlib is free software; you can redistribute it and/or modify it under
9 the terms of the GNU General Public License as published by the Free
10 Software Foundation; either version 2 of the License, or (at your option)
11 any later version.
12  
13 meconlib is distributed in the hope that it will be useful, but WITHOUT
14 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
15 FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
16  
17 You should have received a copy of the GNU General Public License; if not,
18 write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
19 Boston, MA  02111-1307  USA
20 -------------------------------------------------------------------------------
21 Creado: Thu Aug 11 15:17:11 2003
22 Autor:  Manuel Nazar <manazar@mecon.gov.ar>
23 -------------------------------------------------------------------------------
24 $Id: Usuario.php 242 2003-08-11 18:02:16Z manazar $
25 -----------------------------------------------------------------------------*/
26 require_once 'MECON/Agente.php';
27     
28 require_once 'DB.php';
29 require_once 'PEAR.php';
30
31 /**
32  * @access public
33  */
34 class MECON_Usuario {
35     /**
36      * @var    int $dni
37      * @access public
38      */
39     var $dni;
40
41     /**
42     * @var    string $login
43     * @access public
44     */
45     var $login;
46     
47     /**
48       * @var    string $nivelygrado
49       * @access public
50       */
51     var $nivelygrado;
52  
53
54     /**
55       * @var    string $codep
56       * @access public
57       */
58     var $codep;
59  
60
61     /**
62       * @var    string $nombre
63       * @access public
64       */
65     var $nombre;
66     
67     /**
68       * @var    string $tipo
69       * @access public
70       */
71     var $tipo;
72
73     /**
74      * @protected
75      */
76     var $_db;
77     
78     /**
79      * @param  string $dni 
80      *
81      * @return void
82      * @access public
83      */
84     function ArmarconDNI($dni) 
85     {
86         $sql = "SELECT login,nombre
87                from usuario.Usuario
88                where dni = $dni";
89         $result = $this->_db->query($sql);
90         if (DB::isError($result)) {
91             return $result;
92         } elseif ($result->NumRows()>0) {
93             $row = $result->fetchRow(DB_FETCHMODE_ORDERED);
94             $login = $row[0];
95             $nombre = $row[1];
96             $this->login=$login;
97             $this->nombre=$nombre;
98             $this->dni=$dni;
99         } else {
100             return new PEAR_Error ('El dni '.$dni.' no existe, debe loguearse al
101                  menos una vez a la intranet.');
102         }
103     }
104
105     /**
106      * @param  string $login 
107      *
108      * @return void
109      * @access public
110      */
111     function ArmarconLOGIN($login) 
112     {
113         //$login = ereg_replace ("@", "\\\@", $login);
114         $sql = "SELECT dni,nombre
115                from usuario.Usuario
116                where login = '$login'";
117
118         $result = $this->_db->query($sql);
119
120         if (DB::isError($result)) {
121             return $result;
122         } elseif ($result->NumRows()>0) {
123             $row = $result->fetchRow(DB_FETCHMODE_ORDERED);
124             $this->dni = $row[0];
125             $this->nombre = $row[1];
126             $this->login = $login;
127         } else {
128             return new PEAR_Error ('El usuario '.$login.' no existe, debe loguearse al
129                  menos una vez a la intranet.');
130         }
131     }
132
133     /**
134      * @param  int $dni 
135      *
136      * @return void
137      * @access public
138      */
139     function MECON_Usuario($db, $dni = null, $login = null) 
140     {
141         $this->_db = $db;
142         if(! is_null($dni)) {
143             $this->ArmarconDNI($dni);
144             $this->buscarUsuarioDNI($dni);
145         }
146         if(! is_null($login)) {
147             $this->ArmarconLOGIN($login);
148             $this->buscarUsuarioDNI($this->getDni());
149         }
150
151     }
152
153     /**
154      * @param  int $uario 
155      *
156      * @return lo que devuelve el query (DB_Result o DB_Error).
157      * @access public
158      */
159     function Insertar_Usuario($dni, $login, $nombre) 
160     {
161         $sql = "REPLACE INTO usuario.Usuario (login,dni,nombre)
162                values ('$login',$dni,'$nombre')";
163         return $this->_db->query($sql);
164     }
165
166     /**
167      * @return int
168      * @access public
169      */
170     function getDni() 
171     {
172         return $this->dni;
173     }
174
175     /**
176      * @return string
177      * @access public
178      */
179     function getLogin()
180     {
181         return $this->login;
182     }
183
184     /**
185      * @return string
186      * @access public
187      */
188     function getCodep() 
189     {
190         return $this->codep;
191     }
192
193
194     /**
195      * @return string
196      * @access public
197      */
198     function getNombre()
199     {
200         return $this->nombre;
201     }
202
203     /**
204      * @return string
205      * @access public
206      */
207     function getNivelygrado() 
208     {
209         return $this->nivelygrado;
210     }
211
212
213     /**
214      * @return string
215      * @access public
216      */
217     function getTipo() 
218     {
219         return $this->tipo;
220     }
221
222
223     /**
224      * @param  int $dni 
225      *
226      * @return void
227      * @access public
228      */
229     function buscarUsuarioDNI($dni) 
230     {
231         $MECON_Agente= & new MECON_Agente($this->_db, $dni);
232         $this->dni = $dni;
233         $nombre = $MECON_Agente->getNombre();
234         $this->nombre = $nombre;
235         $codep= $MECON_Agente->getDependencia();
236         $this->codep = $codep;
237         $tipo= $MECON_Agente->getTipo();
238         $this->tipo = $tipo;
239         $this->nivelygrado="";
240         if (isset($MECON_Agente->datos['nivel']))
241         {
242             $this->nivelygrado=  $MECON_Agente->datos['nivel'].$MECON_Agente->datos['grado'];                               
243         }
244                                 
245     }
246
247     /**
248       * Verifica si el login pasado por parametro es valido
249       *
250       * @param string $login Login a verificar
251       *
252       * @return mixed
253       * @access public
254       */
255     function verificarLogin($login) {
256         $sql = "SELECT count(*) as cuenta FROM usuario.Usuario WHERE login = " 
257             . $this->_db->quote($login) ;
258         $result = $this->_db->query($sql);
259         if (PEAR::isError($result)) {
260             return $result;
261         }
262         $row = $result->fetchRow(DB_FETCHMODE_ASSOC);
263         if ($row['cuenta'] != 0) {
264             return true;
265         }
266         return false;
267     }
268
269     /**
270      * Devuelve un array de logins con aquellos que cumplan con algun requisito
271      * del filtro.
272      *
273      * @param DB &$db Base de Datos
274      * @param string $login Login a filtrar. (Puede ser completo o una parte de el)
275      * @param string $nombre Nombre a filtrar.
276      *
277      * @return mixed
278      * @access public
279      * @static
280      */
281     function filtrarUsuarios(&$db, $login, $nombre) {
282         if ($login && $nombre) {
283             return new PEAR_Error('Solo debe ingresarse una opcion de filtro,
284                     login o nombre, a la vez.');
285         }
286         $sql = "SELECT u.login as login, u.nombre as nombre FROM usuario.Usuario as u 
287                 WHERE ";
288
289         if ($login) {
290             $sql.= ' u.login LIKE \'%'.$login.'%\'';
291         }
292         else {
293             $sql.= ' u.nombre LIKE \'%'.$nombre.'%\'';
294         }
295         $sql.= 'ORDER BY u.login';
296
297         $db->setFetchMode(DB_FETCHMODE_ASSOC);
298         $result = $db->query($sql);
299         return $result;
300     }
301
302 ?>