]> git.llucax.com Git - mecon/ai.git/blobdiff - sistema/local_lib/Servicio.php
Se completa la primera alfa. Ahora se hace todo desde el index.php.
[mecon/ai.git] / sistema / local_lib / Servicio.php
index 3f5685a001d5b063143a6ebb935571bb14d418a2..6792359fb51cc168a409943d0d8698c67c2c5342 100644 (file)
 // $Id$
 //
 
-
-
+require_once 'AIError.php';
 
 // +X2C Class 413 :Servicio
 /**
+ * Servicio.
+ *
  * @access public
  */
 class Servicio {
@@ -44,10 +45,10 @@ class Servicio {
     var $servicio = 0;
 
     /**
-     * @var    int $padre
+     * @var    int $servicio_padre
      * @access public
      */
-    var $padre = 0;
+    var $servicio_padre = 0;
 
     /**
      * Servicios hijos.
@@ -92,18 +93,18 @@ class Servicio {
     /**
      * Enlace a donde se encuentra la ayuda del servicio.
      *
-     * @var    string $linkAyuda
+     * @var    string $link_ayuda
      * @access public
      */
-    var $linkAyuda = '';
+    var $link_ayuda = '';
 
     /**
      * True si es necesario que el usuario se loguee para usar el servicio.
      *
-     * @var    bool $necesitaLogueo
+     * @var    bool $necesita_logueo
      * @access public
      */
-    var $necesitaLogueo = false;
+    var $necesita_logueo = false;
 
     /**
      * Indica si esta habilitado.
@@ -113,19 +114,29 @@ class Servicio {
      */
     var $habilitado = true;
 
-    // ~X2C
+    /**
+     * Gets Hijos.
+     *
+     * @return array
+     * @access public
+     */
+    function getHijos()
+    {
+        return $this->_hijos;
+    }
 
+    // ~X2C
 
-    // +X2C Operation 456
+    // +X2C Operation 465
     /**
-     * @param  DB $db DB de donde borrar.
+     * @param  int $servicio ID del servicio.
      *
-     * @return PEAR_Error
+     * @return void
      * @access public
      */
-    function borrar($db)// ~X2C
+    function Servicio($servicio = 0) // ~X2C
     {
-        trigger_error('Not implemented!', E_USER_WARNING);
+        $this->servicio = $servicio;
     }
     // -X2C
 
@@ -136,9 +147,40 @@ class Servicio {
      * @return PEAR_Error
      * @access public
      */
-    function cargar($db)// ~X2C
+    function cargar($db) // ~X2C
     {
-        trigger_error('Not implemented!', E_USER_WARNING);
+        $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 AIError(AIERROR_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;
     }
     // -X2C
 
@@ -149,35 +191,91 @@ class Servicio {
      * @return PEAR_Error
      * @access public
      */
-    function guardar($db)// ~X2C
+    function guardar($db) // ~X2C
     {
-        trigger_error('Not implemented!', E_USER_WARNING);
+        $servicio = intval($this->servicio);
+        $where    = '';
+        $datos    = array(
+            'servicio_padre'    => intval($this->servicio_padre),
+            'nombre'            => $this->nombre,
+            'descripcion'       => $this->descripcion,
+            'icono'             => $this->icono,
+            'link'              => $this->link,
+            'link_ayuda'        => $this->link_ayuda,
+            '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;
+        }
+        return true;
     }
     // -X2C
 
-    // +X2C Operation 463
+    // +X2C Operation 456
     /**
-     * @param  DB $db DB de donde cargar los hijos.
+     * @param  DB $db DB de donde borrar.
      *
      * @return PEAR_Error
      * @access public
      */
-    function cargarHijos($db)// ~X2C
+    function borrar($db) // ~X2C
     {
-        trigger_error('Not implemented!', E_USER_WARNING);
+        $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 465
+    // +X2C Operation 463
     /**
-     * @param  int $servicio ID del servicio.
+     * @param  DB $db DB de donde cargar los hijos.
      *
-     * @return void
+     * @return PEAR_Error
      * @access public
      */
-    function Servicio($servicio = 0)// ~X2C
+    function cargarHijos($db) // ~X2C
     {
-        trigger_error('Not implemented!', E_USER_WARNING);
+        $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 (is_a($err, 'aierror')
+                and $err->getCode() == AIERROR_NO_RESULTADOS) {
+            return true;
+        }
+        // Si no, se devuelve el error.
+        return $err;
     }
     // -X2C
 
@@ -186,11 +284,12 @@ class Servicio {
      * @return Servicio
      * @access public
      */
-    function __clone()// ~X2C
+    function __clone() // ~X2C
     {
-        trigger_error('Not implemented!', E_USER_WARNING);
+        return $this;
     }
     // -X2C
 
 } // -X2C Class :Servicio
+
 ?>
\ No newline at end of file