Userspezifisches Uploadverzeichnis

Fragen zur Installation von CONTENIDO 4.9? Probleme bei der Konfiguration? Hinweise oder Fragen zur Entwicklung des Systemes oder zur Sicherheit?
Antworten
josh
Beiträge: 156
Registriert: Do 24. Jun 2004, 09:25
Wohnort: Ahlen
Kontaktdaten:

Userspezifisches Uploadverzeichnis

Beitrag von josh » Do 3. Jul 2014, 23:29

Das funktioniert auch in Contenido 4.9.3 mit kleinen Änderungen.

Ursprünglicher Beitrag: Oldperl » Mo 22. Mai 2006
http://forum.contenido.org/viewtopic.php?f=52&t=12943

Bisher hat Contenido noch nicht die Möglichkeit im Uploadbereich für Benutzer nur bestimmte Verzeichnisse freizugeben.
Bis dieses von den Entwickler noch eingebaut wird hier ein kleiner Mod, der es zumindest erlaubt, einen User auf einen bestimmten Verzeichnisbaum zu begrenzen.
Dabei muß in den Core eingegriffen werden, das heißt die Änderung ist nach einem update erneut einzubauen.

In der Datei include.upl_dirs_overview.php im includes-Verzeichnis ab Zeile 132 folgendes ersetzen

Code: Alles auswählen

$rootTreeItem = new TreeItem();
$rootTreeItem->custom['level'] = 0;
$rootTreeItem->name = i18n("Upload directory");
$aInvalidDirectories = uplRecursiveDirectoryList($cfgClient[$client]["upl"]["path"], $rootTreeItem, 2);
durch dieses

Code: Alles auswählen

$user_upload_path = getEffectiveSetting("upload","userpath");  // mod by emergence

if (is_string($user_upload_path) AND !empty($user_upload_path)) {
   trim($user_upload_path);
   $file = $user_upload_path;
   if (substr($user_upload_path, -1) != "/") {
       $user_upload_path .= "/";
    }
   $pathstring = $user_upload_path;
   if (substr($cfgClient[$client]["upl"]["path"], -1) != "/" AND substr($user_upload_path, 0, 1) == "/") {
       $user_upload_path = substr($user_upload_path, 1);
    }
}

$rootTreeItem = new TreeItem;
$rootTreeItem->custom["level"] = 0;
$rootTreeItem->name = i18n("Upload directory");
$aInvalidDirectories = uplRecursiveDirectoryList($cfgClient[$client]["upl"]["path"].$user_upload_path, $rootTreeItem, 2);
Nun noch in den Dateien include.upl_files_overview.php (nach Zeile 25) und include.upl_left_top.php (Zeile 21) folgenden Code einfügen.

Code: Alles auswählen

$user_upload_path = getEffectiveSetting("upload","userpath");  // mod by emergence

if (is_string($user_upload_path) AND !empty($user_upload_path)) {
   trim($user_upload_path);
   if (substr($user_upload_path, -1) != "/") {
       $user_upload_path .= "/";
    }
   if (!isset($path) OR empty($path)) $path = $user_upload_path;
}
gibt man nun dem Benutzer eine benutzerdefinierte Variable
Area/Type: upload
Eigenschaft: userpath
Wert: [Unterverzeichnis in upload] (z.B. 'Bilder')

so wird dieses Verzeichnis mit seinen Unterverzeichnissen zum Hauptverzeichnis im Dateimanager.
Dabei wird die angegebene Pfadangabe auf den / am Anfang und Ende geprüft und gegebenenfalls korrigiert.
Ebenfalls wird die Dateiübersicht beim 1. Aufruf nur Dateien aus diesem Userverzeichnis anzeigen und Ordner werden auch nur in diesem Verzeichnis erstellt.

Somit ist es möglich jedem User ein eigenes Uploadverzeichnis in Uploads zuzuordnen.

Grüße

josh

Faar
Beiträge: 1915
Registriert: Sa 8. Sep 2007, 16:23
Wohnort: Brandenburg
Kontaktdaten:

Re: Userspezifisches Uploadverzeichnis

Beitrag von Faar » Fr 4. Jul 2014, 08:27

Moin Josh,

