#require_once 'PEAR.php';
-
-
// +X2C Class 208 :SAMURAI_Perfil
/**
* Clase para el manejo de los perfies.
*/
function _grabarDb() // ~X2C
{
- //GRABO EN PERFIL
+ //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);
-
- //GRABO EN PERM_PERFIL_SIST
- $res = $this->_guardarPermisos();
- if (PEAR::isError($res)) {
- return $res;
- }
+ $nuevo = 1;
+ }
+
+ //GRABO EN PERM_PERFIL_SIST
+ $res = $this->_guardarPermisos();
+ if (PEAR::isError($res)) {
+ return $res;
+ }
+ //GRABO EN PERFIL
+ if ($nuevo) {
$datos = array (
'id_perfil' => $idPerfil,
'desc_perfil' => $this->getDescripcion(),
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)) {
//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;
}
while ($re = $res->fetchrow(DB_FETCHMODE_ASSOC)) {
array_push($rta,$re['id_perfil']);
- }
+ }
$res->free();
return $rta;
}
*/
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
}
// -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