]> git.llucax.com Git - mecon/ai.git/blobdiff - lib/AI/Sistema.php
Cambios cortesía de gmeray:
[mecon/ai.git] / lib / AI / Sistema.php
index 6c761aefcce8def330b3c3a9b56b18e2baa2d032..2f65ea84da5b998c6d4828aca023f272c3f4d1e7 100644 (file)
@@ -32,8 +32,6 @@ require_once 'AI/DBObject.php';
 // ~X2C
 
 require_once 'AI/Error.php';
 // ~X2C
 
 require_once 'AI/Error.php';
-// TODO - preguntar a gmeray si le sirve, yo no lo uso...
-require_once 'SAMURAI/Sistema.php';
 
 /**
  * Archivo de configuración.
 
 /**
  * Archivo de configuración.
@@ -50,7 +48,6 @@ define('AI_SISTEMA_CONFFILE', dirname(__FILE__).'/Sistema.ini');
 class AI_Sistema extends AI_DBObject {
     /**
      * ID del sistema (ID en SAMURAI).
 class AI_Sistema extends AI_DBObject {
     /**
      * ID del sistema (ID en SAMURAI).
-FIXME - preguntar a gonzalo si le sirve.
      *
      * @var    int $sistema
      * @access public
      *
      * @var    int $sistema
      * @access public
@@ -58,8 +55,7 @@ FIXME - preguntar a gonzalo si le sirve.
     var $sistema = 0;
 
     /**
     var $sistema = 0;
 
     /**
-     * Nombre del sistema (slo de lectura, extra?o de SAMURAI).
-FIXME - preguntar a gonzalo si le sirve.
+     * Nombre del sistema (sólo de lectura, extraído de SAMURAI).
      *
      * @var    string $nombre
      * @access public
      *
      * @var    string $nombre
      * @access public
@@ -67,7 +63,7 @@ FIXME - preguntar a gonzalo si le sirve.
     var $nombre = '';
 
     /**
     var $nombre = '';
 
     /**
-     * Descripcin del sistema (slo de lectura, extra?o de SAMURAI).
+     * Descripción del sistema (sólo de lectura, extraído de SAMURAI).
      *
      * @var    string $descripcion
      * @access public
      *
      * @var    string $descripcion
      * @access public
@@ -75,7 +71,7 @@ FIXME - preguntar a gonzalo si le sirve.
     var $descripcion = '';
 
     /**
     var $descripcion = '';
 
     /**
-     * ?ono del sistema.
+     * Ícono del sistema.
      *
      * @var    string $icono
      * @access public
      *
      * @var    string $icono
      * @access public
@@ -106,6 +102,12 @@ FIXME - preguntar a gonzalo si le sirve.
      */
     var $habilitado = true;
 
      */
     var $habilitado = true;
 
+    /**
+     * @var    string $tipo
+     * @access public
+     */
+    var $tipo = 'php';
+
     // ~X2C
 
     // +X2C Operation 466
     // ~X2C
 
     // +X2C Operation 466
@@ -121,6 +123,45 @@ FIXME - preguntar a gonzalo si le sirve.
     }
     // -X2C
 
     }
     // -X2C
 