das ist gut, das macht Contenido dann noch mehr zum Ersatz für Typo3, weil Typo3 kann bereits die Upload-Verzeichnisse nach Userrechten beschränken.
Im Prinzip sollte das Team von 4fb dieses was jetzt mit getEffectiveSetting() abgefragt wird, mit in die Userberechtigung mit aufnehmen.
Dort am besten eine Auswahl-Option aller Upload-Pfade mit Multiple Choice (es kann ja sein, ein User soll mehrere parallel liegende Verzeichnisse benützen können, z.B. ein Standardverzeichnis und ein Userverzeichnis).

Der dargestellte Code ist so noch nicht DAU-stabil, bei dem IF fehlt das ELSE.
Für getEffectiveSetting() sollte also folgendes gemacht werden:

Code: Alles auswählen

$user_upload_path = getEffectiveSetting("upload","userpath","/");
Das "/" wäre dann der Standardpfad, falls jemand keine Usereinstellungen dazu macht.
So wie ich den Code verstehe, wäre "/" dann das Upload-Hauptverzeichnis.

Was macht man nun, wenn wie oben angesprochen, mehrere Verzeichnisse parallel freigegeben werden sollen, aber nicht alle?

VG,
Frank

Edit:
Ich rudere etwas zurück, der Defaultwert ist bereits da aber steckt woanders.

Code: Alles auswählen

$aInvalidDirectories = uplRecursiveDirectoryList($cfgClient[$client]["upl"]["path"].$user_upload_path, $rootTreeItem, 2);
Wenn $user_upload_path = "" ist, dann ist der Standard-Uploadpfad = upload/
Nach der neueren Definition bei 4.9 wird aber ohne Usereinstellungen nicht "" zurück gegeben, sondern FALSE: http://api.contenido.org/con490/functio ... tting.html
Was passiert denn dann, wenn $user_upload_path = FALSE ist?
Bei...

Code: Alles auswählen

if (is_string($user_upload_path) AND !empty($user_upload_path)) { }
...wäre dann $user_upload_path kein String (sondern BOOLEAN) und im Zweifel empty.
Da würde dann vielleicht folgendes stehen:

Code: Alles auswählen

uplRecursiveDirectoryList($cfgClient[$client]["upl"]["path"].FALSE, $rootTreeItem, 2);
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.

mischa.holz
Beiträge: 86
Registriert: Do 28. Jun 2012, 15:30
Wohnort: Darmstadt
Kontaktdaten:

Re: Userspezifisches Uploadverzeichnis

Beitrag von mischa.holz » Mi 9. Jul 2014, 10:56

Der boolean "false" wird, wenn er zu einem String umgewandelt wird, immer zum leeren String (""). Von daher wird der Code wahrscheinlich trotzdem funktionieren, aber man kann sich sicher streiten, ob das so schön ist ^.^;

Ansonsten ist das mit Sicherheit eine sehr gute Idee!
CONTENIDO Doku - API Doku - Git Repo - Bug Tracker - CONTENIDO 4.9.4!!
Arbeitet nicht mehr bei 4fb

Oldperl
Beiträge: 4254
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Kontaktdaten:

Re: Userspezifisches Uploadverzeichnis

Beitrag von Oldperl » Di 15. Jul 2014, 10:15

mischa.holz_4fb hat geschrieben:Ansonsten ist das mit Sicherheit eine sehr gute Idee!
Danke schön! :D
Von Zeit zu Zeit hab ich die halt mal... :mrgreen:
Hat damals aber leider keinen Weg in den Core der 4.8er gefunden. Falls gewünscht kann ich das gerne für den Core der 4.9er optimieren.

Gruß aus Franken

Ortwin
ConLite 2.1, alternatives und stabiles Update von Contenido 4.8.x unter PHP 7.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog

dominik.ziegler
Beiträge: 437
Registriert: Do 19. Jun 2008, 09:09

Re: Userspezifisches Uploadverzeichnis

Beitrag von dominik.ziegler » Mi 16. Jul 2014, 20:46

Darüber würde wir uns sehr freuen. ;-)
Viele Grüße
Dominik

Oldperl
Beiträge: 4254
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Kontaktdaten:

Re: Userspezifisches Uploadverzeichnis

Beitrag von Oldperl » Do 17. Jul 2014, 08:23

Na dann, sobald mein Plugin-Manager für die ConLite läuft schau ich es mir mal an. Muss mich an der Stelle erstmal in den aktuellen 4.9er Core einlesen.

Gruß aus Franken

Ortwin
ConLite 2.1, alternatives und stabiles Update von Contenido 4.8.x unter PHP 7.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog

Antworten