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';
31 // +X2C Class 207 :SAMURAI_Usuario
33 * Clase para el manejo de los usuarios.
37 class SAMURAI_Usuario {
39 * Login del usuario en intranet.
47 * Numero de documento del usuario
71 * Array con los identificadores de los perfiles asociados a un usuario
73 * @var array(int) $perfiles
91 * @param string $login Login.
96 function setLogin($login)
98 $this->_login = $login;
109 return $this->_nrodoc;
114 * @param int $nrodoc Nrodoc.
119 function setNrodoc($nrodoc)
121 $this->_nrodoc = $nrodoc;
132 return $this->_nombre;
137 * @param string $nombre Nombre.
142 function setNombre($nombre)
144 $this->_nombre = $nombre;
153 function getPerfiles()
155 return $this->_perfiles;
160 * @param array(int) $perfiles Perfiles.
165 function setPerfiles($perfiles)
167 $this->_perfiles = $perfiles;
172 // +X2C Operation 216
174 * Constructor.Recibe como parametro opcional el login del usuario. y busca en la base la informacion referida a el.
176 * @param SAMURAI_DB &$db Objeto conexion.
177 * @param string $login Login del usuario
182 function SAMURAI_Usuario(&$db, $login = null) // ~X2C
185 $this->setLogin($login);
186 if (!is_null($login)) {
187 $this->_obtenerDatosDb();
192 // +X2C Operation 365
194 * Devuleve un array con los login's de los usuarios asociados al sistema
196 * @param SAMURAI_DB &$db Base de Datos
197 * @param int $id_sistema Identificador del sistema
199 * @return array(string)
203 function _getLoginUsuarios(&$db, $id_sistema = null) // ~X2C
205 //OBTENGO LOS LOGIN DE LA BASE
209 $sql = parse_ini_file(dirname(__FILE__) . '/Usuario/consultas.ini', true);
211 $consulta.= $sql['obtener_datos_usuario2'];
212 $tmp[] = $id_sistema;
215 $consulta = $sql['obtener_datos_usuario'];
217 $consulta.= $sql['obtener_datos_usuario4'];
218 $dbh = $db->prepare($consulta);
219 $res = $db->execute($dbh, $tmp);
220 while ($re = $res->fetchrow(DB_FETCHMODE_ASSOC)) {
221 array_push($rta,$re['login']);
228 // +X2C Operation 366
230 * Devuelve un array asociativo en donde la clave es el login y el valor es el nombre del usuario
232 * @param SAMURAI_DB &$db Base de Datos
233 * @param int $id_sistema Identificador del sistema
239 function getArrayUsuarios(&$db, $id_sistema = null) // ~X2C
241 //FORECHEO LO QUE ME DEVUELVA GET USUARIOS
243 foreach (SAMURAI_Usuario::getUsuarios($db, $id_sistema) as $Usuario) {
244 $rta[$permiso->getLogin()] = $permiso->getNombre();
250 // +X2C Operation 367
252 * Devuelve el array de usuarios
254 * @param SAMURAI_DB &$db Base de Datos
255 * @param int $id_sistema Identificador del sistema
257 * @return array(Permiso)
261 function getUsuarios(&$db, $id_sistema = null) // ~X2C
264 foreach (SAMURAI_Usuario::_getLoginUsuarios($db, $id_sistema) as $login) {
265 $tmp = new SAMURAI_Usuario($db,$login);
266 array_push($rta, $tmp);
272 // +X2C Operation 368
274 * Obtiene de la base de datos la informacion del usuario
279 function _obtenerDatosDb() // ~X2C
281 $sql = parse_ini_file(dirname(__FILE__) . '/Usuario/consultas.ini', true);
282 $tmp = $sql['obtener_datos_usuario'].$sql['obtener_datos_usuario3'];
283 $dbh = $this->_db->prepare($tmp);
284 $res = $this->_db->execute($dbh,array($this->getLogin()));
286 if ($re = $res->fetchRow(DB_FETCHMODE_ASSOC)) {
287 if (isset($re['nrodoc'])) {
288 $this->setNrodoc($re['nrodoc']);
293 if (isset($re['nombre'])) {
294 $this->setNombre($re['nombre']);
300 $tmp = $sql['obtener_perfiles_usuario'];
301 $dbh = $this->_db->prepare($tmp);
302 $res = $this->_db->execute($dbh,array($this->getLogin(), $_SESSION['samurai']['id_sistema']));
304 while ($re = $res->fetchRow(DB_FETCHMODE_ASSOC)) {
305 $tmp = new SAMURAI_Perfil($this->_db, $re['id_perfil']);
306 $rta[] = $tmp->getId();
308 $this->setPerfiles($rta);
312 // +X2C Operation 370
314 * Modifica la base de datos segun accion
316 * @param string $accion Indica la accion a realizar
321 function guardarDatos($accion = grabar) // ~X2C
323 $accion = strtolower($accion);
326 $res = $this->_grabarDb();
329 $res = $this->_modificarDb();
332 $res = $this->_borrarDb();
339 // +X2C Operation 371
341 * Graba en base la relacion
346 function _grabarDb() // ~X2C
348 $datos = array ('login', 'id_perfil', 'id_sistema', 'responsable');
349 $re = $this->_db->autoPrepare('perfil_sist_usuario', $datos, DB_AUTOQUERY_INSERT);
350 foreach ($this->getPerfiles() as $perfil) {
351 $datos = array ($this->getLogin(),
353 $_SESSION['samurai']['id_sistema'],
354 $_SESSION['samurai']['login']);
355 $res = $this->_db->execute($re, $datos);
356 if (PEAR::isError($res)) {
363 // +X2C Operation 372
365 * Borra de la base la relacion
370 function _borrarDb() // ~X2C
372 $sql = parse_ini_file(dirname(__FILE__) . '/Usuario/consultas.ini', true);
373 $tmp = $sql['borrar'];
374 $dbh = $this->_db->prepare($tmp);
375 $tmp = array ($this->getLogin(), $_SESSION['samurai']['id_sistema']);
376 return $this->_db->execute($dbh,$tmp);
380 // +X2C Operation 373
382 * Actualiza los datos de la relacion
387 function _modificarDb() // ~X2C
394 // +X2C Operation 374
396 * Verifica si el login actual es valido
401 function verificarLogin() // ~X2C
403 $sql = parse_ini_file(dirname(__FILE__) . '/Usuario/consultas.ini', true);
404 $tmp = $sql['verificar_login'];
405 $dbh = $this->_db->prepare($tmp);
406 $res = $this->_db->execute($dbh,array($this->getLogin()));
407 $re = $res->fetchRow(DB_FETCHMODE_ASSOC);
408 if ($re['cuenta'] == 0) {
409 return new PEAR_Error('Usuario no reconocido.<br>Recuerde que éste debe haberse logueado previamente a Intranet');
415 // +X2C Operation 375
417 * Verifica si el login actual ya esta asociado en base.
422 function verificarAsociacionExistente() // ~X2C
424 $sql = parse_ini_file(dirname(__FILE__) . '/Usuario/consultas.ini', true);
425 $tmp = $sql['verificar_login2'];
426 $dbh = $this->_db->prepare($tmp);
427 $res = $this->_db->execute($dbh,array($this->getLogin(), $_SESSION['samurai']['id_sistema']));
428 $re = $res->fetchRow(DB_FETCHMODE_ASSOC);
430 return new PEAR_Error('El usuario seleccionado ya esta cargado. Modifique sus opciones.');
436 // +X2C Operation 377
438 * Metodo estatico que permite asociar un usuario con un perfil en un sistema determinado.
440 * @param DB &$db Conexion a la base de datos
441 * @param string $login Login del usuario
442 * @param int $id_perfil Identificador del perfil a asociar
443 * @param int $id_sistema Identificador del sistema en el cual se quiere realizar la asociacion
444 * @param string $responsable Login del usuario que esta realizando los cambios
450 function asociarPerfil(&$db, $login, $id_perfil, $id_sistema, $responsable) // ~X2C
452 $sql = parse_ini_file(dirname(__FILE__) . '/Usuario/consultas.ini', true);
454 //Verifico que el usuario exista
455 $tmp = $sql['verificar_login'];
456 $dbh = $db->prepare($tmp);
457 $res = $db->execute($dbh,array($login));
458 $re = $res->fetchRow(DB_FETCHMODE_ASSOC);
459 if ($re['cuenta'] == 0) {
460 return new PEAR_Error('Usuario no reconocido.');
463 //Asocio el perfil con el usuario en perfil_sist_usuario
464 $datos = array ('login' => $login,
465 'id_perfil' => $id_perfil,
466 'id_sistema' => $id_sistema,
467 'responsable' => $responsable);
469 $res = $db->autoExecute('samurai.perfil_sist_usuario', $datos, DB_AUTOQUERY_INSERT);
470 if (PEAR::isError($res)) {
478 } // -X2C Class :SAMURAI_Usuario