<?php namespace SGalinski\SgVimeo\ViewHelpers; /*************************************************************** * Copyright notice * * (c) sgalinski Internet Services (https://www.sgalinski.de) * * All rights reserved * * This script is part of the AY project. The AY project is * free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * The GNU General Public License can be found at * http://www.gnu.org/copyleft/gpl.html. * * This script is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * This copyright notice MUST APPEAR in all copies of the script! ***************************************************************/ use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper; /** * View helper that takes a URL and adds the parameters respecting the separator * * Example: * {namespace vi=SGalinski\SgVimeo\ViewHelpers} * <vi:urlWithQueryParameters url="https://player.vimeo.com/video/123?h=xyz" parameters="?origin=https://demo.sgalinski.de" /> * Result: https://player.vimeo.com/video/123?h=xyz&origin=https://demo.sgalinski.de */ class UrlWithQueryParametersViewHelper extends AbstractViewHelper { /** * Register the ViewHelper arguments */ public function initializeArguments(): void { parent::initializeArguments(); $this->registerArgument('url', 'string', 'The url to add the query parameters to', TRUE); $this->registerArgument('parameters', 'string', 'The query parameters to add', FALSE, ''); } /** * Returns the url with the added query parameters * * @return string */ public function render(): string { $url = $this->arguments['url']; $additionalUrlParameters = $this->arguments['parameters']; if ($additionalUrlParameters === '') { return $url; } $beginsWithQuestionMark = $additionalUrlParameters[0] === '?'; $beginsWithAmpersand = $additionalUrlParameters[0] === '&'; if ($beginsWithQuestionMark || $beginsWithAmpersand) { $additionalUrlParameters = substr($additionalUrlParameters, 1); } return strpos($url, '?') !== FALSE ? $url . '&' . $additionalUrlParameters : $url . '?' . $additionalUrlParameters; } }