Hacks
Download Counter
Damals wars, da ging es nicht anders. Irgendwann baute Leo ein HOOK ein, wodurch nach dem Download ein Modul aufgerufen werden kann. Dies wurde genutzt und so entstand ein Modul dlstats, hier zu finden.
Vorteil vom Modul: Backend Statistik Übersicht
Nachteil zum Hack: Keine Anzahl Anzeige im Frontend.
Mittels des Modules "Auflistung" ist es aber möglich die Anzahl der Downloads einer Datei im Frontend anzeigen zu lassen. Dazu wählt man als Tabelle "tl_dlstats" und als Feld "downloads". Das Template "list_default.tpl" muss man dann noch kürzen, man will ja nur die Zahl haben, und nach /templates kopieren. (genauere Beschreibung siehe hier)
Wer lieber den Original Hack mag, hier ist er.
_______________________________________________________________________________________
Dieser Download Counter ist deshalb ein Hack, da hierfür Core Dateien von TYPOlight verändert werden müssen.
Dies hat zur Folge, das diese nicht updatesicher sind.
Ziel des ganzen ist es, die Downloads von Dateien zu zählen und die Anzahl der Downloads anzuzeigen.
Beispiel:

Dazu nötig (an 2.4.6 durchgeführt) sind Änderungen an:
download.php
$resFile = fopen(TL_ROOT . '/' . $this->strFile, 'rb');
fpassthru($resFile);
fclose($resFile);
$this->setDownloadCounter(); // ADD BugBuster
}
/**
* Set Download Counter // ADD BugBuster
*/
public function setDownloadCounter() {
$this->import('Database');
$objFile = new File($this->strFile); // $objFile->basename
// Prepare record
$arrSet = array
(
'tstamp' => time(),
'file' => $objFile->basename,
//'ip' => $this->Environment->ip // I don't need the privat IP even if a proxy server is used
'ip' => $_SERVER['REMOTE_ADDR']
);
$this->Database->prepare("INSERT INTO tl_downloads %s")->set($arrSet)->execute();
}
}
/**
* Instantiate controller
*/
$objDownload = new Download();
$objDownload->run();
system/modules/frontend/ContentDownload.php
$this->Template->icon = 'system/themes/' . $this->getTheme() . '/images/' . $objFile->icon;
// DL Counter add-on
$objDownload = $this->Database->prepare("SELECT count(*) as num_of_dl FROM tl_downloads WHERE file=?")
->limit(1)
->execute($objFile->basename);
$objDownload->fetchAssoc();
$this->Template->number_of_dl = $objDownload->num_of_dl;
}
}
templates/ce_download.tpl
<div class="<?php echo $this->class; ?> block"<?php echo $this->cssID; ?><?php if ($this->style): ?> style="<?php echo $this->style; ?>"<?php endif; ?>> <?php if ($this->headline): ?> <<?php echo $this->hl; ?>><?php echo $this->headline; ?></<?php echo $this->hl; ?>> <?php endif; ?> <img src="<?php echo $this->icon; ?>" alt="<?php echo $this->title; ?>" class="mime_icon" /> <a href="<?php echo $this->href; ?>" title="<?php echo $this->title; ?>"><?php echo $this->link; ?></a> Downloads: <?php echo $this->number_of_dl; ?> </div>
Template original liegt unter /system/modules/frontend/templates, wurde nach /template kopiert und ist somit Update sicher.
Neue Datenbank Tabelle tl_downloads
CREATE TABLE `tl_downloads` ( `id` int(10) unsigned NOT NULL auto_increment, `tstamp` int(10) unsigned NOT NULL default '0', `file` varchar(128) NOT NULL, `ip` varchar(15) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8