]> git.llucax.com Git - mecon/samurai.git/blobdiff - lib/SAMURAI/Sistema.php
Mayor bugfix.
[mecon/samurai.git] / lib / SAMURAI / Sistema.php
index 84299b560e4545bb13c4f9c56beafdeb54e0f4f7..e4143d8974d99340f91edbfb95f2eb55b186409c 100644 (file)
@@ -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']);