von Norman Seibert, 28.02.2008

TYPO3 als Download-Center

Aus dem
t3n Magazin Nr. 11

Jetzt kaufen

Bereits damals sollten manche Dateien nur von authentifizierten und autorisierten Benutzern heruntergeladen werden können, für einen eingeschränkten Zugang konnten Besucher sich selbst registrieren. Der unautorisierte Download wurde verhindert, indem Dateien in einem geschützten Verzeichnis abgelegt und per PHP-Skript als Stream an den Browser gesendet wurden. Die Anforderung, auch nicht angemeldeten Besuchern die geschützten Dateien anzuzeigen, wurde durch Manipulation des TCA erreicht:

PHP - ext_tables.php

$TCA["tx_mitdownload_files"] = Array (
"ctrl" => Array (
"enablecolumns" => Array (
"disabled" => "hidden"
),
[...]
 ),
[...]
);

Listing 1

Im Plugin-Code wurde dieser Wert bei Bedarf geändert, wie das folgende Listing zeigt.

PHP

$GLOBALS['TCA']['tx_mitdownload_files']['ctrl']['enablecolumns']['fe_group'] = 'fe_group';

Listing 2

Für ein paar Dateien mehr

Mit zunehmender Anzahl der Dateien wurde die Suche und das Sortieren zum Problem, weil die SQL-Abfragen, in denen die Dateitabelle, die Attributtabellen und pro Attribut noch eine Verknüpfungstabelle enthalten waren, zu lange dauerten. Die JOINS in der Suchabfrage wurden daher im ersten Schritt zugunsten von EXISTS abgelöst. Das folgende Beispiel zeigt die Einschränkung auf bestimmte Kategorien:

PHP

($filter['cat']?' AND EXISTS (SELECT * FROM tx_mitdownload_cat_mm WHERE
uid_local = tx_mitdownload_files.uid AND uid_foreign IN
('.$filter['cat'].'))':'')

Listing 3

Um dennoch nach dem Namen der Attribute – bisher werden nur die IDs, aber keine Bezeichnungen verwendet – sortieren zu können, wurden die Attributtabellen nur bei Bedarf hinzugezogen:

Seite:  1 2 3 4 5

Empfohlene Artikel