Файл: contao-3.5.8/system/modules/core/elements/ContentDownload.php
Строк: 91
<?php
/**
* Contao Open Source CMS
*
* Copyright (c) 2005-2016 Leo Feyer
*
* @license LGPL-3.0+
*/
namespace Contao;
/**
* Front end content element "download".
*
* @author Leo Feyer <https://github.com/leofeyer>
*/
class ContentDownload extends ContentElement
{
/**
* Template
* @var string
*/
protected $strTemplate = 'ce_download';
/**
* Return if the file does not exist
*
* @return string
*/
public function generate()
{
// Return if there is no file
if ($this->singleSRC == '')
{
return '';
}
$objFile = FilesModel::findByUuid($this->singleSRC);
if ($objFile === null)
{
if (!Validator::isUuid($this->singleSRC))
{
return '<p class="error">'.$GLOBALS['TL_LANG']['ERR']['version2format'].'</p>';
}
return '';
}
$allowedDownload = trimsplit(',', strtolower(Config::get('allowedDownload')));
// Return if the file type is not allowed
if (!in_array($objFile->extension, $allowedDownload))
{
return '';
}
$file = Input::get('file', true);
// Send the file to the browser and do not send a 404 header (see #4632)
if ($file != '' && $file == $objFile->path)
{
Controller::sendFileToBrowser($file);
}
$this->singleSRC = $objFile->path;
return parent::generate();
}
/**
* Generate the content element
*/
protected function compile()
{
$objFile = new File($this->singleSRC, true);
if ($this->linkTitle == '')
{
$this->linkTitle = specialchars($objFile->basename);
}
$strHref = Environment::get('request');
// Remove an existing file parameter (see #5683)
if (preg_match('/(&(amp;)?|?)file=/', $strHref))
{
$strHref = preg_replace('/(&(amp;)?|?)file=[^&]+/', '', $strHref);
}
$strHref .= ((Config::get('disableAlias') || strpos($strHref, '?') !== false) ? '&' : '?') . 'file=' . System::urlEncode($objFile->value);
$this->Template->link = $this->linkTitle;
$this->Template->title = specialchars($this->titleText ?: sprintf($GLOBALS['TL_LANG']['MSC']['download'], $objFile->basename));
$this->Template->href = $strHref;
$this->Template->filesize = $this->getReadableSize($objFile->filesize, 1);
$this->Template->icon = TL_ASSETS_URL . 'assets/contao/images/' . $objFile->icon;
$this->Template->mime = $objFile->mime;
$this->Template->extension = $objFile->extension;
$this->Template->path = $objFile->dirname;
}
}