Enfore ISO-8859-1 encoding for htmlentities().
[diogenes.git] / include / Barrel.php
index 2379561..a1ba574 100644 (file)
@@ -87,7 +87,7 @@ class Diogenes_Barrel
 
     $this->flags = new flagset($flags);    
     $this->options = new Diogenes_Barrel_Options($this->alias);
-    $this->spool = new DiogenesSpool($this,$this->alias);
+    $this->spool = new Diogenes_VCS_Spool($this,$this->alias);
     
     $this->readTree();
   }
@@ -277,6 +277,7 @@ class Diogenes_Barrel
   /** Create a page with the given path, and return its PID.
    *
    * @param $path
+   * @param $caller
    */
   function makePath($path, &$caller)
   {
@@ -300,6 +301,46 @@ class Diogenes_Barrel
   }
   
 
+  /** Recursively delete a given path.
+   *
+   * @param $path
+   * @param $caller
+   */
+  function rmPath($path, &$caller)
+  {
+    global $globals;
+
+    if (!$path) {
+      $caller->info("rmPath: will not delete from root!");
+      return false;
+    }
+    $curpid = $this->getPID($path);
+    if (!$curpid) {
+      $caller->info("rmPath: could not find '$path'");
+      return false;
+    }
+
+    // lookup children
+    $res = $globals->db->query("select PID from {$this->table_page} where parent=$curpid");
+    $children = array();
+    while (list($child) = mysql_fetch_row($res))
+      array_push($children, $child);
+    mysql_free_result($res);
+
+    // recurse into children
+    foreach ($children as $child)
+    {
+      $childpath = $this->getLocation($child);
+      if ($childpath) {
+        if (!$this->rmPath($childpath, $caller)) 
+          return false;
+      }
+    }
+    
+    // delete this page
+    return Diogenes_Barrel_Page::delete($this, $curpid, $caller);
+  }
+
   /** Compile the directory tree
    */
   function compileTree()