------------------------------------------------------------------------------- $Id: Usuario.php 242 2003-08-11 18:02:16Z manazar $ -----------------------------------------------------------------------------*/ require_once 'MECON/Agente.php'; require_once 'DB.php'; require_once 'PEAR.php'; /** * @access public */ class MECON_Usuario { /** * @var int $dni * @access public */ var $dni; /** * @var string $login * @access public */ var $login; /** * @var string $nivelygrado * @access public */ var $nivelygrado; /** * @var string $codep * @access public */ var $codep; /** * @var string $nombre * @access public */ var $nombre; /** * @var string $tipo * @access public */ var $tipo; /** * @protected */ var $_db; /** * @param string $dni * * @return void * @access public */ function ArmarconDNI($dni) { $sql = "SELECT login,nombre from usuario.Usuario where dni = $dni"; $result = $this->_db->query($sql); if (DB::isError($result)) { return $result; } elseif ($result->NumRows()>0) { $row = $result->fetchRow(DB_FETCHMODE_ORDERED); $login = $row[0]; $nombre = $row[1]; $this->login=$login; $this->nombre=$nombre; $this->dni=$dni; } else { return new PEAR_Error ('El dni '.$dni.' no existe, debe loguearse al menos una vez a la intranet.'); } } /** * @param string $login * * @return void * @access public */ function ArmarconLOGIN($login) { //$login = ereg_replace ("@", "\\\@", $login); $sql = "SELECT dni,nombre from usuario.Usuario where login = '$login'"; $result = $this->_db->query($sql); if (DB::isError($result)) { return $result; } elseif ($result->NumRows()>0) { $row = $result->fetchRow(DB_FETCHMODE_ORDERED); $this->dni = $row[0]; $this->nombre = $row[1]; $this->login = $login; } else { return new PEAR_Error ('El usuario '.$login.' no existe, debe loguearse al menos una vez a la intranet.'); } } /** * @param int $dni * * @return void * @access public */ function MECON_Usuario($db, $dni = null, $login = null) { $this->_db = $db; if(! is_null($dni)) { $this->ArmarconDNI($dni); $this->buscarUsuarioDNI($dni); } if(! is_null($login)) { $this->ArmarconLOGIN($login); $this->buscarUsuarioDNI($this->getDni()); } } /** * @param int $uario * * @return lo que devuelve el query (DB_Result o DB_Error). * @access public */ function Insertar_Usuario($dni, $login, $nombre) { $sql = "REPLACE INTO usuario.Usuario (login,dni,nombre) values ('$login',$dni,'$nombre')"; return $this->_db->query($sql); } /** * @return int * @access public */ function getDni() { return $this->dni; } /** * @return string * @access public */ function getLogin() { return $this->login; } /** * @return string * @access public */ function getCodep() { return $this->codep; } /** * @return string * @access public */ function getNombre() { return $this->nombre; } /** * @return string * @access public */ function getNivelygrado() { return $this->nivelygrado; } /** * @return string * @access public */ function getTipo() { return $this->tipo; } /** * @param int $dni * * @return void * @access public */ function buscarUsuarioDNI($dni) { $MECON_Agente= & new MECON_Agente($dni); $this->dni = $dni; $nombre = $MECON_Agente->getNombre(); $this->nombre = $nombre; $codep= $MECON_Agente->getDependencia(); $this->codep = $codep; $tipo= $MECON_Agente->getTipo(); $this->tipo = $tipo; $this->nivelygrado=""; if (isset($MECON_Agente->datos['nivel'])) { $this->nivelygrado= $MECON_Agente->datos['nivel'].$MECON_Agente->datos['grado']; } } /** * Verifica si el login pasado por parametro es valido * * @param string $login Login a verificar * * @return mixed * @access public */ function verificarLogin($login) { $sql = "SELECT count(*) as cuenta FROM usuario.Usuario WHERE login = " . $this->_db->quote($login) ; $result = $this->_db->query($sql); if (PEAR::isError($result)) { return $result; } $row = $result->fetchRow(DB_FETCHMODE_ASSOC); if ($row['cuenta'] != 0) { return true; } return false; } /** * Devuelve un array de logins con aquellos que cumplan con algun requisito * del filtro. * * @param DB &$db Base de Datos * @param string $login Login a filtrar. (Puede ser completo o una parte de el) * @param string $nombre Nombre a filtrar. * * @return mixed * @access public * @static */ function filtrarUsuarios(&$db, $login, $nombre) { if ($login && $nombre) { return new PEAR_Error('Solo debe ingresarse una opcion de filtro, login o nombre, a la vez.'); } $sql = "SELECT u.login as login, u.nombre as nombre FROM usuario.Usuario as u WHERE "; if ($login) { $sql.= ' u.login LIKE \'%'.$login.'%\''; } else { $sql.= ' u.nombre LIKE \'%'.$nombre.'%\''; } $sql.= 'ORDER BY u.login'; $db->setFetchMode(DB_FETCHMODE_ASSOC); $result = $db->query($sql); return $result; } } ?>