X-Git-Url: https://git.llucax.com/mecon/samurai.git/blobdiff_plain/ff300eaf76c4d30ccf8b12cef9813be55235a26c..701e5406c83c349adbc557c92cdd6d46c51a1308:/lib/SAMURAI/Perfil.php diff --git a/lib/SAMURAI/Perfil.php b/lib/SAMURAI/Perfil.php index b52fea3..6d5a9ce 100644 --- a/lib/SAMURAI/Perfil.php +++ b/lib/SAMURAI/Perfil.php @@ -29,6 +29,7 @@ // +X2C Class 208 :SAMURAI_Perfil /** * Clase para el manejo de los perfies. +@see \ref page_samurai_html_perfil * * @access public */ @@ -81,6 +82,14 @@ class SAMURAI_Perfil { */ var $_permisos; + /** + * Identificador del sistema en el cual se esta trabajando + * + * @var int $idSistema + * @access protected + */ + var $_idSistema; + /** * Gets Id. * @@ -204,13 +213,15 @@ class SAMURAI_Perfil { * * @param SAMURAI_DB &$db Objeto conexion * @param int $id Identificador del perfil. + * @param int $idSistema Identificador del sistema en el que se esta trabajando * * @return void * @access public */ - function SAMURAI_Perfil(&$db, $id = null) // ~X2C + function SAMURAI_Perfil(&$db, $id = null, $idSistema = null) // ~X2C { $this->_db = $db; + $this->_idSistema = $idSistema; if (!is_null($id)) { $this->setId($id); $this->_obtenerDatosDb(); @@ -256,7 +267,7 @@ class SAMURAI_Perfil { //OBTENGO EL TIPO DE PERFIL $tmp = $sql['verificar_asociacion']; $dbh = $this->_db->prepare($tmp); - $tmp = array ($this->getId(), $_SESSION['samurai']['id_sistema']); + $tmp = array ($this->getId(), $this->_idSistema); $res = $this->_db->execute($dbh,$tmp); $re = $res->fetchrow(DB_FETCHMODE_ASSOC); $this->setTipo($re['tipo_perfil']); @@ -264,7 +275,7 @@ class SAMURAI_Perfil { //OBTENGO LOS PERMISOS QUE TIENE ASIGNADO EL PERFIL DESDE PERM_PERFIL_SIST $tmp = $sql['obtener_permisos']; $dbh = $this->_db->prepare($tmp); - $tmp = array ($this->getId(), $_SESSION['samurai']['id_sistema']); + $tmp = array ($this->getId(), $this->_idSistema); $res = $this->_db->execute($dbh,$tmp); $rta = array (); while ($re = $res->fetchrow(DB_FETCHMODE_ASSOC)) { @@ -339,7 +350,7 @@ class SAMURAI_Perfil { } //GRABO EN PERFIL_SIST $datos = array ('id_perfil' => $this->getId(), - 'id_sistema' => $_SESSION['samurai']['id_sistema'], + 'id_sistema' => $this->_idSistema, 'tipo_perfil' => $this->getTipo(), 'responsable' => $this->getResponsable(), ); @@ -360,7 +371,7 @@ class SAMURAI_Perfil { //Verifico en perfil_sist_usuario $tmp = $sql['verif_perfil_sist_usuario']; $dbh = $this->_db->prepare($tmp); - $datos = array ($this->getId(), $_SESSION['samurai']['id_sistema']); + $datos = array ($this->getId(), $this->_idSistema); $res = $this->_db->execute($dbh, $datos); if (($re = $res->fetchRow(DB_FETCHMODE_ASSOC)) && !$re['cuenta'] == 0) { return new PEAR_Error("Hay usuarios asociados al perfil seleccionado"); @@ -373,7 +384,7 @@ class SAMURAI_Perfil { //Borro perfil_sist $tmp = $sql['borrar_perfil_sist']; $dbh = $this->_db->prepare($tmp); - $datos = array ($this->getId(), $_SESSION['samurai']['id_sistema']); + $datos = array ($this->getId(), $this->_idSistema); $res = $this->_db->execute($dbh, $datos); if (PEAR::isError($res)) { return $res; @@ -411,7 +422,9 @@ class SAMURAI_Perfil { 'tipo_perfil' => $this->getTipo(), 'responsable' => $this->getResponsable(), ); - $res = $this->_db->autoExecute('perfil_sist', $datos, DB_AUTOQUERY_UPDATE, 'id_perfil ='.$this->getId().' AND id_sistema='.$_SESSION['samurai']['id_sistema']); + $res = $this->_db->autoExecute('perfil_sist', $datos, + DB_AUTOQUERY_UPDATE, 'id_perfil ='.$this->getId().' AND + id_sistema='.$this->_idSistema); if (PEAR::isError($res)) { return $res; } @@ -475,6 +488,8 @@ class SAMURAI_Perfil { // +X2C Operation 339 /** + * Devuelve un array de perfiles + * * @param SAMURAI_DB &$db Base de datos * @param string $filtro Filtro por nombre del perfil * @param int $id_sistema Identificador del sistema @@ -487,7 +502,7 @@ class SAMURAI_Perfil { { $rta = array (); foreach (SAMURAI_Perfil::_getIdPerfiles($db, $filtro, $id_sistema) as $id) { - $tmp = new SAMURAI_Perfil($db,$id); + $tmp = new SAMURAI_Perfil($db,$id, $id_sistema); array_push($rta, $tmp); } return $rta; @@ -500,16 +515,17 @@ class SAMURAI_Perfil { * * @param SAMURAI_DB $db Base de Datos * @param string $filtro Filtro por descripcion del perfil + * @param int $id_sistema Identificador del sistema con el que se esta trabajando * * @return array() * @access public * @static */ - function getArrayPerfiles($db, $filtro = null) // ~X2C + function getArrayPerfiles($db, $filtro = null, $id_sistema = null) // ~X2C { //FORECHEO LO QUE ME DEVUELVA GET PERMISOS $rta = array (); - foreach (SAMURAI_Perfil::getPerfiles($db, $filtro) as $perfil) { + foreach (SAMURAI_Perfil::getPerfiles($db, $filtro, $id_sistema) as $perfil) { $rta[$perfil->getId()] = $perfil->getDescripcion(); } return $rta; @@ -594,7 +610,7 @@ class SAMURAI_Perfil { $re = $this->_db->autoPrepare('perm_perfil_sist', $datos, DB_AUTOQUERY_INSERT); foreach ($this->getPermisos() as $permiso) { list($id, $obs) = split ('##',$permiso); - $datos = array ($id, $this->getId(), $_SESSION['samurai']['id_sistema'], $obs, $this->getResponsable()); + $datos = array ($id, $this->getId(), $this->_idSistema, $obs, $this->getResponsable()); $res = $this->_db->execute($re, $datos); if (PEAR::isError($res)) { return $res; @@ -615,7 +631,7 @@ class SAMURAI_Perfil { $sql = parse_ini_file(dirname(__FILE__) . '/Perfil/consultas.ini', true); $tmp = $sql['borrar_permisos']; $dbh = $this->_db->prepare($tmp); - $tmp = array ($this->getId(), $_SESSION['samurai']['id_sistema']); + $tmp = array ($this->getId(), $this->_idSistema); return $this->_db->execute($dbh,$tmp); } // -X2C @@ -624,7 +640,7 @@ class SAMURAI_Perfil { /** * Verifica si se puede insertar * - * @return bool + * @return mixed * @access protected */ function _verifPermisos() // ~X2C @@ -633,7 +649,7 @@ class SAMURAI_Perfil { $sql = parse_ini_file(dirname(__FILE__) . '/Perfil/consultas.ini', true); $tmp = $sql['verif_perm_perfil_sist']; $dbh = $this->_db->prepare($tmp); - $tmp = array ($_SESSION['samurai']['id_sistema']); + $tmp = array ($this->_idSistema); $res = $this->_db->execute($dbh,$tmp); $perm = array(); while ($re = $res->fetchRow(DB_FETCHMODE_ASSOC)) { @@ -643,8 +659,10 @@ class SAMURAI_Perfil { $rta1 = array_diff($p, $this->getPermisos()); $rta2 = array_diff($this->getPermisos(), $p); if (!$rta1 && !$rta2) { - $perf = new SAMURAI_Perfil($this->_db, $key); - return new PEAR_Error("El perfil \"".$perf->getDescripcion()."\" contiene los mismos permisos."); + $perf = new SAMURAI_Perfil($this->_db, $key, $this->_idSistema); + if ($perf->getDescripcion() != $this->getDescripcion()) { + return new PEAR_Error("El perfil \"".$perf->getDescripcion()."\" contiene los mismos permisos."); + } } } return true; @@ -653,4 +671,4 @@ class SAMURAI_Perfil { } // -X2C Class :SAMURAI_Perfil -?> +?> \ No newline at end of file