]> git.llucax.com Git - mecon/meconlib.git/blob - lib/MECON/Usuario.php
Se termina TablaDB con documentación y todo. Falta probar mejor y dar más ejemplos.
[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    
74     /**
75       * @var    string $dsn
76       * @access public
77       */
78     var $dsn = 'mysql://intranet:intranet@bal747f.mecon.ar/usuario';
79
80
81     /**
82      * @param  string $dni 
83      *
84      * @return void
85      * @access public
86      */
87     function ArmarconDNI($dni) 
88     {
89         $db = DB::connect($this->dsn);
90         if (DB::isError($db)) {
91             die ($db->getMessage("No pudo conectarse a la base"));
92         } else {
93             $sql = "SELECT login,nombre
94                    from Usuario
95                    where dni = $dni";
96             $result = $db->query($sql);
97
98             if ($result->NumRows()>0) {
99                 $row = $result->fetchRow();
100                 $login = $row[0];
101                 $nombre = $row[1];
102                 $this->login=$login;
103                 $this->nombre=$nombre;
104                 $this->dni=$dni;
105             } else {
106                 die ('El dni '.$dni.' no existe, debe loguearse al
107                      menos una vez a la intranet.');
108             }
109
110         }
111     }
112
113     /**
114      * @param  string $login 
115      *
116      * @return void
117      * @access public
118      */
119     function ArmarconLOGIN($login) 
120     {
121         $db = DB::connect($this->dsn);
122         if (DB::isError($db)) {
123             die ($db->getMessage("No pudo conectarse a la base"));
124         } else {
125
126             //$login = ereg_replace ("@", "\\\@", $login);
127             $sql = "SELECT dni,nombre
128                    from Usuario
129                    where login = '$login'";
130
131             $result = $db->query($sql);
132
133             if ($result->NumRows()>0) {
134                 $row = $result->fetchRow();
135                 $dni = $row[0];
136                 $nombre = $row[1];
137                 $this->dni=$dni;
138                 $this->nombre=$nombre;
139                 $this->login=$login;
140             } else {
141                 die ('El usuario '.$login.' no existe, debe loguearse al
142                      menos una vez a la intranet.');
143             }
144         }
145     }
146
147     /**
148      * @param  int $dni 
149      *
150      * @return void
151      * @access public
152      */
153     function MECON_Usuario($dni = NULL, $login = NULL) 
154     {
155         if(! is_null($dni)) {
156             $this->ArmarconDNI($dni);
157             $this->buscarUsuarioDNI($dni);
158         }
159         if(! is_null($login)) {
160             $this->ArmarconLOGIN($login);
161             $this->buscarUsuarioDNI($this->getDni());
162         }
163
164     }
165
166     /**
167      * @param  int $uario 
168      *
169      * @return void
170      * @access public
171      */
172     function Insertar_Usuario($dni = NULL, $login = NULL, $nombre = NULL) 
173     {
174         if((! is_null($dni)) && (! is_null($login)) && (! is_null($nombre))) {
175             $db = DB::connect($this->dsn);
176             if (DB::isError($db)) {
177                 die ($db->getMessage("No pudo conectarse a la base"));
178             } else {
179                 $sql = "REPLACE INTO Usuario (login,dni,nombre)
180                        values ('$login',$dni,'$nombre')";
181                 $result = $db->query($sql);
182             }
183         }
184     }
185
186     /**
187      * @return int
188      * @access public
189      */
190     function getDni() 
191     {
192         return $this->dni;
193     }
194
195     /**
196      * @return string
197      * @access public
198      */
199     function getLogin()
200     {
201         return $this->login;
202     }
203
204     /**
205      * @return string
206      * @access public
207      */
208     function getCodep() 
209     {
210         return $this->codep;
211     }
212
213
214     /**
215      * @return string
216      * @access public
217      */
218     function getNombre()
219     {
220         return $this->nombre;
221     }
222
223     /**
224      * @return string
225      * @access public
226      */
227     function getNivelygrado() 
228     {
229         return $this->nivelygrado;
230     }
231
232
233     /**
234      * @return string
235      * @access public
236      */
237     function getTipo() 
238     {
239         return $this->tipo;
240     }
241
242
243     /**
244      * @param  int $dni 
245      *
246      * @return void
247      * @access public
248      */
249     function buscarUsuarioDNI($dni) 
250     {
251         $MECON_Agente= & new MECON_Agente($dni);
252         $this->dni = $dni;
253         $nombre = $MECON_Agente->getNombre();
254         $this->nombre = $nombre;
255         $codep= $MECON_Agente->getDependencia();
256         $this->codep = $codep;
257         $tipo= $MECON_Agente->getTipo();
258         $this->tipo = $tipo;
259         $this->nivelygrado="";
260         if (isset($MECON_Agente->datos['nivel']))
261         {
262             $this->nivelygrado=  $MECON_Agente->datos['nivel'].$MECON_Agente->datos['grado'];                               
263         }
264                                 
265     }
266
267     /**
268       * Verifica si el login pasado por parametro es valido
269       *
270       * @param string $login Login a verificar
271       *
272       * @return mixed
273       * @access public
274       */
275     function verificarLogin($login = null) {
276         if ($login) {
277             $db = DB::connect($this->dsn);
278             if (PEAR::isError($db)) {
279                 return $db;
280             }
281             $sql = "SELECT count(*) as cuenta FROM Usuario WHERE login = '$login'";
282             $result = $db->query($sql);
283             if (PEAR::isError($result)) {
284                 return $result;
285             }
286             $row = $result->fetchRow(DB_FETCHMODE_ASSOC);
287             if ($row['cuenta'] != 0) {
288                 return true;
289             }
290         }
291         return false;
292     }
293
294     /**
295      * Devuelve un array de logins con aquellos que cumplan con algun requisito
296      * del filtro.
297      *
298      * @param DB &$db Base de Datos
299      * @param string $login Login a filtrar. (Puede ser completo o una parte de el)
300      * @param string $nombre Nombre a filtrar.
301      *
302      * @return mixed
303      * @access public
304      * @static
305      */
306     function filtrarUsuarios(&$db, $login, $nombre) {
307         if ($login && $nombre) {
308             return new PEAR_Error('Solo debe ingresarse una opcion de filtro,
309                     login o nombre, a la vez.');
310         }
311         $sql = "SELECT u.login as login, u.nombre as nombre FROM usuario.Usuario as u 
312                 WHERE ";
313
314         if ($login) {
315             $sql.= ' u.login LIKE \'%'.$login.'%\'';
316         }
317         else {
318             $sql.= ' u.nombre LIKE \'%'.$nombre.'%\'';
319         }
320         $sql.= 'ORDER BY u.login';
321
322         $db->setFetchMode(DB_FETCHMODE_ASSOC);
323         $result = $db->query($sql);
324         return $result;
325     }
326
327 ?>