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
100 * @param string $login Login.
105 function setLogin($login)
107 $this->_login = $login;
118 return $this->_nrodoc;
123 * @param int $nrodoc Nrodoc.
128 function setNrodoc($nrodoc)
130 $this->_nrodoc = $nrodoc;
141 return $this->_nombre;
146 * @param string $nombre Nombre.
151 function setNombre($nombre)
153 $this->_nombre = $nombre;
162 function getPerfiles()
164 return $this->_perfiles;
169 * @param array(int) $perfiles Perfiles.
174 function setPerfiles($perfiles)
176 $this->_perfiles = $perfiles;
181 // +X2C Operation 216
183 * Constructor.Recibe como parametro opcional el login del usuario. y busca en la base la informacion referida a el.
185 * @param SAMURAI_DB &$db Objeto conexion.
186 * @param string $login Login del usuario
191 function SAMURAI_Usuario(&$db, $login = null) // ~X2C
194 $this->setLogin($login);
195 if (!is_null($login)) {
196 $tmp =& new MECON_Usuario(null, $login);
197 $this->setNrodoc($tmp->getDni());
198 $this->setNombre($tmp->getNombre());
199 $this->_obtenerDatosDb();
204 // +X2C Operation 365
206 * Devuleve un array con los login's de los usuarios asociados al sistema
208 * @param SAMURAI_DB &$db Base de Datos
209 * @param int $id_sistema Identificador del sistema
211 * @return array(string)
215 function _getLoginUsuarios(&$db, $id_sistema = null) // ~X2C
217 //OBTENGO LOS LOGIN DE LA BASE
221 $sql = parse_ini_file(dirname(__FILE__) . '/Usuario/consultas.ini', true);
223 $consulta.= $sql['obtener_datos_usuario2'];
224 $tmp[] = $id_sistema;
227 $consulta = $sql['obtener_datos_usuario'];
229 $consulta.= $sql['obtener_datos_usuario4'];
230 $dbh = $db->prepare($consulta);
231 $res = $db->execute($dbh, $tmp);
232 while ($re = $res->fetchrow(DB_FETCHMODE_ASSOC)) {
233 array_push($rta,$re['login']);
240 // +X2C Operation 366
242 * Devuelve un array asociativo en donde la clave es el login y el valor es el nombre del usuario
244 * @param SAMURAI_DB &$db Base de Datos
245 * @param int $id_sistema Identificador del sistema
251 function getArrayUsuarios(&$db, $id_sistema = null) // ~X2C
253 //FORECHEO LO QUE ME DEVUELVA GET USUARIOS
255 foreach (SAMURAI_Usuario::getUsuarios($db, $id_sistema) as $Usuario) {
256 $rta[$Usuario->getLogin()] = $Usuario->getNombre();
262 // +X2C Operation 367
264 * Devuelve el array de usuarios
266 * @param SAMURAI_DB &$db Base de Datos
267 * @param int $id_sistema Identificador del sistema
269 * @return array(Permiso)
273 function getUsuarios(&$db, $id_sistema = null) // ~X2C
276 foreach (SAMURAI_Usuario::_getLoginUsuarios($db, $id_sistema) as $login) {
277 $tmp = new SAMURAI_Usuario($db,$login);
278 array_push($rta, $tmp);
284 // +X2C Operation 368
286 * Obtiene de la base de datos la informacion del usuario
291 function _obtenerDatosDb() // ~X2C
293 $sql = parse_ini_file(dirname(__FILE__) . '/Usuario/consultas.ini', true);
295 $tmp = $sql['obtener_perfiles_usuario'];
296 $dbh = $this->_db->prepare($tmp);
297 $res = $this->_db->execute($dbh,array($this->getLogin(), $_SESSION['samurai']['id_sistema']));
300 while ($re = $res->fetchRow(DB_FETCHMODE_ASSOC)) {
301 $tmp = new SAMURAI_Perfil($this->_db, $re['id_perfil']);
302 $rta[] = $tmp->getId();
304 $this->setPerfiles($rta);
308 // +X2C Operation 370
310 * Modifica la base de datos segun accion
312 * @param string $accion Indica la accion a realizar
317 function guardarDatos($accion = grabar) // ~X2C
319 $accion = strtolower($accion);
322 $res = $this->_grabarDb();
325 $res = $this->_modificarDb();
328 $res = $this->_borrarDb();
335 // +X2C Operation 371
337 * Graba en base la relacion
342 function _grabarDb() // ~X2C
344 $datos = array ('login', 'id_perfil', 'id_sistema', 'responsable');
345 $re = $this->_db->autoPrepare('perfil_sist_usuario', $datos, DB_AUTOQUERY_INSERT);
346 foreach ($this->getPerfiles() as $perfil) {
347 $datos = array ($this->getLogin(),
349 $_SESSION['samurai']['id_sistema'],
350 $_SESSION['usuario']);
351 $res = $this->_db->execute($re, $datos);
352 if (PEAR::isError($res)) {
359 // +X2C Operation 372
361 * Borra de la base la relacion
366 function _borrarDb() // ~X2C
368 $sql = parse_ini_file(dirname(__FILE__) . '/Usuario/consultas.ini', true);
369 $tmp = $sql['borrar'];
370 $dbh = $this->_db->prepare($tmp);
371 $tmp = array ($this->getLogin(), $_SESSION['samurai']['id_sistema']);
372 return $this->_db->execute($dbh,$tmp);
376 // +X2C Operation 373
378 * Actualiza los datos de la relacion
383 function _modificarDb() // ~X2C
390 // +X2C Operation 374
392 * Verifica si el login actual es valido
397 function verificarLogin() // ~X2C
399 $usu = new MECON_Usuario();
400 $tmp = $usu->verificarLogin($this->getLogin());
402 if (PEAR::isError($tmp)) {
410 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 386
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 que se quiere asociar
442 * @param int $id_perfil Identificador del perfil que se quiere asociar
443 * @param int $id_sistema identificador del sistema en el que se esta haciendo la asociacion
444 * @param int $responsable Login del usuario que esta haciendo 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 $usu = new MECON_Usuario();
455 $tmp = $usu->verificarLogin($login);
457 if (PEAR::isError($tmp)) {
465 return new PEAR_Error('Usuario no reconocido.<br>Recuerde que éste debe haberse logueado previamente a Intranet');
468 //Asocio el perfil con el usuario en perfil_sist_usuario
469 $datos = array ('login' => $login,
470 'id_perfil' => $id_perfil,
471 'id_sistema' => $id_sistema,
472 'responsable' => $responsable);
474 $res = $db->autoExecute('samurai.perfil_sist_usuario', $datos, DB_AUTOQUERY_INSERT);
475 if (PEAR::isError($res)) {
483 } // -X2C Class :SAMURAI_Usuario