+ // +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
+