X-Git-Url: https://git.llucax.com/mecon/samurai.git/blobdiff_plain/3c702b40a1806798e475c48abb456e5a9c2dac72..daf576bd3b87a333563f7d61dbcd6d73a5316713:/lib/SAMURAI/Sistema.php diff --git a/lib/SAMURAI/Sistema.php b/lib/SAMURAI/Sistema.php index 84299b5..e4143d8 100644 --- a/lib/SAMURAI/Sistema.php +++ b/lib/SAMURAI/Sistema.php @@ -613,6 +613,7 @@ class SAMURAI_Sistema { if (PEAR::isError($res)) { return $res; } + $this->_id = $idSistema; } // -X2C @@ -700,7 +701,7 @@ class SAMURAI_Sistema { $re = $this->_db->autoPrepare('perm_sist', $datos, DB_AUTOQUERY_INSERT); if (isset($this->_permisos)) { foreach ($this->_permisos as $permiso) { - $datos = array ($permiso['0'], $idSistema, $this->getResponsable()); + $datos = array ($permiso, $idSistema, $this->getResponsable()); $res = $this->_db->execute($re, $datos); if (PEAR::isError($res)) { return $res; @@ -756,7 +757,6 @@ class SAMURAI_Sistema { */ function guardarAsociacion($idPermiso, $observacion = '') // ~X2C { - $error = true; if (!$this->_existeAsociacion($idPermiso, $observacion)) { //Guardo la asociacion //Grabo el sistema @@ -769,9 +769,11 @@ class SAMURAI_Sistema { $res = $this->_db->autoExecute('perm_sist', $datos, DB_AUTOQUERY_INSERT); //Recargo los datos del sistema $this->_obtenerDatosDb(); - $error = false; + return null; + } + else { + return new PEAR_Error('La Asociacion ya existe.'); } - return $error; } // -X2C @@ -787,12 +789,74 @@ class SAMURAI_Sistema { */ function eliminarAsociacion($idPermiso, $observacion = '') // ~X2C { - $error = false; - //Elimino la asociacion - $this->_borrarPermisosDb($this->getId(), $observacion, $idPermiso); + //TODO Arreglar el asco este + $sql = parse_ini_file(dirname(__FILE__) . '/Sistema/consultas.ini', true); + $res = ''; + //Obtengo los id de los perfiles del permiso en el sistema + $tmp = $sql['ea_obt_idperfil']; + $dbh = $this->_db->prepare($tmp); + $res = $this->_db->execute($dbh, array ($idPermiso, $observacion, $this->getId())); + if (PEAR::isError($res)) { + return $res; + } + $i = 0; + $tmp = ''; + while ($re = $res->fetchRow(DB_FETCHMODE_ORDERED)) { + $tmp[] = $re['0']; + $i++; + } + $PERFILES = $tmp; + //Borro el permiso de los perfiles del sistema + $tmp = $sql['ea_del_perm_perfil_sist']; + $dbh = $this->_db->prepare($tmp); + $res = $this->_db->execute($dbh, array ($idPermiso, $observacion, $this->getId())); + if (PEAR::isError($res)) { + return $res; + } + //Verifico si era el unico permiso de cada uno de los perfiles en los que estaba asignado + if (@$PERFILES) { + foreach ($PERFILES as $perfil) { + //Cuento + $tmp = $sql['ea_obt_cuenta_perfil']; + $dbh = $this->_db->prepare($tmp); + $res = $this->_db->execute($dbh, array ($perfil, $this->getId())); + if (($re = $res->fetchRow(DB_FETCHMODE_ASSOC)) && $re['cuenta'] == 0) { + //Borro perfil_sist + $tmp = $sql['ea_del_perfil_sist']; + $dbh = $this->_db->prepare($tmp); + $res = $this->_db->execute($dbh, array ($perfil, $this->getId())); + if (PEAR::isError($res)) { + return $res; + } + //Borro perfil_sist_usuario + $tmp = $sql['ea_del_perfil_sist_usuario']; + $dbh = $this->_db->prepare($tmp); + $res = $this->_db->execute($dbh, array ($perfil, $this->getId())); + if (PEAR::isError($res)) { + return $res; + } + //Verifico si hay otro sistema usando este perfil + $tmp = $sql['ea_obt_cuenta_perfil_sist']; + $dbh = $this->_db->prepare($tmp); + $res = $this->_db->execute($dbh, array ($perfil)); + if (($re = $res->fetchRow(DB_FETCHMODE_ASSOC)) && $re['cuenta'] == 0){ + $tmp = $sql['ea_del_perfil']; + $dbh = $this->_db->prepare($tmp); + $res = $this->_db->execute($dbh, array ($perfil)); + if (PEAR::isError($res)) { + return $res; + } + } + } + } + } + //Borro la asociacion perm_sist + $res = $this->_borrarPermisosDb($this->getId(), $observacion, $idPermiso); + if (PEAR::isError($res)) { + return $res; + } //Recargo los datos del sistema $this->_obtenerDatosDb(); - return $error; } // -X2C @@ -801,16 +865,14 @@ class SAMURAI_Sistema { * Actualiza los datos de la asociacion en la base de datos. * * @param int $idPermiso Identificador del permiso - * @param int $idPermiso_ant Identificador del permiso anterior * @param string $observacion Observacion a insertar * @param string $obs_ant Observacion anterior * * @return bool * @access public */ - function modificarAsociacion($idPermiso, $idPermiso_ant, $observacion = '', $obs_ant = '') // ~X2C + function modificarAsociacion($idPermiso, $observacion = '', $obs_ant = '') // ~X2C { - $error = true; //Busco la nueva asociacion if (!$this->_existeAsociacion($idPermiso, $observacion)) { //Actualizo la asociacion @@ -823,13 +885,15 @@ class SAMURAI_Sistema { $this->_db->autoExecute('perm_sist', $datos, DB_AUTOQUERY_UPDATE, - 'id_sistema = '.$this->getId().' AND id_permiso = '.$idPermiso_ant.' AND observaciones =\''.$obs_ant.'\''); + 'id_sistema = '.$this->getId().' AND id_permiso = '.$idPermiso.' AND observaciones =\''.$obs_ant.'\''); //Recargo los datos del sistema $this->_obtenerDatosDb(); - $error = false; + return null; + } + else { + return new PEAR_Error('La Asociacion ya existe.'); } - return $error; } // -X2C @@ -897,7 +961,7 @@ class SAMURAI_Sistema { //OBTENGO LOS ID DE LA BASE $rta = array(); $sql = parse_ini_file(dirname(__FILE__) . '/Sistema/consultas.ini', true); - $dbh = $db->prepare($sql['obtener_datos_sistema'].$sql['obtener_datos_sistema3']); + $dbh = $db->prepare($sql['obtener_datos_sistema'].$sql['obtener_datos_sistema3'].$sql['obtener_datos_sistema4']); $res = $db->execute($dbh); while ($re = $res->fetchrow(DB_FETCHMODE_ASSOC)) { array_push($rta,$re['id_sistema']);