+ /** Recursively delete a given path.
+ *
+ * @param $path
+ * @param $caller
+ */
+ function rmPath($path, &$caller)
+ {
+ global $globals;
+
+ $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);
+ }
+