+    // +X2C Operation 536
+    /**
+     * @param  mixed $db Base de datos o resultado de donde cargar el sistema.
+     *
+     * @return PEAR_Error
+     * @access public
+     */
+    function cargar($db) // ~X2C
+    {
+        $id_field = $this->conf['id'];
+        $id = intval($this->$id_field);
+        if (is_a($db, 'db_result')) {
+            $result = $db;
+            $db     = $result->dbh;
+        // Si no es un resultado, hago el query.
+        } else {
+            $result = $db->query(
+                "SELECT AI.*, SA.nombre_sistema as nombre, SA.desc_sistema as descripcion
+                    FROM {$this->conf['base']}.{$this->conf['tabla']} as AI, samurai.sistema as SA
+                    WHERE AI.$id_field = $id AND AI.$id_field = SA.id_sistema"
+            );
+            if (DB::isError($result)) {
+                return $result;
+            }
+        }
+        // Obtengo la fila.
+        $row = $result->fetchRow(DB_FETCHMODE_ASSOC);
+        if (!$row) {
+            return new AI_Error(AI_ERROR_NO_RESULTADOS,
+                "No hay más resultados en la DB [id=$id]");
+        }
+        // Asigno valores al objeto.
+        foreach ($row as $key => $val) {
+            $this->$key = $val;
+        }
+        return true;
+    }
+    // -X2C
+
     // +X2C Operation 459
     /**
      * @param  DB $db DB donde guardar.
     // +X2C Operation 459
     /**
      * @param  DB $db DB donde guardar.
@@ -136,6 +177,7 @@ FIXME - preguntar a gonzalo si le sirve.
             'link'       => $this->link,
             'link_ayuda' => $this->link_ayuda,
             'habilitado' => $this->habilitado ? 1 : 0,
             'link'       => $this->link,
             'link_ayuda' => $this->link_ayuda,
             'habilitado' => $this->habilitado ? 1 : 0,
+            'tipo'       => $this->tipo,
         );
         $err = parent::guardar($db, $datos, $nuevo);
         if (PEAR::isError($err)) {
         );
         $err = parent::guardar($db, $datos, $nuevo);
         if (PEAR::isError($err)) {
@@ -149,7 +191,7 @@ FIXME - preguntar a gonzalo si le sirve.
      * Obtiene un array con los identificadores de los sistemas cargados.
      *
      * @param  DB $db Base de datos de la cual obtener los sistemas.
      * Obtiene un array con los identificadores de los sistemas cargados.
      *
      * @param  DB $db Base de datos de la cual obtener los sistemas.
-     * @param  string $where Clausula WHERE para filtrar resultados.
+     * @param  string $where Clausula WHERE para filtrar la búsqueda.
      *
      * @return array
      * @access public
      *
      * @return array
      * @access public
@@ -163,25 +205,30 @@ FIXME - preguntar a gonzalo si le sirve.
         }
         extract($conf);
         $query = "
         }
         extract($conf);
         $query = "
-            SELECT   $id
-            FROM     $base.$tabla";
+            SELECT    SA.id_sistema, SA.nombre_sistema
+            FROM      samurai.sistema as SA
+            LEFT JOIN $base.$tabla as AI
+            ON        AI.sistema = SA.id_sistema
+            WHERE     AI.sistema IS NULL AND SA.estado = 1";
         if ($where) {
         if ($where) {
-            $query .= "WHERE $where";
+            $query .= " AND $where";
         }
         }
-        return $db->getCol($query);
+        $query .= " ORDER BY SA.nombre_sistema ASC";
+        return $db->getAssoc($query);
     }
     // -X2C
 
     // +X2C Operation 531
     /**
      * @param  DB $db Base de datos de donde obtener los sistemas.
     }
     // -X2C
 
     // +X2C Operation 531
     /**
      * @param  DB $db Base de datos de donde obtener los sistemas.
-     * @param  string $where Clausula WHERE para filtrar la bsqueda.
+     * @param  bool $soloHabilitados Clausula WHERE para filtrar la búsqueda.
+     * @param  string $where Clausula WHERE para filtrar la búsqueda.
      *
      * @return array
      * @access public
      * @static
      */
      *
      * @return array
      * @access public
      * @static
      */
-    function getSistemas($db, $where = '') // ~X2C
+    function getSistemas($db, $soloHabilitados = true, $where = '') // ~X2C
     {
         static $conf;
         if (!$conf) {
     {
         static $conf;
         if (!$conf) {
@@ -189,10 +236,15 @@ FIXME - preguntar a gonzalo si le sirve.
         }
         $id_field = $conf['id'];
         $tabla    = $conf['base'].'.'.$conf['tabla'];
         }
         $id_field = $conf['id'];
         $tabla    = $conf['base'].'.'.$conf['tabla'];
-        // FIXME - ver como manejar JOINs - Ver de hacer el JOIN tambien en cargar.
-        $query = "SELECT AI.*, SA.nombre_sistema as nombre, SA.desc_sistema as descripcion FROM $tabla as AI, samurai.sistema as SA WHERE SA.id_sistema = AI.sistema and SA.estado = 1";
+        $query = "
+            SELECT AI.*, SA.nombre_sistema as nombre, SA.desc_sistema as descripcion
+            FROM   $tabla as AI, samurai.sistema as SA
+            WHERE  SA.id_sistema = AI.sistema AND SA.estado = 1";
+        if ($soloHabilitados) {
+            $query .= ' AND AI.habilitado = 1';
+        }
         if ($where) {
         if ($where) {
-            $query .= " WHERE $where";
+            $query .= " AND $where";
         }
         $query  .= ' ORDER BY nombre ASC';
         $result  = $db->query($query);
         }
         $query  .= ' ORDER BY nombre ASC';
         $result  = $db->query($query);
@@ -219,4 +271,4 @@ FIXME - preguntar a gonzalo si le sirve.
 
 } // -X2C Class :AI_Sistema
 
 
 } // -X2C Class :AI_Sistema
 
-?>
+?>
\ No newline at end of file