Dateinamen bei Downloads
Allgemeine Funktionsweise
In der Tabelle "Download Dateinamen" lassen sich reguläre Ausdrücke definieren, auf die über security/download herunterzuladende Dateipfade geprüft wird. Trifft der reguläre Ausdruck zu, kann auf ein Package verwiesen werden, das die Matches aus dem regulären Ausdruck in eine Methode hineingereicht bekommt, und einen Download-Dateinamen zurückliefert. Dieser wird für den Dateinamen des Downloads im Browser verwendet.
In der Tabelle können beliebig viele Einträge angelegt werden. Security/Download verwendet den ersten, dessen regulärer Ausdruck auf den Dateipfad der herunterzuladenden Datei zutrifft.
Konfiguration
Ein Datensatz benötigt folgende Informationen
Regulärer Ausdruck
Ein regulärer Ausdruck, der auf den Dateipfad angewandt wird. Dieser wird mittels preg_match ausgeführt.
Callback
Ein Package, das das Interface Brandbox\Framework\Security\Download\Lib\Interfaces\DownloadFilenameInterface implementiert.
Parameter
Ein JSON-Objekt, dessen benamte Properties den Wert des Array-Indizes aus dem Match-Result von preg_match haben.
Beispiel
Das folgende Beispiel ist gleichzeitig ein Standard-Eintrag für die Benamung der Downloads von Druckdateien.
Regulärer Ausdruck
/share\/public\/client-([0-9]*)\/domain-([0-9]*)\/table-shopOrder\/user-([a-zA-Z]*)-([0-9]*)\/([0-9]*)\/([0-9]*)\/([0-9]*)\/([0-9]*)-([0-9]*)-([0-9]*)-([a-zA-Z_]*)\.([a-z]*)/
Dieser reguläre Ausdruck trifft auf Druckdateien von Bestellungen zu und extrahiert:
clientID
domainID
Tabellen-Identifier der Benutzertabelle
User-ID
Bestellnummer aus 3 Ordnerebenen
shopOrderID
shopOrderArticleID
articleTemplateID
Name des Ausgabeformats
Dateiendung
Callback
Bestellungen (Shop/Order)
Parameter
{"shopOrderID":8,"shopOrderArticleID":9}
Aus den oben ermittelten Matches des regulären Ausdrucks werden nun die Parameter mit den Nummern 8 und 9 (shopOrderID und shopOrderArticleID) den entsprechenden Parameternamen zugewiesen
Der Mechanismus ruft nun die Methode getDownloadFilename in der Engine von Shop/Order auf (diese Engine muss das oben beschriebene Interface implementieren) und übergibt als Parameter einen Array mit den benamten Parametern shopOrderID und shopOrderArticleID und den aus dem Dateipfad ermittelten zugehörigen Werten. Die Methode muss nun einen Dateinamen-String zurückliefern (inklusive Dateiendung).