]> git.llucax.com Git - mecon/meconlib.git/blob - lib/MECON/Usuario.php
Se arregla un bug.
[mecon/meconlib.git] / lib / MECON / 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
30 /**
31  * @access public
32  */
33 class MECON_Usuario {
34     /**
35      * @var    int $dni
36      * @access public
37      */
38     var $dni;
39
40     /**
41     * @var    string $login
42     * @access public
43     */
44     var $login;
45     
46     /**
47       * @var    string $nivelygrado
48       * @access public
49       */
50     var $nivelygrado;
51  
52
53     /**
54       * @var    string $codep
55       * @access public
56       */
57     var $codep;
58  
59
60     /**
61       * @var    string $nombre
62       * @access public
63       */
64     var $nombre;
65     
66     /**
67       * @var    string $tipo
68       * @access public
69       */
70     var $tipo;
71
72     /**
73      * @protected
74      */
75     var $_db;
76     
77     /**
78      * @param  string $dni 
79      *
80      * @return void
81      * @access public
82      */
83     function ArmarconDNI($dni) 
84     {
85         $sql = "SELECT login,nombre
86                from usuario.Usuario
87                where dni = $dni";
88         $result = $this->_db->query($sql);
89         if (DB::isError($result)) {
90             trigger_error($result->getMessage(), E_USER_ERROR);
91         } elseif ($result->NumRows()>0) {
92             $row = $result->fetchRow(DB_FETCHMODE_ORDERED);
93             $login = $row[0];
94             $nombre = $row[1];
95             $this->login=$login;
96             $this->nombre=$nombre;
97             $this->dni=$dni;
98         } else {
99             trigger_error('El dni '.$dni.' no existe, debe loguearse al
100                  menos una vez a la intranet.');
101         }
102     }
103
104     /**
105      * @param  string $login 
106      *
107      * @return void
108      * @access public
109      */
110     function ArmarconLOGIN($login) 
111     {
112         //$login = ereg_replace ("@", "\\\@", $login);
113         $sql = "SELECT dni,nombre
114                from usuario.Usuario
115                where login = '$login'";
116
117         $result = $this->_db->query($sql);
118
119         if (DB::isError($result)) {
120             trigger_error($result->getMessage(), E_USER_ERROR);
121         } elseif ($result->NumRows()>0) {
122             $row = $result->fetchRow(DB_FETCHMODE_ORDERED);
123             $this->dni = $row[0];
124             $this->nombre = $row[1];
125             $this->login = $login;
126         } else {
127             trigger_error('El usuario '.$login.' no existe, debe loguearse al
128                  menos una vez a la intranet.');
129         }
130     }
131
132     /**
133      * @param  int $dni 
134      *
135      * @return void
136      * @access public
137      */
138     function MECON_Usuario($db, $dni = null, $login = null) 
139     {
140         $this->_db = $db;
141         if(! is_null($dni)) {
142             $this->ArmarconDNI($dni);
143             $this->buscarUsuarioDNI($dni);
144         }
145         if(! is_null($login)) {
146             $this->ArmarconLOGIN($login);
147             $this->buscarUsuarioDNI($this->getDni());
148         }
149
150     }
151
152     /**
153      * @param  int $uario 
154      *
155      * @return lo que devuelve el query (DB_Result o DB_Error).
156      * @access public
157      */
158     function Insertar_Usuario($dni, $login, $nombre) 
159     {
160         $sql = "REPLACE INTO usuario.Usuario (login,dni,nombre)
161                values ('$login',$dni,'$nombre')";
162         return $this->_db->query($sql);
163     }
164
165     /**
166      * @return int
167      * @access public
168      */
169     function getDni() 
170     {
171         return $this->dni;
172     }
173
174     /**
175      * @return string
176      * @access public
177      */
178     function getLogin()
179     {
180         return $this->login;
181     }
182
183     /**
184      * @return string
185      * @access public
186      */
187     function getCodep() 
188     {
189         return $this->codep;
190     }
191
192
193     /**
194      * @return string
195      * @access public
196      */
197     function getNombre()
198     {
199         return $this->nombre;
200     }
201
202     /**
203      * @return string
204      * @access public
205      */
206     function getNivelygrado() 
207     {
208         return $this->nivelygrado;
209     }
210
211
212     /**
213      * @return string
214      * @access public
215      */
216     function getTipo() 
217     {
218         return $this->tipo;
219     }
220
221
222     /**
223      * @param  int $dni 
224      *
225      * @return void
226      * @access public
227      */
228     function buscarUsuarioDNI($dni) 
229     {
230         $MECON_Agente= & new MECON_Agente($dni);
231         $this->dni = $dni;
232         $nombre = $MECON_Agente->getNombre();
233         $this->nombre = $nombre;
234         $codep= $MECON_Agente->getDependencia();
235         $this->codep = $codep;
236         $tipo= $MECON_Agente->getTipo();
237         $this->tipo = $tipo;
238         $this->nivelygrado="";
239         if (isset($MECON_Agente->datos['nivel']))
240         {
241             $this->nivelygrado=  $MECON_Agente->datos['nivel'].$MECON_Agente->datos['grado'];                               
242         }
243                                 
244     }
245
246     /**
247       * Verifica si el login pasado por parametro es valido
248       *
249       * @param string $login Login a verificar
250       *
251       * @return mixed
252       * @access public
253       */
254     function verificarLogin($login) {
255         $sql = "SELECT count(*) as cuenta FROM usuario.Usuario WHERE login = " 
256             . $this->_db->quote($login) ;
257         $result = $this->_db->query($sql);
258         if (PEAR::isError($result)) {
259             return $result;
260         }
261         $row = $result->fetchRow(DB_FETCHMODE_ASSOC);
262         if ($row['cuenta'] != 0) {
263             return true;
264         }
265         return false;
266     }
267
268     /**
269      * Devuelve un array de logins con aquellos que cumplan con algun requisito
270      * del filtro.
271      *
272      * @param DB &$db Base de Datos
273      * @param string $login Login a filtrar. (Puede ser completo o una parte de el)
274      * @param string $nombre Nombre a filtrar.
275      *
276      * @return mixed
277      * @access public
278      * @static
279      */
280     function filtrarUsuarios(&$db, $login, $nombre) {
281         if ($login && $nombre) {
282             return new PEAR_Error('Solo debe ingresarse una opcion de filtro,
283                     login o nombre, a la vez.');
284         }
285         $sql = "SELECT u.login as login, u.nombre as nombre FROM usuario.Usuario as u 
286                 WHERE ";
287
288         if ($login) {
289             $sql.= ' u.login LIKE \'%'.$login.'%\'';
290         }
291         else {
292             $sql.= ' u.nombre LIKE \'%'.$nombre.'%\'';
293         }
294         $sql.= 'ORDER BY u.login';
295
296         $db->setFetchMode(DB_FETCHMODE_ASSOC);
297         $result = $db->query($sql);
298         return $result;
299     }
300
301 ?>