function listACLsByPath($pathname) { $me = $_SERVER["PHP_SELF"]; if (!canEdit($pathname)) { echo "Ihnen fehlt leider die Berechtigung, das Verzeichnis {$pathname} zu bearbeiten"; return false; } // Verzeichnisobjekt holen $path = new Path(); if (!$path->selectByName($pathname)) { fehlerausgabe("Das Verzeichnis {$pathname} konnte nicht aus der DB gewählt werden"); return false; } // ACLs fuer das Verzeichnis holen $acllist = new ACLList(); if (!$acllist->selectByPath($pathname)) { fehlerausgabe("Die zum Verzeichnis {$pathname} gehörigen ACLs konnten nicht aus der DB gewählt werden"); return false; } echo "ACLs für Pfad {$pathname}:"; echo <<<EOF <form name="acleditor" method="post" action="{$me}"> <select name="cmd"> <option value="edit">Eine ACL bearbeiten</option> <option value="del">Löschen</option> </select> <input type="hidden" name="pathname" value="{$pathname}" /> <input type="submit" value="Los" /> <br /> <table width="100%" border="0" cellspacing="0" cellpadding="0" style="table-layout:fixed"> <tr> <td>User</td> <td>Löschen</td> <td>Schreiben</td> <td>Lesen</td> <td>Umbenennen</td> </tr> EOF; $user = new User(); for ($i = 0; $i < count($acllist->list); $i++) { $acl = $acllist->list[$i]; $user->selectByID($acl->user_id); echo <<<EOF <tr> <td><input type="checkbox" name="aclid[]" value="{$acl->acl_id}" />{$user->loginname}</td> <td>{$acl->delete_path}</td> <td>{$acl->write_path}</td> <td>{$acl->read_path}</td> <td>{$acl->rename_path}</td> </tr> EOF; } echo <<<EOF </table> </form> EOF; return true; }
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; }
$acl->path_id = $path->path_id; $acl->{$delete_path} = 1; // ACL fuer Gruppenordner $acl->{$write_path} = 1; // => alles auf 1 $acl->{$read_path} = 1; $acl->{$rename_path} = 1; $acl->{$delete_file} = 1; $acl->{$write_file} = 1; $acl->{$read_file} = 1; $acl->{$rename_file} = 1; $modpath = new Path(); $modacl = new ACL(); $modacl->user_id = $group->user_id; foreach (array("BROWSER", "CALENDAR", "HILFE", "MAIL") as $modulename) { $modpath->selectByName($modulename); $modacl->path_id = $modpath->path_id; $modacl->delete_path = 1; if ($modacl->insert()) { echo "Gruppe angelegt."; } else { echo "Fehler bei Modul " . $modulename . "."; } } // end foreach } else { echo "Fehler bei INSERT."; } } else { echo "Fehler bei INSERT."; }