]> git.llucax.com Git - mecon/ai.git/blobdiff - sistema/local_lib/GrupoSecciones.php
- Se actualiza doc.
[mecon/ai.git] / sistema / local_lib / GrupoSecciones.php
index 1e8e63cab7fc0bab455d97cbbb62c9300bcd1d6a..be0548868539bba86a0c3e069e86c126fbdf0783 100644 (file)
@@ -37,10 +37,10 @@ class GrupoSecciones {
     /**
      * ID del grupo de secciones.
      *
-     * @var    int $groupo
+     * @var    int $grupo
      * @access public
      */
-    var $groupo = 0;
+    var $grupo = 0;
 
     /**
      * Nombre.
@@ -109,50 +109,72 @@ class GrupoSecciones {
 
     // ~X2C
 
+    // +X2C Operation 464
+    /**
+     * @param  int $grupo ID del grupo.
+     *
+     * @return void
+     * @access public
+     */
+    function GrupoSecciones($grupo = 0)// ~X2C
+    {
+        $this->grupo = $grupo;
+    }
+    // -X2C
+
 
     // +X2C Operation 453
     /**
-     * @param  DB &$db Base de datos a utilizar.
+     * @param  mixed &$db Base de datos o Resultado a utilizar.
      *
      * @return bool
      * @access public
      */
     function cargar(&$db)// ~X2C
     {
-        $data = $db->getRow(
-            "SELECT *
-                FROM grupo_secciones
-                WHERE grupo = {$this->grupo}",
-            array(),
-            DB_FETCHMODE_ASSOC
-        );
-        if (DB::isError($data)) {
-            return $data;
-        } elseif (!$data) {
-            return PEAR::raiseError("No existe el grupo {$this->grupo} en la DB");
+        $grupo = intval($this->grupo);
+        if (is_a($db, 'db_result')) {
+            $dbh    =& $db->dbh;
+            $result =& $db;
+        // Si no es un resultado, hago el query.
         } else {
-            extract($data);
-            $this->grupo        = $grupo;
-            $this->nombre       = $nombre;
-            $this->padre        = $grupo_padre;
-            $this->antiguedad   = $antiguedad;
-            $this->mostrarHijos = $mostrar_hijos;
-            $data = $db->getCol(
-                "SELECT seccion
-                    FROM grupo_secciones_seccion
-                    WHERE grupo = {$this->grupo}"
+            $dbh    =& $db;
+            $result =& $dbh->query(
+                "SELECT *
+                    FROM grupo_secciones
+                    WHERE grupo = $grupo"
             );
-            if (DB::isError($data)) {
-                return $data;
-            } else {
-                if ($data) {
-                    $this->secciones = $data;
-                } else {
-                    $this->secciones = array();
-                }
+            if (DB::isError($result)) {
+                return $result;
             }
-            return true;
         }
+        // Obtengo la fila.
+        $row = $result->fetchRow(DB_FETCHMODE_ASSOC);
+        if (!$row) {
+            return PEAR::raiseError("No hay más resultados en la DB [grupo=$grupo]", CODIGO DE ERROR);
+        }
+        // Asigno valores al objeto.
+        extract($row);
+        $this->grupo        = $grupo;
+        $this->nombre       = $nombre;
+        $this->padre        = $grupo_padre;
+        $this->antiguedad   = $antiguedad;
+        $this->mostrarHijos = $mostrar_hijos;
+        // Obtengo secciones.
+        $secciones =& $dbh->getCol(
+            "SELECT seccion
+                FROM grupo_secciones_seccion
+                WHERE grupo = $grupo"
+        );
+        if (DB::isError($secciones)) {
+            return $secciones;
+        }
+        if ($secciones) {
+            $this->secciones = $secciones;
+        } else {
+            $this->secciones = array();
+        }
+        return true;
     }
     // -X2C
 
@@ -179,25 +201,28 @@ class GrupoSecciones {
             $where  = "grupo = $grupo";
         } else {
             $accion = DB_AUTOQUERY_INSERT;
-            $grupo = $db->nextId('grupo_secciones');
+            $grupo  = $db->nextId('grupo_secciones');
+            if (DB::isError($grupo)) {
+                return $grupo;
+            }
+            // Asigno el nuevo id de grupo.
+            $this->grupo = $grupo;
             $datos['grupo'] = $grupo;
-            echo "$group\n";
         }
-        $res = $db->autoExecute('grupo_secciones', $datos, $accion, $where);
+        $res =& $db->autoExecute('grupo_secciones', $datos, $accion, $where);
         if (DB::isError($res)) {
             return $res;
         }
-        // Falta actualización de secciones.
-        $res = $db->query("DELETE FROM grupo_secciones_seccion WHERE grupo = $grupo");
+        $res =& $db->query("DELETE FROM grupo_secciones_seccion WHERE grupo = $grupo");
         if (DB::isError($res)) {
             return $res;
         }
-        $prepare = $db->prepare("INSERT INTO grupo_secciones_seccion
+        $prepare =& $db->prepare("INSERT INTO grupo_secciones_seccion
             (grupo, seccion) VALUES ($grupo, ?)");
         if (DB::isError($prepare)) {
             return $prepare;
         }
-        $res = $db->executeMultiple($prepare, $this->secciones);
+        $res =& $db->executeMultiple($prepare, $this->secciones);
         if (DB::isError($res)) {
             return $res;
         }
@@ -214,7 +239,21 @@ class GrupoSecciones {
      */
     function borrar($db)// ~X2C
     {
-        trigger_error('Not implemented!', E_USER_WARNING);
+        $grupo = intval($this->grupo);
+        if ($grupo) {
+            $res =& $db->query(
+                "DELETE FROM grupo_secciones WHERE grupo = $grupo");
+            if (DB::isError($res)) {
+                return $res;
+            }
+            $res =& $db->query(
+                "DELETE FROM grupo_secciones_seccion WHERE grupo = $grupo");
+            if (DB::isError($res)) {
+                return $res;
+            }
+            return true;
+        }
+        return PEAR::raiseError("No hay un grupo valido para borrar");
     }
     // -X2C
 
@@ -227,10 +266,25 @@ class GrupoSecciones {
      */
     function cargarHijos(&$db)// ~X2C
     {
-        trigger_error('Not implemented!', E_USER_WARNING);
+        $grupo = intval($this->grupo);
+        $hijos = array();
+        $result =& $db->query("SELECT * FROM grupo_secciones WHERE grupo_padre = $grupo");
+        if (DB::isError($result)) {
+            return $result;
+        }
+        $hijo =& new GrupoSecciones;
+        $err  =& $hijo->cargar($result);
+        while (!PEAR::isError($err)) {
+            $hijos[] =& $hijo;
+            $err = $hijo->cargar($result);
+        }
+        if (!$err->getCode() == CODIGO DE ERROR DE NO HAY MAS ELEMENTOS) {
+            return $err;
+        }
+        return true;
     }
     // -X2C
 
 } // -X2C Class :GrupoSecciones
 
-?>
\ No newline at end of file
+?>