function doMkDir() { global $sage_data_dir; $cwd = $_SESSION["path"]; $newname = quotemeta(@$_REQUEST["OrdnerName"]); if (strstr($newname, "/") || strstr($newname, "\\")) { fehlerausgabe("Kann {$newname} nicht anlegen: Ungültiger Name"); return false; } $path = new Path(); if ($path->selectByName($newname)) { fehlerausgabe("Kann Ordner {$newname} nicht anlegen: Ordner existiert schon"); return false; } $path->loginname = $_SESSION["user"]->loginname; $path->pathname = $_SESSION["path"] . "/" . $newname; $path->description = $_REQUEST["Beschreibung"]; $path->insert_at = "NOW()"; $path->modified_at = "NOW()"; $curpath = new Path(); if (!$curpath->selectByName($_SESSION["path"])) { fehlerausgabe("Kann Ordner {$newname} nicht anlegen: Kann Parent-Pfad nicht finden"); return false; } $path->path_id_parent = $curpath->path_id; if (!$path->insert()) { fehlerausgabe("Kann Ordner {$newname} nicht anlegen: Kann Pfad nicht in DB schreiben"); return false; } $path->selectByName($_SESSION["path"] . "/" . $newname); // zur Zeit wird ein neuer Ordner standardmässig der Gruppe zur Verfügung gestellt $acluserid = $_SESSION["user"]->user_id_parent; if ($acluserid == "") { $acluserid = $_SESSION["user"]->user_id; } // [kludge]: verwende Referenz auf die Parent-ACL mit veränderter Path-ID, um eine neue // ACL zu erzeugen $acllist = new ACLList(); if (!$acllist->selectByUserIDAndPath($acluserid, $_SESSION["path"])) { fehlerausgabe("Kann Ordner {$newname} nicht anlegen: Fehler beim Selektieren der Parent-ACL"); return false; } if (count($acllist) < 1) { fehlerausgabe("Kann Ordner {$newname} nicht anlegen: Kann Parent-ACL nicht finden"); return false; } $acl = $acllist->list[0]; $acl->user_id = $acluserid; $acl->path_id = $path->path_id; if (!$acl->insert()) { fehlerausgabe("Kann Ordner {$newname} nicht anlegen: Kann nicht einfügen"); return false; } //fs $oldumask = umask(); umask(077); if (!mkdir($sage_data_dir . $path->pathname, 0700)) { fehlerausgabe("Kann Ordner {$newname} nicht anlegen: Dateisystem weigert sich"); return false; } umask($oldumask); redirectTo($_SERVER["PHP_SELF"] . "?cmd=ls"); return true; }