X-Git-Url: https://git.llucax.com/mecon/ai.git/blobdiff_plain/2f4b4d674e677d26de736d30402fa9efd790d095..4d96a4e9e14558cb4b0d546041300ae0fa499d65:/sistema/local_lib/GrupoSecciones.php?ds=inline diff --git a/sistema/local_lib/GrupoSecciones.php b/sistema/local_lib/GrupoSecciones.php index 1e8e63c..136ebfd 100644 --- a/sistema/local_lib/GrupoSecciones.php +++ b/sistema/local_lib/GrupoSecciones.php @@ -1,5 +1,5 @@ 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->grupo_padre = $grupo_padre; + $this->antiguedad = $antiguedad; + $this->mostrar_hijos= $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 = ''; $datos = array( - 'grupo_padre' => intval($this->padre), + 'grupo_padre' => intval($this->grupo_padre), 'nombre' => $this->nombre, 'habilitado' => $this->habilitado ? 1 : 0, 'antiguedad' => intval($this->antiguedad), @@ -179,15 +202,18 @@ 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); 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; @@ -205,29 +231,72 @@ class GrupoSecciones { } // -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