The GPL headers named dreipunktnull and an old address and no longer match the license of the code. Co-Authored-By: Claude Opus 5.5 <[email protected]>
49 lines
1.4 KiB
PHP
49 lines
1.4 KiB
PHP
<?php
|
|
|
|
namespace EP\EpTheme\ViewHelpers;
|
|
|
|
use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
|
|
use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
|
|
|
|
class NightsOptionsViewHelper extends AbstractViewHelper
|
|
{
|
|
public function initializeArguments()
|
|
{
|
|
parent::initializeArguments();
|
|
|
|
$this->registerArgument('options', 'array', 'The options');
|
|
$this->registerArgument('daytrip', 'bool', 'Is daytrip or not', false, false);
|
|
}
|
|
|
|
/**
|
|
* @param array $arguments
|
|
* @param \Closure $renderChildrenClosure
|
|
* @param RenderingContextInterface $renderingContext
|
|
* @return mixed
|
|
*/
|
|
public function render()
|
|
{
|
|
if ($this->arguments['daytrip']) {
|
|
return 'Tageweise buchbar';
|
|
}
|
|
$options = $this->arguments['options'];
|
|
if ($options === null) {
|
|
return '';
|
|
}
|
|
sort($options);
|
|
$optionsCount = count($options);
|
|
$lastOption = array_pop($options);
|
|
$output = '';
|
|
if ($optionsCount > 2) {
|
|
$output .= implode(', ' , $options) . ' oder ' . $lastOption;
|
|
} elseif ($optionsCount === 2) {
|
|
$output .= reset($options) . ' oder ' . $lastOption;
|
|
} else {
|
|
$output = $lastOption;
|
|
}
|
|
$output .= (int) $lastOption > 1 ? ' Nächte' : ' Nacht';
|
|
return $output;
|
|
}
|
|
|
|
}
|