]> git.llucax.com Git - mecon/ai.git/blobdiff - lib/AI/Servicio.php
Se pone mas lindo el query de getSistemas (que no deja de ser feo).
[mecon/ai.git] / lib / AI / Servicio.php
index d4bcf0a5204eec06001e489819ada0be7913d8f3..341688e5a6a3c5f30f3eb1c4979b87ad24956934 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-// vim: set expandtab tabstop=4 softtabstop=4 shiftwidth=4:
+// vim: set binary expandtab tabstop=4 shiftwidth=4 textwidth=80:
 // +--------------------------------------------------------------------+
 // |                      Ministerio de Economía                        |
 // |                  AI (Administrador de Intranet)                    |
 // $Id$
 //
 
+// +X2C includes
+require_once 'AI/DBTreeObject.php';
+// ~X2C
+
 require_once 'AI/Error.php';
 
+/**
+ * Archivo de configuración.
+ */
+define('AI_SERVICIO_CONFFILE', dirname(__FILE__).'/Servicio.ini');
+
 // +X2C Class 413 :AI_Servicio
 /**
  * Servicio.
@@ -36,7 +45,7 @@ require_once 'AI/Error.php';
  * @package AI
  * @access public
  */
-class AI_Servicio {
+class AI_Servicio extends AI_DBTreeObject {
     /**
      * ID del servicio.
      *
@@ -51,14 +60,6 @@ class AI_Servicio {
      */
     var $servicio_padre = 0;
 
-    /**
-     * Servicios hijos.
-     *
-     * @var    array $hijos
-     * @access protected
-     */
-    var $_hijos = array();
-
     /**
      * Nombre del servicio.
      *
@@ -78,10 +79,10 @@ class AI_Servicio {
     /**
      * ?ono del servicio.
      *
-     * @var    HTML_Imagen $icono
+     * @var    string $icono
      * @access public
      */
-    var $icono = null;
+    var $icono = '';
 
     /**
      * Enlace a donde el este servicio.
@@ -115,17 +116,6 @@ class AI_Servicio {
      */
     var $habilitado = true;
 
-    /**
-     * Gets Hijos.
-     *
-     * @return array
-     * @access public
-     */
-    function getHijos()
-    {
-        return $this->_hijos;
-    }
-
     // ~X2C
 
     // +X2C Operation 465
@@ -137,66 +127,21 @@ class AI_Servicio {
      */
     function AI_Servicio($servicio = 0) // ~X2C
     {
-        $this->servicio = $servicio;
-    }
-    // -X2C
-
-    // +X2C Operation 457
-    /**
-     * @param  mixed $db Base de datos o Resultado a utilizar.
-     *
-     * @return PEAR_Error
-     * @access public
-     */
-    function cargar($db) // ~X2C
-    {
-        $servicio = intval($this->servicio);
-        if (is_a($db, 'db_result')) {
-            $result = $db;
-        // Si no es un resultado, hago el query.
-        } else {
-            $result = $db->query(
-                "SELECT *
-                    FROM servicio
-                    WHERE servicio = $servicio"
-            );
-            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 [servicio=$servicio]");
-        }
-        // Asigno valores al objeto.
-        extract($row);
-        $this->servicio         = $servicio;
-        $this->servicio_padre   = $servicio_padre;
-        $this->nombre           = $nombre;
-        $this->descripcion      = $descripcion;
-        $this->icono            = $icono; # FIXME - new HTML_Icono (o no?)
-        $this->link             = $link;
-        $this->link_ayuda       = $link_ayuda;
-        $this->necesita_logueo  = $necesita_logueo;
-        $this->habilitado       = $habilitado;
-        return true;
+        parent::AI_DBTreeObject($servicio, AI_SERVICIO_CONFFILE);
     }
     // -X2C
 
     // +X2C Operation 458
     /**
      * @param  DB $db DB donde guardar.
+     * @param  bool $nuevo Si es true, se fuerza a guardar el Servicio como nuevo.
      *
      * @return PEAR_Error
      * @access public
      */
-    function guardar($db) // ~X2C
+    function guardar($db, $nuevo = false) // ~X2C
     {
-        $servicio = intval($this->servicio);
-        $where    = '';
-        $datos    = array(
+        $datos = array(
             'servicio_padre'    => intval($this->servicio_padre),
             'nombre'            => $this->nombre,
             'descripcion'       => $this->descripcion,
@@ -206,91 +151,15 @@ class AI_Servicio {
             'necesita_logueo'   => $this->necesita_logueo ? 1 : 0,
             'habilitado'        => $this->habilitado ? 1 : 0,
         );
-        if ($servicio) {
-            $accion = DB_AUTOQUERY_UPDATE;
-            $where  = "servicio = $servicio";
-        } else {
-            $accion   = DB_AUTOQUERY_INSERT;
-            $servicio = $db->nextId('servicio');
-            if (DB::isError($servicio)) {
-                return $servicio;
-            }
-            // Asigno el nuevo id de servicio.
-            $this->servicio    = $servicio;
-            $datos['servicio'] = $servicio;
-        }
-        $res = $db->autoExecute('servicio', $datos, $accion, $where);
-        if (DB::isError($res)) {
-            return $res;
+        $err = parent::guardar($db, $datos, $nuevo);
+        if (PEAR::isError($err)) {
+            return $err;
         }
-        return true;
     }
     // -X2C
 
-    // +X2C Operation 456
-    /**
-     * @param  DB $db DB de donde borrar.
-     *
-     * @return PEAR_Error
-     * @access public
-     */
-    function borrar($db) // ~X2C
-    {
-        $servicio = intval($this->servicio);
-        if ($servicio) {
-            $res = $db->query(
-                "DELETE FROM servicio WHERE servicio = $servicio");
-            if (DB::isError($res)) {
-                return $res;
-            }
-            return true;
-        }
-        return PEAR::raiseError("No hay un servicio válido para borrar");
-    }
-    // -X2C
 
-    // +X2C Operation 463
-    /**
-     * @param  DB $db DB de donde cargar los hijos.
-     *
-     * @return PEAR_Error
-     * @access public
-     */
-    function cargarHijos($db) // ~X2C
-    {
-        $servicio = intval($this->servicio);
-        $result   = $db->query("SELECT * FROM servicio WHERE servicio_padre = $servicio");
-        if (DB::isError($result)) {
-            return $result;
-        }
-        $this->_hijos = array();
-        $hijo = new Servicio;
-        $err  = $hijo->cargar($result);
-        while (!PEAR::isError($err)) {
-            $this->_hijos[] = $hijo->__clone();
-            $err = $hijo->cargar($result);
-        }
-        // Si no hay mas resultados, entonces terminó bien.
-        if (AI_Error::isError($err)
-                and $err->getCode() == AIERROR_NO_RESULTADOS) {
-            return true;
-        }
-        // Si no, se devuelve el error.
-        return $err;
-    }
-    // -X2C
-
-    // +X2C Operation 501
-    /**
-     * @return Servicio
-     * @access public
-     */
-    function __clone() // ~X2C
-    {
-        return $this;
-    }
-    // -X2C
 
 } // -X2C Class :AI_Servicio
 
-?>
+?>
\ No newline at end of file