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
101 return $this->_login;
106 * @param string $login Login.
111 function setLogin($login)
113 $this->_login = $login;
124 return $this->_nrodoc;
129 * @param int $nrodoc Nrodoc.
134 function setNrodoc($nrodoc)
136 $this->_nrodoc = $nrodoc;
147 return $this->_nombre;
152 * @param string $nombre Nombre.
157 function setNombre($nombre)
159 $this->_nombre = $nombre;
168 function getPerfiles()
170 return $this->_perfiles;
175 * @param array(int) $perfiles Perfiles.
180 function setPerfiles($perfiles)
182 $this->_perfiles = $perfiles;
187 // +X2C Operation 216
189 * Constructor.Recibe como parametro opcional el login del usuario. y busca en la base la informacion referida a el.
191 * @param SAMURAI_DB &$db Objeto conexion.
192 * @param string $login Login del usuario
193 * @param int $idSistema Identificador del sistema en el cual se esta trabajando
198 function SAMURAI_Usuario(&$db, $login = null, $idSistema = null) // ~X2C
201 $this->setLogin($login);
202 if (!is_null($login)) {
203 $tmp =& new MECON_Usuario(null, $login);
204 $this->setNrodoc($tmp->getDni());
205 $this->setNombre($tmp->getNombre());
206 $this->_idSistema = $idSistema;
207 $this->_obtenerDatosDb();
212 // +X2C Operation 365
214 * Devuleve un array con los login's de los usuarios asociados al sistema
216 * @param SAMURAI_DB &$db Base de Datos
217 * @param int $id_sistema Identificador del sistema
219 * @return array(string)
223 function _getLoginUsuarios(&$db, $id_sistema = null) // ~X2C
225 //OBTENGO LOS LOGIN DE LA BASE
229 $sql = parse_ini_file(dirname(__FILE__) . '/Usuario/consultas.ini', true);
231 $consulta.= $sql['obtener_datos_usuario2'];
232 $tmp[] = $id_sistema;
235 $consulta = $sql['obtener_datos_usuario'];
237 $consulta.= $sql['obtener_datos_usuario4'];
238 $dbh = $db->prepare($consulta);
239 $res = $db->execute($dbh, $tmp);
240 while ($re = $res->fetchrow(DB_FETCHMODE_ASSOC)) {
241 array_push($rta,$re['login']);
248 // +X2C Operation 366
250 * Devuelve un array asociativo en donde la clave es el login y el valor es el nombre del usuario
252 * @param SAMURAI_DB &$db Base de Datos
253 * @param int $id_sistema Identificador del sistema
259 function getArrayUsuarios(&$db, $id_sistema = null) // ~X2C
261 //FORECHEO LO QUE ME DEVUELVA GET USUARIOS
263 foreach (SAMURAI_Usuario::getUsuarios($db, $id_sistema) as $Usuario) {
264 $rta[$Usuario->getLogin()] = $Usuario->getNombre();
270 // +X2C Operation 367
272 * Devuelve el array de usuarios
274 * @param SAMURAI_DB &$db Base de Datos
275 * @param int $id_sistema Identificador del sistema
277 * @return array(Permiso)
281 function getUsuarios(&$db, $id_sistema = null) // ~X2C
284 foreach (SAMURAI_Usuario::_getLoginUsuarios($db, $id_sistema) as $login) {
285 $tmp = new SAMURAI_Usuario($db, $login, $id_sistema);
286 array_push($rta, $tmp);
292 // +X2C Operation 368
294 * Obtiene de la base de datos la informacion del usuario
299 function _obtenerDatosDb() // ~X2C
301 $sql = parse_ini_file(dirname(__FILE__) . '/Usuario/consultas.ini', true);
303 $tmp = $sql['obtener_perfiles_usuario'];
304 $dbh = $this->_db->prepare($tmp);
305 $res = $this->_db->execute($dbh,array($this->getLogin(),
309 while ($re = $res->fetchRow(DB_FETCHMODE_ASSOC)) {
310 $tmp = new SAMURAI_Perfil($this->_db, $re['id_perfil'],
312 $rta[] = $tmp->getId();
314 $this->setPerfiles($rta);
318 // +X2C Operation 370
320 * Modifica la base de datos segun accion
322 * @param string $accion Indica la accion a realizar
327 function guardarDatos($accion = grabar) // ~X2C
329 $accion = strtolower($accion);
332 $res = $this->_grabarDb();
335 $res = $this->_modificarDb();
338 $res = $this->_borrarDb();
345 // +X2C Operation 371
347 * Graba en base la relacion
352 function _grabarDb() // ~X2C
354 $datos = array ('login', 'id_perfil', 'id_sistema', 'responsable');
355 $re = $this->_db->autoPrepare('perfil_sist_usuario', $datos, DB_AUTOQUERY_INSERT);
356 foreach ($this->getPerfiles() as $perfil) {
357 $datos = array ($this->getLogin(),
360 $_SESSION['usuario']);
361 $res = $this->_db->execute($re, $datos);
362 if (PEAR::isError($res)) {
369 // +X2C Operation 372
371 * Borra de la base la relacion
376 function _borrarDb() // ~X2C
378 $sql = parse_ini_file(dirname(__FILE__) . '/Usuario/consultas.ini', true);
379 $tmp = $sql['borrar'];
380 $dbh = $this->_db->prepare($tmp);
381 $tmp = array ($this->getLogin(), $this->_idSistema);
382 return $this->_db->execute($dbh,$tmp);
386 // +X2C Operation 373
388 * Actualiza los datos de la relacion
393 function _modificarDb() // ~X2C
400 // +X2C Operation 374
402 * Verifica si el login actual es valido
407 function verificarLogin() // ~X2C
409 $usu = new MECON_Usuario();
410 $tmp = $usu->verificarLogin($this->getLogin());
412 if (PEAR::isError($tmp)) {
420 return new PEAR_Error('Usuario no reconocido.<br>Recuerde que éste debe haberse logueado previamente a Intranet');
425 // +X2C Operation 375
427 * Verifica si el login actual ya esta asociado en base.
432 function verificarAsociacionExistente() // ~X2C
434 $sql = parse_ini_file(dirname(__FILE__) . '/Usuario/consultas.ini', true);
435 $tmp = $sql['verificar_login2'];
436 $dbh = $this->_db->prepare($tmp);
437 $res = $this->_db->execute($dbh,array($this->getLogin(),
439 $re = $res->fetchRow(DB_FETCHMODE_ASSOC);
441 return new PEAR_Error('El usuario seleccionado ya esta cargado. Modifique sus opciones.');
447 // +X2C Operation 386
449 * Metodo estatico que permite asociar un usuario con un perfil en un sistema determinado.
451 * @param DB &$db Conexion a la base de datos
452 * @param string $login Login del usuario que se quiere asociar
453 * @param int $id_perfil Identificador del perfil que se quiere asociar
454 * @param int $id_sistema identificador del sistema en el que se esta haciendo la asociacion
455 * @param int $responsable Login del usuario que esta haciendo los cambios
461 function asociarPerfil(&$db, $login, $id_perfil, $id_sistema, $responsable) // ~X2C
463 $sql = parse_ini_file(dirname(__FILE__) . '/Usuario/consultas.ini', true);
465 $usu = new MECON_Usuario();
466 $tmp = $usu->verificarLogin($login);
468 if (PEAR::isError($tmp)) {
476 return new PEAR_Error('Usuario no reconocido.<br>Recuerde que éste debe haberse logueado previamente a Intranet');
479 //Asocio el perfil con el usuario en perfil_sist_usuario
480 $datos = array ('login' => $login,
481 'id_perfil' => $id_perfil,
482 'id_sistema' => $id_sistema,
483 'responsable' => $responsable);
485 $res = $db->autoExecute('samurai.perfil_sist_usuario', $datos, DB_AUTOQUERY_INSERT);
486 if (PEAR::isError($res)) {
494 } // -X2C Class :SAMURAI_Usuario