]> git.llucax.com Git - mecon/ai.git/blobdiff - lib/AI/Sistema.php
Se agrega un método para obtener un array de sistemas (objetos) para usar
[mecon/ai.git] / lib / AI / Sistema.php
index 05f2559735967806d176f5515463ecbfee739051..6c761aefcce8def330b3c3a9b56b18e2baa2d032 100644 (file)
 // +X2C includes
 require_once 'AI/DBObject.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.
+ */
+define('AI_SISTEMA_CONFFILE', dirname(__FILE__).'/Sistema.ini');
+
 // +X2C Class 416 :AI_Sistema
 /**
  * Sistema.
@@ -112,7 +117,7 @@ FIXME - preguntar a gonzalo si le sirve.
      */
     function AI_Sistema($sistema = 0) // ~X2C
     {
-        parent::AI_DBObject($sistema, dirname(__FILE__) . '/Sistema.ini');
+        parent::AI_DBObject($sistema, AI_SISTEMA_CONFFILE);
     }
     // -X2C
 
@@ -139,6 +144,79 @@ FIXME - preguntar a gonzalo si le sirve.
     }
     // -X2C
 
+    // +X2C Operation 528
+    /**
+     * 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.
+     *
+     * @return array
+     * @access public
+     * @static
+     */
+    function getSistemasArray($db, $where = '') // ~X2C
+    {
+        static $conf;
+        if (!$conf) {
+            $conf = parse_ini_file(AI_SISTEMA_CONFFILE, true);
+        }
+        extract($conf);
+        $query = "
+            SELECT   $id
+            FROM     $base.$tabla";
+        if ($where) {
+            $query .= "WHERE $where";
+        }
+        return $db->getCol($query);
+    }
+    // -X2C
+
+    // +X2C Operation 531
+    /**
+     * @param  DB $db Base de datos de donde obtener los sistemas.
+     * @param  string $where Clausula WHERE para filtrar la bsqueda.
+     *
+     * @return array
+     * @access public
+     * @static
+     */
+    function getSistemas($db, $where = '') // ~X2C
+    {
+        static $conf;
+        if (!$conf) {
+            $conf = parse_ini_file(AI_SISTEMA_CONFFILE, true);
+        }
+        $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";
+        if ($where) {
+            $query .= " WHERE $where";
+        }
+        $query  .= ' ORDER BY nombre ASC';
+        $result  = $db->query($query);
+        if (DB::isError($result)) {
+            return $result;
+        }
+        $sistemas = array();
+        $sistema  = new AI_Sistema;
+        $err      = $sistema->cargar($result);
+        while (!PEAR::isError($err)) {
+            $sistemas[] = $sistema->__clone();
+            $err = $sistema->cargar($result);
+        }
+        // Si no hay mas resultados (terminó bien) devuelve el array de
+        // sistemas.
+        if (AI_Error::isError($err)
+                and $err->getCode() == AI_ERROR_NO_RESULTADOS) {
+            return $sistemas;
+        }
+        // Si no, se devuelve el error.
+        return $err;
+    }
+    // -X2C
+
 } // -X2C Class :AI_Sistema
 
 ?>