diff --git a/Classes/ViewHelpers/DownloadLinkViewHelper.php b/Classes/ViewHelpers/DownloadLinkViewHelper.php index 9e63853..069a406 100644 --- a/Classes/ViewHelpers/DownloadLinkViewHelper.php +++ b/Classes/ViewHelpers/DownloadLinkViewHelper.php @@ -24,32 +24,59 @@ * This copyright notice MUST APPEAR in all copies of the script! ***************************************************************/ +use TYPO3\CMS\Core\Resource\File; +use TYPO3\CMS\Core\Resource\FileInterface; +use TYPO3\CMS\Core\Resource\ProcessedFile; +use TYPO3\CMS\Core\Utility\GeneralUtility; +use TYPO3\CMS\Fluid\Core\ViewHelper\AbstractTagBasedViewHelper; + /** * Download link view helper. Generates links that force a download action. */ -class DownloadLinkViewHelper extends \TYPO3\CMS\Fluid\ViewHelpers\Link\ExternalViewHelper +class DownloadLinkViewHelper extends AbstractTagBasedViewHelper { + /** + * @var string + */ + protected $tagName = 'a'; + + /** + * Initialize arguments + * + * @return void + * @api + */ + public function initializeArguments() { + $this->registerUniversalTagAttributes(); + $this->registerTagAttribute('name', 'string', 'Specifies the name of an anchor'); + $this->registerTagAttribute('rel', 'string', 'Specifies the relationship between the current document and the linked document'); + $this->registerTagAttribute('rev', 'string', 'Specifies the relationship between the linked document and the current document'); + $this->registerTagAttribute('target', 'string', 'Specifies where to open the linked document'); + $this->registerArgument('file', 'object', '', true); + $this->registerArgument('uriOnly', 'bool', '', false, false); + } + /** * Create a link to a file that forces a download * - * @param \TYPO3\CMS\Core\Resource\FileInterface $file - * @param bool $uriOnly * @return string */ - public function render(\TYPO3\CMS\Core\Resource\FileInterface $file, $uriOnly = false) + public function render() { + /** @var FileInterface $file */ + $file = $this->arguments['file']; $queryParameterArray = array('eID' => 'dumpFile', 't' => ''); - if ($file instanceof \TYPO3\CMS\Core\Resource\File) { + if ($file instanceof File) { $queryParameterArray['f'] = $file->getUid(); $queryParameterArray['t'] = 'f'; - } elseif ($file instanceof \TYPO3\CMS\Core\Resource\ProcessedFile) { + } elseif ($file instanceof ProcessedFile) { $queryParameterArray['p'] = $file->getUid(); $queryParameterArray['t'] = 'p'; } - $queryParameterArray['token'] = \TYPO3\CMS\Core\Utility\GeneralUtility::hmac(implode('|', $queryParameterArray), + $queryParameterArray['token'] = GeneralUtility::hmac(implode('|', $queryParameterArray), 'resourceStorageDumpFile'); $queryParameterArray['download'] = ''; $uri = 'index.php?' . str_replace('+', '%20', http_build_query($queryParameterArray)); @@ -59,7 +86,7 @@ public function render(\TYPO3\CMS\Core\Resource\FileInterface $file, $uriOnly = $uri = $GLOBALS['TSFE']->absRefPrefix . $uri; } - if ($uriOnly) { + if ($this->arguments['uriOnly']) { return $uri; } diff --git a/Classes/ViewHelpers/LeaveStateViewHelper.php b/Classes/ViewHelpers/LeaveStateViewHelper.php index 1b300ab..b1dd2e4 100644 --- a/Classes/ViewHelpers/LeaveStateViewHelper.php +++ b/Classes/ViewHelpers/LeaveStateViewHelper.php @@ -25,24 +25,32 @@ ***************************************************************/ use TYPO3\CMS\Core\Resource\Folder; +use TYPO3\CMS\Fluid\Core\ViewHelper\AbstractConditionViewHelper; /** * Class LeaveStateViewHelper * * @package BeechIt\FalSecuredownload\ViewHelpers */ -class LeaveStateViewHelper extends \TYPO3\CMS\Fluid\Core\ViewHelper\AbstractConditionViewHelper +class LeaveStateViewHelper extends AbstractConditionViewHelper { + public function initializeArguments() + { + parent::initializeArguments(); + $this->registerArgument('folder', 'object', '', true); + } + /** * renders child if the current visitor ... * otherwise renders child. - * - * @param Folder $folder + * @return string */ - public function render(Folder $folder) + public function render() { + /** @var Folder $folder */ + $folder = $this->arguments['folder']; /** @var $leafStateService \BeechIt\FalSecuredownload\Service\LeafStateService */ $leafStateService = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('BeechIt\\FalSecuredownload\\Service\\LeafStateService'); @@ -54,4 +62,4 @@ public function render(Folder $folder) return $this->renderElseChild(); } } -} \ No newline at end of file +} diff --git a/Classes/ViewHelpers/Security/AssetAccessViewHelper.php b/Classes/ViewHelpers/Security/AssetAccessViewHelper.php index 9bdb212..d6cedf1 100644 --- a/Classes/ViewHelpers/Security/AssetAccessViewHelper.php +++ b/Classes/ViewHelpers/Security/AssetAccessViewHelper.php @@ -27,30 +27,31 @@ use TYPO3\CMS\Core\Utility\GeneralUtility; use TYPO3\CMS\Core\Resource\Folder; use TYPO3\CMS\Core\Resource\File; +use TYPO3\CMS\Fluid\Core\ViewHelper\AbstractConditionViewHelper; /** * Asset access ViewHelper * * @package BeechIt\FalSecuredownload\ViewHelpers\Security */ -class AssetAccessViewHelper extends \TYPO3\CMS\Fluid\Core\ViewHelper\AbstractConditionViewHelper +class AssetAccessViewHelper extends AbstractConditionViewHelper { + public function initializeArguments() + { + parent::initializeArguments(); + $this->registerArgument('folder', 'object', '', true); + $this->registerArgument('file', 'object', '', false, null); + } /** * renders child if the current logged in FE user has access to the given asset * otherwise renders child. * - * @param Folder $folder - * @param File $file - * @return bool|string + * @return string */ - public function render(Folder $folder, File $file = null) + public function render() { - if (self::evaluateCondition(array('folder' => $folder, 'file' => $file))) { - return $this->renderThenChild(); - } else { - return $this->renderElseChild(); - } + return self::evaluateCondition($this->arguments) ? $this->renderThenChild() : $this->renderElseChild(); } /** @@ -61,7 +62,9 @@ public function render(Folder $folder, File $file = null) */ protected static function evaluateCondition($arguments = null) { + /** @var Folder $folder */ $folder = $arguments['folder']; + /** @var File $file */ $file = $arguments['file']; /** @var $checkPermissionsService \BeechIt\FalSecuredownload\Security\CheckPermissions */