]> git.llucax.com Git - mecon/samurai.git/blobdiff - sistema/local_lib/Sistema.php
Perfiles casi empezado. Cambio de la estructura de directorios (OTRA VEZ)
[mecon/samurai.git] / sistema / local_lib / Sistema.php
index 59e4db514eb3ca90cc1e390b268e143108014f72..58202e64babc11d37249a3c65d56593567db1b2c 100644 (file)
@@ -24,7 +24,7 @@
 // $Rev$
 //
 
-#require_once 'PEAR.php';
+require_once 'PEAR.php';
 require_once 'Samurai_DB.php';
 require_once 'Date.php';
 
@@ -115,6 +115,37 @@ class Sistema {
      */
     var $_permisos;
 
+    /**
+     * Array con los permisos asociados al sistema
+     *
+     * @var    array $asociaciones
+     * @access private
+     */
+    var $_asociaciones;
+
+    /**
+     * Gets Asociaciones.
+     *
+     * @return array
+     * @access public
+     */
+    function getAsociaciones()
+    {
+        return $this->_asociaciones;
+    }
+    /**
+     * Sets Asociaciones.
+     *
+     * @param  array $asociaciones Asociaciones.
+     *
+     * @return void
+     * @access public
+     */
+    function setAsociaciones($asociaciones)
+    {
+        $this->_asociaciones = $asociaciones;
+    }
+
     // ~X2C
 
     // +X2C Operation 243
@@ -127,7 +158,7 @@ class Sistema {
      * @return void
      * @access public
      */
-    function Sistema(&$db, $id = null)// ~X2C
+    function Sistema(&$db, $id = null) // ~X2C
     {
         $this->_db =& $db;
         $this->_id = $id;
@@ -154,7 +185,7 @@ class Sistema {
      * @return int
      * @access public
      */
-    function getId()// ~X2C
+    function getId() // ~X2C
     {
         return $this->_id;
     }
@@ -167,7 +198,7 @@ class Sistema {
      * @return string
      * @access public
      */
-    function getNombre()// ~X2C
+    function getNombre() // ~X2C
     {
         return $this->_nombre;
     }
@@ -180,7 +211,7 @@ class Sistema {
      * @return string
      * @access public
      */
-    function getDescripcion()// ~X2C
+    function getDescripcion() // ~X2C
     {
         return $this->_descripcion;
     }
@@ -193,7 +224,7 @@ class Sistema {
      * @return &date
      * @access public
      */
-    function &getFechaInicio()// ~X2C
+    function &getFechaInicio() // ~X2C
     {        
         if ($this->_fecha_inicio) {
             return new Date ($this->_fecha_inicio.' 00:00:00');
@@ -211,7 +242,7 @@ class Sistema {
      * @return &date
      * @access public
      */
-    function &getFechaFin()// ~X2C
+    function &getFechaFin() // ~X2C
     {
         if ($this->_fecha_fin) {
             return new Date ($this->_fecha_fin.' 00:00:00');
@@ -229,7 +260,7 @@ class Sistema {
      * @return &date
      * @access public
      */
-    function &getFechaImplementacion()// ~X2C
+    function &getFechaImplementacion() // ~X2C
     {
         if ($this->_fecha_implementacion) {
             return new Date ($this->_fecha_implementacion.' 00:00:00');
@@ -247,7 +278,7 @@ class Sistema {
      * @return string
      * @access public
      */
-    function getContacto()// ~X2C
+    function getContacto() // ~X2C
     {
         return $this->_contacto;
     }
@@ -262,7 +293,7 @@ class Sistema {
      * @return void
      * @access public
      */
-    function setNombre($nombre = null)// ~X2C
+    function setNombre($nombre = null) // ~X2C
     {
         $this->_nombre = $nombre;
     }
@@ -277,7 +308,7 @@ class Sistema {
      * @return void
      * @access public
      */
-    function setDescripcion($descripcion = null)// ~X2C
+    function setDescripcion($descripcion = null) // ~X2C
     {
         $this->_descripcion = $descripcion;
     }
@@ -292,7 +323,7 @@ class Sistema {
      * @return void
      * @access public
      */
-    function setFechaInicio($fecha = null)// ~X2C
+    function setFechaInicio($fecha = null) // ~X2C
     {
         if ($fecha && $fecha != '0000-00-00') {
             $this->_fecha_inicio = $fecha;
@@ -312,7 +343,7 @@ class Sistema {
      * @return void
      * @access public
      */
-    function setFechaFin($fecha = null)// ~X2C
+    function setFechaFin($fecha = null) // ~X2C
     {
         if ($fecha && $fecha != '0000-00-00') {
             $this->_fecha_fin = $fecha;
@@ -332,7 +363,7 @@ class Sistema {
      * @return void
      * @access public
      */
-    function setFechaImplementacion($fecha = null)// ~X2C
+    function setFechaImplementacion($fecha = null) // ~X2C
     {
         if ($fecha && $fecha != '0000-00-00') {
             $this->_fecha_implementacion = $fecha;
@@ -353,7 +384,7 @@ class Sistema {
      * @return void
      * @access public
      */
-    function setContacto($contacto = null)// ~X2C
+    function setContacto($contacto = null) // ~X2C
     {
         $this->_contacto = $contacto;
     }
@@ -366,7 +397,7 @@ class Sistema {
      * @return void
      * @access private
      */
-    function _obtenerDatosDb()// ~X2C
+    function _obtenerDatosDb() // ~X2C
     {
         $sql = include 'Sistema/consultas.php'; //Incluyo las consultas de este objeto nada mas.
         $tmp = $sql['obtener_datos_sistema'].$sql['obtener_datos_sistema2'];
@@ -419,14 +450,30 @@ class Sistema {
             }
         }
         $tmp = $sql['obtener_permisos'];
+        $tmp.= $sql['borrar_permisos2'];
         $dbh = $this->_db->prepare($tmp);
-        $tmp = array ($this->getId());
-        $res = $this->_db->execute($dbh,$tmp);        
-        $tmp = array();
+        $tmp = array ($this->getId(),'');
+        $res = $this->_db->execute($dbh,$tmp);
+        $tmp  = array();
+        $i = 0;
         while ($re = $res->fetchRow(DB_FETCHMODE_ORDERED)) {
             $tmp[] = $re['0'];
+            $i++;
         }
         $this->_permisos = $tmp;
+        $tmp = $sql['obtener_permisos'];
+        $tmp.= $sql['obtener_permisos2'];
+        $dbh = $this->_db->prepare($tmp);
+        $tmp = array ($this->getId());
+        $res = $this->_db->execute($dbh,$tmp);        
+        $tmp  = array();
+        $i = 0;
+        while ($re = $res->fetchRow(DB_FETCHMODE_ORDERED)) {
+            $tmp[$i]['id']  = $re['0'];
+            $tmp[$i]['obs'] = $re['1'];
+            $i++;
+        }
+        $this->_asociaciones = $tmp;
     }
     // -X2C
 
@@ -439,20 +486,21 @@ class Sistema {
      * @return void
      * @access public
      */
-    function guardarDatos($accion = grabar)// ~X2C
+    function guardarDatos($accion = grabar) // ~X2C
     {
         $accion = strtolower($accion);
         switch ($accion)  {
             case 'grabar':
-                $this->_grabarDb();        
+                $res = $this->_grabarDb();        
                 break; 
             case 'modificar':
-                $this->_modificarDb();
+                $res = $this->_modificarDb();
                 break;
             case 'eliminar':
-                $this->_borrarDb();
+                $res = $this->_borrarDb();
                 break;
         }
+        return $res;
     }
     // -X2C
 
@@ -463,7 +511,7 @@ class Sistema {
      * @return string
      * @access public
      */
-    function getResponsable()// ~X2C
+    function getResponsable() // ~X2C
     {
         return $this->_responsable;
     }
@@ -478,7 +526,7 @@ class Sistema {
      * @return void
      * @access public
      */
-    function setResponsable($responsable = null)// ~X2C
+    function setResponsable($responsable = null) // ~X2C
     {
         $this->_responsable = $responsable;
     }
@@ -491,7 +539,7 @@ class Sistema {
      * @return array
      * @access public
      */
-    function getIdPermisos()// ~X2C
+    function getIdPermisos() // ~X2C
     {
         return $this->_permisos;
     }
@@ -506,7 +554,7 @@ class Sistema {
      * @return void
      * @access public
      */
-    function setPermisos($permisos = null)// ~X2C
+    function setPermisos($permisos = null) // ~X2C
     {
         $this->_permisos = $permisos;
     }
@@ -517,7 +565,7 @@ class Sistema {
      * @return int
      * @access public
      */
-    function getMaxIdSistema()// ~X2C
+    function getMaxIdSistema() // ~X2C
     {
         $sql = include 'Sistema/consultas.php';
         $dbh = $this->_db->prepare($sql['obtener_max_id_sistemas']);
@@ -535,7 +583,7 @@ class Sistema {
      * @return void
      * @access private
      */
-    function _grabarDb()// ~X2C
+    function _grabarDb() // ~X2C
     {
         $idSistema = $this->_db->nextId('sistema');
         $fecha_inicio         = $this->getFechaInicio();
@@ -555,13 +603,15 @@ class Sistema {
                     'estado'                => 1
                 );                
         $res = $this->_db->autoExecute('sistema', $datos, DB_AUTOQUERY_INSERT);
-
-        if (DB::isError($res)) {
-            trigger_error('Error al tratar de insertar el sistema -> '.$res, E_USER_ERROR);
-        }
         
+        if (PEAR::isError($res)) {
+            return $res;
+        }
         //Grabo los permisos
-        $this->_grabarPermisosDb($idSistema);
+        $res = $this->_grabarPermisosDb($idSistema);
+        if (PEAR::isError($res)) {
+            return $res;
+        }
     }
     // -X2C
 
@@ -572,7 +622,7 @@ class Sistema {
      * @return void
      * @access private
      */
-    function _borrarDb()// ~X2C
+    function _borrarDb() // ~X2C
     {
         $idSistema   = $this->getId();
         $responsable = $this->getResponsable();
@@ -580,15 +630,16 @@ class Sistema {
         $datos = array( 'responsable' => $responsable,
                         'estado'      => 0
                 );                
-
         $res = $this->_db->autoExecute('sistema', $datos, DB_AUTOQUERY_UPDATE, 'id_sistema = '.$idSistema);
-        if (DB::isError($res)) {
-            trigger_error('Error en sistema -> '.$res, E_USER_ERROR);
+        if (PEAR::isError($res)) {
+            return $res;
         }
-        
         //Borro los permisos que tiene asignado el sistema
         //Borro absolutamente todos los permisos que tiene asociado -> No hay vuelta a atras
-        $this->_borrarPermisosDb($idSistema, false);
+        $res = $this->_borrarPermisosDb($idSistema);
+        if (PEAR::isError($res)) {
+            return $res;
+        }
     }
     // -X2C
 
@@ -599,7 +650,7 @@ class Sistema {
      * @return void
      * @access private
      */
-    function _modificarDb()// ~X2C
+    function _modificarDb() // ~X2C
     {
         //Grabo las modificaciones al sistema
         $idSistema            = $this->getId();
@@ -618,14 +669,19 @@ class Sistema {
                     'responsable'           => $this->getResponsable(),
                 );                
         $res = $this->_db->autoExecute('sistema', $datos, DB_AUTOQUERY_UPDATE, 'id_sistema = '.$idSistema);
-
-        if (DB::isError($res)) {
-            trigger_error('Error al tratar de insertar el sistema -> '.var_dump($res), E_USER_ERROR);
+        if (PEAR::isError($res)) {
+            return $res;
         }
         //Borro los permisos que no tengan observaciones
-        $this->_borrarPermisosDb($idSistema, true);
+        $res = $this->_borrarPermisosDb($idSistema, '');
+        if (PEAR::isError($res)) {
+            return $res;
+        }
         //Grabo los permisos que selecciono
-        $this->_grabarPermisosDb($idSistema);
+        $res = $this->_grabarPermisosDb($idSistema);
+        if (PEAR::isError($res)) {
+            return $res;
+        }
     }
     // -X2C
 
@@ -639,7 +695,7 @@ class Sistema {
      * @return void
      * @access private
      */
-    function _grabarPermisosDb($idSistema)// ~X2C
+    function _grabarPermisosDb($idSistema) // ~X2C
     {
         $datos = array ('id_permiso','id_sistema','responsable');
         $re = $this->_db->autoPrepare('perm_sist', $datos, DB_AUTOQUERY_INSERT);
@@ -647,8 +703,8 @@ class Sistema {
             foreach ($this->_permisos as $permiso) {
                 $datos = array ($permiso['0'], $idSistema, $this->getResponsable());
                 $res = $this->_db->execute($re, $datos);
-                if (DB::isError($res)) {
-                    trigger_error('Error en perm_sist -> '.$res, E_USER_ERROR);
+                if (PEAR::isError($res)) {
+                    return $res;
                 }
             }
         }
@@ -661,25 +717,151 @@ class Sistema {
      * Borra los permisos que tenga asociado el sistema segun el criterio de observaciones
      *
      * @param  int $idSistema Identificador del sistema
-     * @param  bool $observaciones Si es false borra todas las asociaciones que tenga el sistema. Si es true borra solo aquellas que tengan observaciones = ''
+     * @param  bool $observaciones Null u observacion de la asociacion a borrar
+     * @param  int $idPermiso Identificador del permiso a borrar
      *
      * @return void
      * @access private
      */
-    function _borrarPermisosDb($idSistema, $observaciones)// ~X2C
+    function _borrarPermisosDb($idSistema, $observaciones = null, $idPermiso = null) // ~X2C
     {
         $sql = include 'Sistema/consultas.php';
         $datos[] = $idSistema;
         $tmp = $sql['borrar_permisos']; 
-        if ($observaciones) {
+        if (isset($observaciones)) {
             $tmp.= $sql['borrar_permisos2'];
-            $datos[] = '';
+            $datos[] = $observaciones;
+        }
+        if (isset($idPermiso)) {
+            $tmp.= $sql['borrar_permisos3'];
+            $datos[] = $idPermiso;
         }
         $dbh = $this->_db->prepare($tmp);
         $res = $this->_db->execute($dbh, $datos);
+        if (PEAR::isError($res)) {
+            return $res;
+        }
+    }
+    // -X2C
+
+
+    // +X2C Operation 312
+    /**
+     * Guarda en base las nuevas asociaciones que se van cargando y actualiza los datos del sistema.
+     *
+     * @param  int $idPermiso Identificador del Permiso
+     * @param  string $observacion Observacion a agregar
+     *
+     * @return bool
+     * @access public
+     */
+    function guardarAsociacion($idPermiso, $observacion = '') // ~X2C
+    {
+        $error = true;
+        if (!$this->_existeAsociacion($idPermiso, $observacion)) {    
+            //Guardo la asociacion
+            //Grabo el sistema        
+            $datos = array(  
+                        'id_permiso'    => $idPermiso,
+                        'id_sistema'    => $this->getId(),
+                        'observaciones' => $observacion,
+                        'responsable'   => $this->getResponsable(),
+                    );                
+            $res = $this->_db->autoExecute('perm_sist', $datos, DB_AUTOQUERY_INSERT);
+            //Recargo los datos del sistema
+            $this->_obtenerDatosDb();
+            $error = false;
+        }
+        return $error;
+    }
+    // -X2C
+
+    // +X2C Operation 313
+    /**
+     * Elimina una asociacion de la base, y actualiza los datos del sistema.
+     *
+     * @param  int $idPermiso Identificador del permiso a borrar
+     * @param  string $observacion Observacion de la asociacion a borrar (Puede ser vacia)
+     *
+     * @return bool
+     * @access public
+     */
+    function eliminarAsociacion($idPermiso, $observacion = '') // ~X2C
+    {
+        $error = false;
+        //Elimino la asociacion
+        $this->_borrarPermisosDb($this->getId(), $observacion, $idPermiso);
+        //Recargo los datos del sistema
+        $this->_obtenerDatosDb();
+        return $error;
+    }
+    // -X2C
+
+    // +X2C Operation 314
+    /**
+     * 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
+    {
+        $error = true;
+        //Busco la nueva asociacion
+        if (!$this->_existeAsociacion($idPermiso, $observacion)) {    
+            //Actualizo la asociacion
+             $datos = array(  
+                        'id_permiso'    => $idPermiso,
+                        'id_sistema'    => $this->getId(),
+                        'observaciones' => $observacion,
+                        'responsable'   => $this->getResponsable(),
+                    );                
+            $this->_db->autoExecute('perm_sist', 
+                                    $datos, 
+                                    DB_AUTOQUERY_UPDATE, 
+                                    'id_sistema = '.$this->getId().' AND id_permiso = '.$idPermiso_ant.' AND observaciones =\''.$obs_ant.'\'');
+
+            //Recargo los datos del sistema
+            $this->_obtenerDatosDb();
+            $error = false;
+        }
+        return $error;
+    }
+    // -X2C
+
+    // +X2C Operation 315
+    /**
+     * Chequea si existe la asociacion
+     *
+     * @param  int $idPermiso Id del permiso a chequear
+     * @param  string $observacion Observacion a chequear
+     *
+     * @return bool
+     * @access private
+     */
+    function _existeAsociacion($idPermiso, $observacion) // ~X2C
+    {
+        $sql = include 'Sistema/consultas.php'; //Incluyo las consultas de este objeto nada mas.
+        $tmp = $sql['obtener_permisos'].$sql['obtener_permisos3'].$sql['obtener_permisos4'];
+        $dbh = $this->_db->prepare($tmp);
+        $tmp = array ($this->getId(),$idPermiso,$observacion);
+        $res = $this->_db->execute($dbh,$tmp);
+        $re  = $res->fetchRow();      
+
+        if (is_null($re)) {
+            return false;
+        }
+        else {
+            return true;
+        }
     }
     // -X2C
 
 } // -X2C Class :Sistema
 
-?>
+?>
\ No newline at end of file