X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=include%2FBarrel.php;h=7eb24a54efe1cf88dc78836e4c4f795b81ec4331;hb=d0b659f7ffd8e1b102837b28c6e1223925557b22;hp=cc41014e676df1eaa7ee2eaa87b7b1edc077091b;hpb=6855525e48fad5de270500a5445c4f4ff85d8bda;p=diogenes.git diff --git a/include/Barrel.php b/include/Barrel.php index cc41014..7eb24a5 100644 --- a/include/Barrel.php +++ b/include/Barrel.php @@ -164,12 +164,14 @@ class Diogenes_Barrel $homepage = mysql_insert_id(); $globals->db->query("update {$alias}_page set location='',title='Home',perms='public' where PID='$homepage'"); - /* create home page & copy CSS template */ + /* create home page */ $rcs = new $globals->rcs($caller,$alias,$_SESSION['session']->username,true); $rcs->newdir("",$homepage); $rcs->commit($homepage,$globals->htmlfile,""); - $rcs->commit($homepage,$globals->cssfile, - file_get_contents("{$globals->root}/{$globals->cssfile}") ); + + /* copy CSS template */ + $def_css = file_get_contents("{$globals->root}/styles/{$globals->barrel_style_sheet}.css"); + $rcs->commit($homepage,$globals->cssfile, $def_css); } @@ -271,7 +273,74 @@ class Diogenes_Barrel return $this->flags->hasFlag($flag); } + + /** Create a page with the given path, and return its PID. + * + * @param $path + * @param $caller + */ + function makePath($path, &$caller) + { + $pathbits = split("/", $path); + $curpath = ''; + $curpid = $this->getPID($curpath);; + foreach ($pathbits as $pathbit) + { + $newpath = ($curpath ? "$curpath/" : "") . $pathbit; + $newpid = $this->getPID($newpath); + if (!$newpid) + { + $tpage = new Diogenes_Barrel_Page($this, array('parent' => $curpid, 'location' => $pathbit)); + $tpage->toDb(0, $caller); + $newpid = $this->getPID($newpath); + } + $curpath = $newpath; + $curpid = $newpid; + } + return $curpid; + } + + + /** 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()