]> git.llucax.com Git - mecon/meconlib.git/blob - lib/MECON/Usuario.php
3308cf771eb2e9a1e3fd41df7ca2d8c32a4e6895
[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();
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();
123             $dni = $row[0];
124             $nombre = $row[1];
125             $this->dni=$dni;
126             $this->nombre=$nombre;
127             $this->login=$login;
128         } else {
129             trigger_error('El usuario '.$login.' no existe, debe loguearse al
130                  menos una vez a la intranet.');
131         }
132     }
133
134     /**
135      * @param  int $dni 
136      *
137      * @return void
138      * @access public
139      */
140     function MECON_Usuario($db, $dni = null, $login = null) 
141     {
142         $this->_db = $db;
143         if(! is_null($dni)) {
144             $this->ArmarconDNI($dni);
145             $this->buscarUsuarioDNI($dni);
146         }
147         if(! is_null($login)) {
148             $this->ArmarconLOGIN($login);
149             $this->buscarUsuarioDNI($this->getDni());
150         }
151
152     }
153
154     /**
155      * @param  int $uario 
156      *
157      * @return lo que devuelve el query (DB_Result o DB_Error).
158      * @access public
159      */
160     function Insertar_Usuario($dni, $login, $nombre) 
161     {
162         $sql = "REPLACE INTO usuario.Usuario (login,dni,nombre)
163                values ('$login',$dni,'$nombre')";
164         return $this->_db->query($sql);
165     }
166
167     /**
168      * @return int
169      * @access public
170      */
171     function getDni() 
172     {
173         return $this->dni;
174     }
175
176     /**
177      * @return string
178      * @access public
179      */
180     function getLogin()
181     {
182         return $this->login;
183     }
184
185     /**
186      * @return string
187      * @access public
188      */
189     function getCodep() 
190     {
191         return $this->codep;
192     }
193
194
195     /**
196      * @return string
197      * @access public
198      */
199     function getNombre()
200     {
201         return $this->nombre;
202     }
203
204     /**
205      * @return string
206      * @access public
207      */
208     function getNivelygrado() 
209     {
210         return $this->nivelygrado;
211     }
212
213
214     /**
215      * @return string
216      * @access public
217      */
218     function getTipo() 
219     {
220         return $this->tipo;
221     }
222
223
224     /**
225      * @param  int $dni 
226      *
227      * @return void
228      * @access public
229      */
230     function buscarUsuarioDNI($dni) 
231     {
232         $MECON_Agente= & new MECON_Agente($dni);
233         $this->dni = $dni;
234         $nombre = $MECON_Agente->getNombre();
235         $this->nombre = $nombre;
236         $codep= $MECON_Agente->getDependencia();
237         $this->codep = $codep;
238         $tipo= $MECON_Agente->getTipo();
239         $this->tipo = $tipo;
240         $this->nivelygrado="";
241         if (isset($MECON_Agente->datos['nivel']))
242         {
243             $this->nivelygrado=  $MECON_Agente->datos['nivel'].$MECON_Agente->datos['grado'];                               
244         }
245                                 
246     }
247
248     /**
249       * Verifica si el login pasado por parametro es valido
250       *
251       * @param string $login Login a verificar
252       *
253       * @return mixed
254       * @access public
255       */
256     function verificarLogin($login) {
257         $login = $this->_db->quote($login);
258         $sql = "SELECT count(*) as usuario.cuenta FROM usuario.Usuario WHERE login = '$login'";
259         $result = $db->query($sql);
260         if (PEAR::isError($result)) {
261             return $result;
262         }
263         $row = $result->fetchRow(DB_FETCHMODE_ASSOC);
264         if ($row['cuenta'] != 0) {
265             return true;
266         }
267         return false;
268     }
269
270     /**
271      * Devuelve un array de logins con aquellos que cumplan con algun requisito
272      * del filtro.
273      *
274      * @param DB &$db Base de Datos
275      * @param string $login Login a filtrar. (Puede ser completo o una parte de el)
276      * @param string $nombre Nombre a filtrar.
277      *
278      * @return mixed
279      * @access public
280      * @static
281      */
282     function filtrarUsuarios(&$db, $login, $nombre) {
283         if ($login && $nombre) {
284             return new PEAR_Error('Solo debe ingresarse una opcion de filtro,
285                     login o nombre, a la vez.');
286         }
287         $sql = "SELECT u.login as login, u.nombre as nombre FROM usuario.Usuario as u 
288                 WHERE ";
289
290         if ($login) {
291             $sql.= ' u.login LIKE \'%'.$login.'%\'';
292         }
293         else {
294             $sql.= ' u.nombre LIKE \'%'.$nombre.'%\'';
295         }
296         $sql.= 'ORDER BY u.login';
297
298         $db->setFetchMode(DB_FETCHMODE_ASSOC);
299         $result = $db->query($sql);
300         return $result;
301     }
302
303 ?>