X-Git-Url: https://git.llucax.com/mecon/samurai.git/blobdiff_plain/0b3baffebc472d0116c7259abb3d64abf64674ae..6c96af7186fde066713c880405778e445eff079b:/lib/SAMURAI/Perfil.php diff --git a/lib/SAMURAI/Perfil.php b/lib/SAMURAI/Perfil.php index a74a16f..acbce4e 100644 --- a/lib/SAMURAI/Perfil.php +++ b/lib/SAMURAI/Perfil.php @@ -26,8 +26,6 @@ #require_once 'PEAR.php'; - - // +X2C Class 208 :SAMURAI_Perfil /** * Clase para el manejo de los perfies. @@ -313,10 +311,12 @@ class SAMURAI_Perfil { function _grabarDb() // ~X2C { //Obtengo el id del perfil de ser necesario + $nuevo = 0; if (!$this->getId()) { //No existe el perfil. Lo cargo por primera vez. $idPerfil = $this->_db->nextId('perfil'); $this->setId($idPerfil); + $nuevo = 1; } //GRABO EN PERM_PERFIL_SIST @@ -326,7 +326,7 @@ class SAMURAI_Perfil { } //GRABO EN PERFIL - if (!$this->getId()) { + if ($nuevo) { $datos = array ( 'id_perfil' => $idPerfil, 'desc_perfil' => $this->getDescripcion(), @@ -415,6 +415,12 @@ class SAMURAI_Perfil { if (PEAR::isError($res)) { return $res; } + + //VERIFICO QUE NO HAYA UN PERFIL CON LOS MISMOS PERMISOS YA ASIGNADO AL SISTEMA + $res = $this->_verifPermisos(); + if (PEAR::isError($res)) { + return $res; + } //Modifico la tabla perm_perfil_sist $res = $this->_borrarPermisos(); if (PEAR::isError($res)) { @@ -450,6 +456,7 @@ class SAMURAI_Perfil { //Reemplazo el filtro por ##?## $consulta = ereg_replace ('##FILTRO##', $filtro, $tmp2); } + $consulta.= $sql['obtener_id_perfiles4']; $dbh = $db->prepare($consulta); if ($id_sistema) { $tmp[] = $id_sistema; @@ -460,7 +467,7 @@ class SAMURAI_Perfil { } while ($re = $res->fetchrow(DB_FETCHMODE_ASSOC)) { array_push($rta,$re['id_perfil']); - } + } $res->free(); return $rta; } @@ -575,22 +582,11 @@ class SAMURAI_Perfil { */ function _guardarPermisos() // ~X2C { - //VERIFICO QUE NO HAYA UN PERFIL CON LOS MISMOS PERMISOS YA ASIGNADO AL SISTEMA $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']); - $res = $this->_db->execute($dbh,$tmp); - $perm = array(); - while ($re = $res->fetchRow(DB_FETCHMODE_ASSOC)) { - $perm[$re['id_perfil']][] = $re['id_permiso'].'##'.$re['observaciones']; - } - foreach ($perm as $p) { - $rta1 = array_diff($p, $this->getPermisos()); - $rta2 = array_diff($this->getPermisos(), $p); - if (!$rta1 && !$rta2) { - return new PEAR_Error("Ya existe un perfil con esos mismos permisos"); - } + //VERIFICO QUE NO HAYA UN PERFIL CON LOS MISMOS PERMISOS YA ASIGNADO AL SISTEMA + $res = $this->_verifPermisos(); + if (PEAR::isError($res)) { + return $res; } //GRABO EN PERM_PERFIL_SIST @@ -624,6 +620,39 @@ class SAMURAI_Perfil { } // -X2C + // +X2C Operation 376 + /** + * Verifica si se puede insertar + * + * @return mixed + * @access protected + */ + function _verifPermisos() // ~X2C + { + //VERIFICO QUE NO HAYA UN PERFIL CON LOS MISMOS PERMISOS YA ASIGNADO AL SISTEMA + $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']); + $res = $this->_db->execute($dbh,$tmp); + $perm = array(); + while ($re = $res->fetchRow(DB_FETCHMODE_ASSOC)) { + $perm[$re['id_perfil']][] = $re['id_permiso'].'##'.$re['observaciones']; + } + foreach ($perm as $key => $p) { + $rta1 = array_diff($p, $this->getPermisos()); + $rta2 = array_diff($this->getPermisos(), $p); + if (!$rta1 && !$rta2) { + $perf = new SAMURAI_Perfil($this->_db, $key); + if ($perf->getDescripcion() != $this->getDescripcion()) { + return new PEAR_Error("El perfil \"".$perf->getDescripcion()."\" contiene los mismos permisos."); + } + } + } + return true; + } + // -X2C + } // -X2C Class :SAMURAI_Perfil -?> +?> \ No newline at end of file