X-Git-Url: https://git.llucax.com/mecon/ai.git/blobdiff_plain/d734a389cf0d4b80a22887fd27c8a88379b01527..efefba10aeaaa7d31d1339e5db0f6a5425467631:/lib/AI/DBTreeObject.php diff --git a/lib/AI/DBTreeObject.php b/lib/AI/DBTreeObject.php index c8752c8..b322043 100644 --- a/lib/AI/DBTreeObject.php +++ b/lib/AI/DBTreeObject.php @@ -27,11 +27,8 @@ // $Id$ // -// +X2C includes require_once 'AI/DBObject.php'; -// ~X2C -// +X2C Class 524 :AI_DBTreeObject /** * @package AI * @access public @@ -57,30 +54,32 @@ class AI_DBTreeObject extends AI_DBObject { return $this->_hijos; } - // ~X2C - - // +X2C Operation 526 /** * @param int $id Identificador del objecto. - * @param string $confFile Configuracin del objeto. + * @param string $confFile Configuración del objeto. * * @return void * @access public */ - function AI_DBTreeObject($id = 0, $confFile = '') // ~X2C + function AI_DBTreeObject($id = 0, $confFile = '') { parent::AI_DBObject($id, $confFile); } - // -X2C - // +X2C Operation 527 /** + * Carga hijos de un objeto. + * Si hubo error devuelve un PEAR_Error, si no hubo error, devuleve un + * array de objetos (los hijos). + * * @param mixed $db Base de datos o resultado de donde cargar los hijos. + * @param bool $soloHabilitados Si es true, se cargan solo los hijos con + * el flag habilitado. + * @param string $orden Indica cómo ordenar los hijos cargados. * - * @return PEAR_Error + * @return mixed * @access public */ - function cargarHijos($db) // ~X2C + function cargarHijos($db, $soloHabilitados = true, $orden = 'nombre') { $id_field = $this->conf['id']; $id_padre = $this->conf['padre']; @@ -91,7 +90,14 @@ class AI_DBTreeObject extends AI_DBObject { $db = $result->dbh; // Si no es un resultado, hago el query. } else { - $result = $db->query("SELECT * FROM $tabla WHERE $id_padre = $id"); + $query = "SELECT * FROM $tabla WHERE $id_padre = $id"; + if ($soloHabilitados) { + $query .= ' AND ' . $this->conf['habilitado'] . ' = 1'; + } + if ($orden) { + $query .= ' ORDER BY ' . $orden; + } + $result = $db->query($query); if (DB::isError($result)) { return $result; } @@ -106,15 +112,13 @@ class AI_DBTreeObject extends AI_DBObject { } // Si no hay mas resultados, entonces terminó bien. if (AI_Error::isError($err) - and $err->getCode() == AIERROR_NO_RESULTADOS) { - return true; + and $err->getCode() == AI_ERROR_NO_RESULTADOS) { + return $this->_hijos; } // Si no, se devuelve el error. return $err; } - // -X2C - // +X2C Operation 529 /** * Borra el objeto de la base de datos verificando que no tenga hijos. * @@ -123,7 +127,7 @@ class AI_DBTreeObject extends AI_DBObject { * @return PEAR_Error * @access public */ - function borrar($db) // ~X2C + function borrar($db) { $id_field = $this->conf['id']; $id_padre = $this->conf['padre']; @@ -148,8 +152,7 @@ class AI_DBTreeObject extends AI_DBObject { } return PEAR::raiseError('No hay un identificador válido para borrar'); } - // -X2C -} // -X2C Class :AI_DBTreeObject +} ?> \ No newline at end of file