, Heimspiel GmbH * @package Vhs * @subpackage ViewHelpers */ class OrViewHelper extends AbstractViewHelper { /** * Initialize * * @return void */ public function initializeArguments() { $this->registerArgument('alternative', 'mixed', 'Alternative if content is empty, can use LLL: shortcut', FALSE); $this->registerArgument('arguments', 'array', 'Arguments to be replaced in the resulting string', FALSE, NULL); $this->registerArgument('extensionName', 'string', 'UpperCamelCase extension name without vendor prefix', FALSE, NULL); } /** * @param $content string * @return string */ public function render($content = NULL) { if (NULL === $content) { $content = $this->renderChildren(); } if (TRUE === empty($content)) { $content = $this->getAlternativeValue(); } return $content; } /** * @return mixed */ protected function getAlternativeValue() { $alternative = $this->arguments['alternative']; $arguments = (array) $this->arguments['arguments']; if (0 === count($arguments)) { $arguments = NULL; } if (0 === strpos($alternative, 'LLL:EXT:')) { $alternative = LocalizationUtility::translate($alternative, NULL, $arguments); } elseif (0 === strpos($alternative, 'LLL:')) { $extensionName = $this->arguments['extensionName']; if (NULL === $extensionName) { $extensionName = $this->controllerContext->getRequest()->getControllerExtensionName(); } $translatedAlternative = LocalizationUtility::translate(substr($alternative, 4), $extensionName, $arguments); if (NULL !== $translatedAlternative) { $alternative = $translatedAlternative; } } return NULL !== $arguments && FALSE === empty($alternative) ? vsprintf($alternative, $arguments) : $alternative; } }