<?php
-// vim: set expandtab tabstop=4 softtabstop=4 shiftwidth=4:
+// vim: set expandtab tabstop=4 shiftwidth=4:
// +--------------------------------------------------------------------+
// | Ministerio de Economía |
// | AI (Administrador de Intranet) |
// $Id$
//
-// +X2C Class 414 :GrupoSecciones
+require_once 'AIError.php';
+
+// +X2C Class 486 :GrupoSecciones
/**
* Grupo de secciones.
*
/**
* ID del grupo de secciones.
*
- * @var int $groupo
+ * @var int $grupo
* @access public
*/
- var $groupo = 0;
+ var $grupo = 0;
/**
* Nombre.
// ~X2C
+ // +X2C Operation 495
+ /**
+ * @param int $grupo ID del grupo.
+ *
+ * @return void
+ * @access public
+ */
+ function GrupoSecciones($grupo = 0) // ~X2C
+ {
+ $this->grupo = $grupo;
+ }
+ // -X2C
- // +X2C Operation 453
+ // +X2C Operation 496
/**
- * @param DB &$db Base de datos a utilizar.
+ * @param mixed $db Base de datos o Resultado a utilizar.
*
- * @return bool
+ * @return PEAR_Error
* @access public
*/
- function cargar(&$db)// ~X2C
+ 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')) {
+ $result = $db;
+ $db = $result->dbh;
+ // 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}"
+ $result = $db->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 new AIError(AIERROR_NO_RESULTADOS,
+ "No hay más resultados en la DB [grupo=$grupo]");
+ }
+ // 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 = $db->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
- // +X2C Operation 454
+ // +X2C Operation 497
/**
- * @param DB &$db DB donde guardar.
+ * @param DB $db DB donde guardar.
*
- * @return bool
+ * @return PEAR_Error
* @access public
*/
- function guardar(&$db)// ~X2C
+ function guardar($db) // ~X2C
{
$grupo = intval($this->grupo);
$where = '';
$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);
if (DB::isError($res)) {
return $res;
}
- // Falta actualización de secciones.
$res = $db->query("DELETE FROM grupo_secciones_seccion WHERE grupo = $grupo");
if (DB::isError($res)) {
return $res;
}
// -X2C
- // +X2C Operation 455
+ // +X2C Operation 498
/**
- * @param int $db DB de donde borrar.
+ * @param DB $db DB de donde borrar.
*
- * @return bool
+ * @return PEAR_Error
* @access public
*/
- function borrar($db)// ~X2C
+ 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 válido para borrar");
}
// -X2C
- // +X2C Operation 462
+ // +X2C Operation 499
/**
- * @param DB &$db DB de donde cargar los hijos.
+ * @param DB $db DB de donde cargar los hijos.
*
- * @return bool
+ * @return PEAR_Error
+ * @access public
+ */
+ function cargarHijos($db) // ~X2C
+ {
+ $grupo = intval($this->grupo);
+ $result = $db->query("SELECT * FROM grupo_secciones WHERE grupo_padre = $grupo");
+ if (DB::isError($result)) {
+ return $result;
+ }
+ $this->_hijos = array();
+ $hijo = new GrupoSecciones;
+ $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
+
+ // +X2C Operation 500
+ /**
+ * @return GrupoSecciones
* @access public
*/
- function cargarHijos(&$db)// ~X2C
+ function __clone() // ~X2C
{
- trigger_error('Not implemented!', E_USER_WARNING);
+ return $this;
}
// -X2C