]> git.llucax.com Git - mecon/ai.git/blobdiff - lib/AI/DBTreeObject.php
Se limpia un poco el código y actualiza la TODO.
[mecon/ai.git] / lib / AI / DBTreeObject.php
index 5d86cba46356b00d62c79a816cb0d7a5be80e574..71689bc85f7018b4f363dcbb335c3366e40193ad 100644 (file)
@@ -106,7 +106,7 @@ class AI_DBTreeObject extends AI_DBObject {
         }
         // Si no hay mas resultados, entonces terminó bien.
         if (AI_Error::isError($err)
         }
         // 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.
             return true;
         }
         // Si no, se devuelve el error.
@@ -114,6 +114,42 @@ class AI_DBTreeObject extends AI_DBObject {
     }
     // -X2C
 
     }
     // -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
 } // -X2C Class :AI_DBTreeObject
 
 ?>
\ No newline at end of file