2 // vim: set expandtab tabstop=4 softtabstop=4 shiftwidth=4:
3 // +----------------------------------------------------------------------+
5 // +----------------------------------------------------------------------+
6 // | Copyright (c) 1997-2003 The PHP Group |
7 // +----------------------------------------------------------------------+
8 // | This source file is subject to version 2.02 of the PHP license, |
9 // | that is bundled with this package in the file LICENSE, and is |
10 // | available at through the world-wide-web at |
11 // | http://www.php.net/license/2_02.txt. |
12 // | If you did not receive a copy of the PHP license and are unable to |
13 // | obtain it through the world-wide-web, please send a note to |
14 // | license@php.net so we can mail you a copy immediately. |
15 // +----------------------------------------------------------------------+
16 // | Created: Tue May 27 11:20:04 2003
17 // | Author: Martin Marrese - Myrna Degano <mmarre@mecon.gov.ar - mdegan@mecon.gov.ar>
18 // +----------------------------------------------------------------------+
29 \section PRUEBA PRUEBA
30 hola esto es una prueba
35 require_once 'PEAR.php';
36 require_once 'Perfil.php';
37 require_once 'MECON/Usuario.php';
40 // +X2C Class 207 :SAMURAI_Usuario
42 * Clase para el manejo de los usuarios.
46 class SAMURAI_Usuario {
48 * Login del usuario en intranet.
56 * Numero de documento del usuario
80 * Array con los identificadores de los perfiles asociados a un usuario
82 * @var array(int) $perfiles
88 * Identificador del sistema en el cual se esta trabajando.
103 return $this->_login;
108 * @param string $login Login.
113 function setLogin($login)
115 $this->_login = $login;
126 return $this->_nrodoc;
131 * @param int $nrodoc Nrodoc.
136 function setNrodoc($nrodoc)
138 $this->_nrodoc = $nrodoc;
149 return $this->_nombre;
154 * @param string $nombre Nombre.
159 function setNombre($nombre)
161 $this->_nombre = $nombre;
170 function getPerfiles()
172 return $this->_perfiles;
177 * @param array(int) $perfiles Perfiles.
182 function setPerfiles($perfiles)
184 $this->_perfiles = $perfiles;
189 // +X2C Operation 216
191 * Constructor.Recibe como parametro opcional el login del usuario. y busca en la base la informacion referida a el.
193 * @param SAMURAI_DB &$db Objeto conexion.
194 * @param string $login Login del usuario
195 * @param int $idSistema Identificador del sistema en el cual se esta trabajando
200 function SAMURAI_Usuario(&$db, $login = null, $idSistema = null) // ~X2C
203 $this->setLogin($login);
204 $this->_idSistema = $idSistema;
205 if (!is_null($login)) {
206 $tmp =& new MECON_Usuario(null, $login);
207 $this->setNrodoc($tmp->getDni());
208 $this->setNombre($tmp->getNombre());
209 $this->_obtenerDatosDb();
214 // +X2C Operation 365
216 * Devuleve un array con los login's de los usuarios asociados al sistema
218 * @param SAMURAI_DB &$db Base de Datos
219 * @param int $id_sistema Identificador del sistema
221 * @return array(string)
225 function _getLoginUsuarios(&$db, $id_sistema = null) // ~X2C
227 //OBTENGO LOS LOGIN DE LA BASE
231 $sql = parse_ini_file(dirname(__FILE__) . '/Usuario/consultas.ini', true);
233 $consulta.= $sql['obtener_datos_usuario2'];
234 $tmp[] = $id_sistema;
237 $consulta = $sql['obtener_datos_usuario'];
239 $consulta.= $sql['obtener_datos_usuario4'];
240 $dbh = $db->prepare($consulta);
241 $res = $db->execute($dbh, $tmp);
242 while ($re = $res->fetchrow(DB_FETCHMODE_ASSOC)) {
243 array_push($rta,$re['login']);
250 // +X2C Operation 366
252 * Devuelve un array asociativo en donde la clave es el login y el valor es el nombre del usuario
254 * @param SAMURAI_DB &$db Base de Datos
255 * @param int $id_sistema Identificador del sistema
261 function getArrayUsuarios(&$db, $id_sistema = null) // ~X2C
263 //FORECHEO LO QUE ME DEVUELVA GET USUARIOS
265 foreach (SAMURAI_Usuario::getUsuarios($db, $id_sistema) as $Usuario) {
266 $rta[$Usuario->getLogin()] = $Usuario->getNombre();
272 // +X2C Operation 367
274 * Devuelve el array de usuarios
276 * @param SAMURAI_DB &$db Base de Datos
277 * @param int $id_sistema Identificador del sistema
279 * @return array(Permiso)
283 function getUsuarios(&$db, $id_sistema = null) // ~X2C
286 foreach (SAMURAI_Usuario::_getLoginUsuarios($db, $id_sistema) as $login) {
287 $tmp = new SAMURAI_Usuario($db, $login, $id_sistema);
288 array_push($rta, $tmp);
294 // +X2C Operation 368
296 * Obtiene de la base de datos la informacion del usuario
301 function _obtenerDatosDb() // ~X2C
303 $sql = parse_ini_file(dirname(__FILE__) . '/Usuario/consultas.ini', true);
305 $tmp = $sql['obtener_perfiles_usuario'];
306 $dbh = $this->_db->prepare($tmp);
307 $res = $this->_db->execute($dbh,array($this->getLogin(),
311 while ($re = $res->fetchRow(DB_FETCHMODE_ASSOC)) {
312 $tmp = new SAMURAI_Perfil($this->_db, $re['id_perfil'],
314 $rta[] = $tmp->getId();
316 $this->setPerfiles($rta);
320 // +X2C Operation 370
322 * Modifica la base de datos segun accion
324 * @param string $accion Indica la accion a realizar
329 function guardarDatos($accion = grabar) // ~X2C
331 $accion = strtolower($accion);
334 $res = $this->_grabarDb();
337 $res = $this->_modificarDb();
340 $res = $this->_borrarDb();
347 // +X2C Operation 371
349 * Graba en base la relacion
354 function _grabarDb() // ~X2C
356 $datos = array ('login', 'id_perfil', 'id_sistema', 'responsable');
357 $re = $this->_db->autoPrepare('perfil_sist_usuario', $datos, DB_AUTOQUERY_INSERT);
358 foreach ($this->getPerfiles() as $perfil) {
359 $datos = array ($this->getLogin(),
362 $_SESSION['usuario']);
363 $res = $this->_db->execute($re, $datos);
364 if (PEAR::isError($res)) {
371 // +X2C Operation 372
373 * Borra de la base la relacion
378 function _borrarDb() // ~X2C
380 $sql = parse_ini_file(dirname(__FILE__) . '/Usuario/consultas.ini', true);
381 $tmp = $sql['borrar'];
382 $dbh = $this->_db->prepare($tmp);
383 $tmp = array ($this->getLogin(), $this->_idSistema);
384 return $this->_db->execute($dbh,$tmp);
388 // +X2C Operation 373
390 * Actualiza los datos de la relacion
395 function _modificarDb() // ~X2C
402 // +X2C Operation 374
404 * Verifica si el login actual es valido
409 function verificarLogin() // ~X2C
411 $usu = new MECON_Usuario();
412 $tmp = $usu->verificarLogin($this->getLogin());
414 if (PEAR::isError($tmp)) {
422 return new PEAR_Error('Usuario no reconocido.<br>Recuerde que éste debe haberse logueado previamente a Intranet');
427 // +X2C Operation 375
429 * Verifica si el login actual ya esta asociado en base.
434 function verificarAsociacionExistente() // ~X2C
436 $sql = parse_ini_file(dirname(__FILE__) . '/Usuario/consultas.ini', true);
437 $tmp = $sql['verificar_login2'];
438 $dbh = $this->_db->prepare($tmp);
439 $res = $this->_db->execute($dbh,array($this->getLogin(),
441 $re = $res->fetchRow(DB_FETCHMODE_ASSOC);
443 return new PEAR_Error('El usuario seleccionado ya esta cargado. Modifique sus opciones.');
449 // +X2C Operation 386
451 * Metodo estatico que permite asociar un usuario con un perfil en un sistema determinado.
453 * @param DB &$db Conexion a la base de datos
454 * @param string $login Login del usuario que se quiere asociar
455 * @param int $id_perfil Identificador del perfil que se quiere asociar
456 * @param int $id_sistema identificador del sistema en el que se esta haciendo la asociacion
457 * @param int $responsable Login del usuario que esta haciendo los cambios
463 function asociarPerfil(&$db, $login, $id_perfil, $id_sistema, $responsable) // ~X2C
465 $sql = parse_ini_file(dirname(__FILE__) . '/Usuario/consultas.ini', true);
467 $usu = new MECON_Usuario();
468 $tmp = $usu->verificarLogin($login);
470 if (PEAR::isError($tmp)) {
478 return new PEAR_Error('Usuario no reconocido.<br>Recuerde que éste debe haberse logueado previamente a Intranet');
481 //Asocio el perfil con el usuario en perfil_sist_usuario
482 $datos = array ('login' => $login,
483 'id_perfil' => $id_perfil,
484 'id_sistema' => $id_sistema,
485 'responsable' => $responsable);
487 $res = $db->autoExecute('samurai.perfil_sist_usuario', $datos, DB_AUTOQUERY_INSERT);
488 if (PEAR::isError($res)) {
496 } // -X2C Class :SAMURAI_Usuario