X-Git-Url: https://git.llucax.com/mecon/ai.git/blobdiff_plain/df9d0deaca85d998cd966a75db730202e0f7c993..3715026a9cb67dcb765d39a236912ca80918101d:/lib/AI/DBTreeObject.php?ds=sidebyside diff --git a/lib/AI/DBTreeObject.php b/lib/AI/DBTreeObject.php index 5d86cba..71689bc 100644 --- a/lib/AI/DBTreeObject.php +++ b/lib/AI/DBTreeObject.php @@ -106,7 +106,7 @@ 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) { + and $err->getCode() == AI_ERROR_NO_RESULTADOS) { return true; } // Si no, se devuelve el error. @@ -114,6 +114,42 @@ class AI_DBTreeObject extends AI_DBObject { } // -X2C + // +X2C Operation 529 + /** + * Borra el objeto de la base de datos verificando que no tenga hijos. + * + * @param DB $db Base de datos de la cual borrar el objeto. + * + * @return PEAR_Error + * @access public + */ + function borrar($db) // ~X2C + { + $id_field = $this->conf['id']; + $id_padre = $this->conf['padre']; + $tabla = $this->conf['base'].'.'.$this->conf['tabla']; + $id = intval($this->$id_field); + if ($id) { + // Verifico si tiene hijos. + $hijos = $db->getOne(" + SELECT $id_field + FROM $tabla + WHERE $id_padre = $id"); + if (DB::isError($hijos)) { + return $hijos; + } elseif ($hijos) { + // Si tiene hijos, da error. + return new AI_Error(AI_ERROR_TIENE_HIJOS, + "El elemento de identificador $id todavía tiene hijos."); + } else { + // Si no tiene hijos, lo borro. + return parent::borrar($db); + } + } + return PEAR::raiseError('No hay un identificador válido para borrar'); + } + // -X2C + } // -X2C Class :AI_DBTreeObject ?> \ No newline at end of file