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 // +----------------------------------------------------------------------+
27 require_once 'PEAR.php';
28 require_once 'Perfil.php';
29 require_once 'MECON/Usuario.php';
32 // +X2C Class 207 :SAMURAI_Usuario
34 * Clase para el manejo de los usuarios.
38 class SAMURAI_Usuario {
40 * Login del usuario en intranet.
48 * Numero de documento del usuario
72 * Array con los identificadores de los perfiles asociados a un usuario
74 * @var array(int) $perfiles
92 * @param string $login Login.
97 function setLogin($login)
99 $this->_login = $login;
110 return $this->_nrodoc;
115 * @param int $nrodoc Nrodoc.
120 function setNrodoc($nrodoc)
122 $this->_nrodoc = $nrodoc;
133 return $this->_nombre;
138 * @param string $nombre Nombre.
143 function setNombre($nombre)
145 $this->_nombre = $nombre;
154 function getPerfiles()
156 return $this->_perfiles;
161 * @param array(int) $perfiles Perfiles.
166 function setPerfiles($perfiles)
168 $this->_perfiles = $perfiles;
173 // +X2C Operation 216
175 * Constructor.Recibe como parametro opcional el login del usuario. y busca en la base la informacion referida a el.
177 * @param SAMURAI_DB &$db Objeto conexion.
178 * @param string $login Login del usuario
183 function SAMURAI_Usuario(&$db, $login = null) // ~X2C
186 $this->setLogin($login);
187 if (!is_null($login)) {
188 $tmp =& new MECON_Usuario(null, $login);
189 $this->setNrodoc($tmp->getDni());
190 $this->setNombre($tmp->getNombre());
191 $this->_obtenerDatosDb();
196 // +X2C Operation 365
198 * Devuleve un array con los login's de los usuarios asociados al sistema
200 * @param SAMURAI_DB &$db Base de Datos
201 * @param int $id_sistema Identificador del sistema
203 * @return array(string)
207 function _getLoginUsuarios(&$db, $id_sistema = null) // ~X2C
209 //OBTENGO LOS LOGIN DE LA BASE
213 $sql = parse_ini_file(dirname(__FILE__) . '/Usuario/consultas.ini', true);
215 $consulta.= $sql['obtener_datos_usuario2'];
216 $tmp[] = $id_sistema;
219 $consulta = $sql['obtener_datos_usuario'];
221 $consulta.= $sql['obtener_datos_usuario4'];
222 $dbh = $db->prepare($consulta);
223 $res = $db->execute($dbh, $tmp);
224 while ($re = $res->fetchrow(DB_FETCHMODE_ASSOC)) {
225 array_push($rta,$re['login']);
232 // +X2C Operation 366
234 * Devuelve un array asociativo en donde la clave es el login y el valor es el nombre del usuario
236 * @param SAMURAI_DB &$db Base de Datos
237 * @param int $id_sistema Identificador del sistema
243 function getArrayUsuarios(&$db, $id_sistema = null) // ~X2C
245 //FORECHEO LO QUE ME DEVUELVA GET USUARIOS
247 foreach (SAMURAI_Usuario::getUsuarios($db, $id_sistema) as $Usuario) {
248 $rta[$Usuario->getLogin()] = $Usuario->getNombre();
254 // +X2C Operation 367
256 * Devuelve el array de usuarios
258 * @param SAMURAI_DB &$db Base de Datos
259 * @param int $id_sistema Identificador del sistema
261 * @return array(Permiso)
265 function getUsuarios(&$db, $id_sistema = null) // ~X2C
268 foreach (SAMURAI_Usuario::_getLoginUsuarios($db, $id_sistema) as $login) {
269 $tmp = new SAMURAI_Usuario($db,$login);
270 array_push($rta, $tmp);
276 // +X2C Operation 368
278 * Obtiene de la base de datos la informacion del usuario
283 function _obtenerDatosDb() // ~X2C
285 $sql = parse_ini_file(dirname(__FILE__) . '/Usuario/consultas.ini', true);
287 $tmp = $sql['obtener_perfiles_usuario'];
288 $dbh = $this->_db->prepare($tmp);
289 $res = $this->_db->execute($dbh,array($this->getLogin(), $_SESSION['samurai']['id_sistema']));
292 while ($re = $res->fetchRow(DB_FETCHMODE_ASSOC)) {
293 $tmp = new SAMURAI_Perfil($this->_db, $re['id_perfil']);
294 $rta[] = $tmp->getId();
296 $this->setPerfiles($rta);
300 // +X2C Operation 370
302 * Modifica la base de datos segun accion
304 * @param string $accion Indica la accion a realizar
309 function guardarDatos($accion = grabar) // ~X2C
311 $accion = strtolower($accion);
314 $res = $this->_grabarDb();
317 $res = $this->_modificarDb();
320 $res = $this->_borrarDb();
327 // +X2C Operation 371
329 * Graba en base la relacion
334 function _grabarDb() // ~X2C
336 $datos = array ('login', 'id_perfil', 'id_sistema', 'responsable');
337 $re = $this->_db->autoPrepare('perfil_sist_usuario', $datos, DB_AUTOQUERY_INSERT);
338 foreach ($this->getPerfiles() as $perfil) {
339 $datos = array ($this->getLogin(),
341 $_SESSION['samurai']['id_sistema'],
342 $_SESSION['samurai']['login']);
343 $res = $this->_db->execute($re, $datos);
344 if (PEAR::isError($res)) {
351 // +X2C Operation 372
353 * Borra de la base la relacion
358 function _borrarDb() // ~X2C
360 $sql = parse_ini_file(dirname(__FILE__) . '/Usuario/consultas.ini', true);
361 $tmp = $sql['borrar'];
362 $dbh = $this->_db->prepare($tmp);
363 $tmp = array ($this->getLogin(), $_SESSION['samurai']['id_sistema']);
364 return $this->_db->execute($dbh,$tmp);
368 // +X2C Operation 373
370 * Actualiza los datos de la relacion
375 function _modificarDb() // ~X2C
382 // +X2C Operation 374
384 * Verifica si el login actual es valido
389 function verificarLogin() // ~X2C
391 $usu = new MECON_Usuario();
392 $tmp = $usu->verificarLogin($this->getLogin());
394 if (PEAR::isError($tmp)) {
402 return new PEAR_Error('Usuario no reconocido.<br>Recuerde que éste debe haberse logueado previamente a Intranet');
407 // +X2C Operation 375
409 * Verifica si el login actual ya esta asociado en base.
414 function verificarAsociacionExistente() // ~X2C
416 $sql = parse_ini_file(dirname(__FILE__) . '/Usuario/consultas.ini', true);
417 $tmp = $sql['verificar_login2'];
418 $dbh = $this->_db->prepare($tmp);
419 $res = $this->_db->execute($dbh,array($this->getLogin(), $_SESSION['samurai']['id_sistema']));
420 $re = $res->fetchRow(DB_FETCHMODE_ASSOC);
422 return new PEAR_Error('El usuario seleccionado ya esta cargado. Modifique sus opciones.');
428 // +X2C Operation 386
430 * Metodo estatico que permite asociar un usuario con un perfil en un sistema determinado.
432 * @param DB &$db Conexion a la base de datos
433 * @param string $login Login del usuario que se quiere asociar
434 * @param int $id_perfil Identificador del perfil que se quiere asociar
435 * @param int $id_sistema identificador del sistema en el que se esta haciendo la asociacion
436 * @param int $responsable Login del usuario que esta haciendo los cambios
442 function asociarPerfil(&$db, $login, $id_perfil, $id_sistema, $responsable) // ~X2C
444 $sql = parse_ini_file(dirname(__FILE__) . '/Usuario/consultas.ini', true);
446 $usu = new MECON_Usuario();
447 $tmp = $usu->verificarLogin($login);
449 if (PEAR::isError($tmp)) {
457 return new PEAR_Error('Usuario no reconocido.<br>Recuerde que éste debe haberse logueado previamente a Intranet');
460 //Asocio el perfil con el usuario en perfil_sist_usuario
461 $datos = array ('login' => $login,
462 'id_perfil' => $id_perfil,
463 'id_sistema' => $id_sistema,
464 'responsable' => $responsable);
466 $res = $db->autoExecute('samurai.perfil_sist_usuario', $datos, DB_AUTOQUERY_INSERT);
467 if (PEAR::isError($res)) {
475 } // -X2C Class :SAMURAI_Usuario