‪TYPO3CMS  9.5
LegacyLinkBuilder.php
Go to the documentation of this file.
1 <?php
2 declare(strict_types = 1);
4 
5 /*
6  * This file is part of the TYPO3 CMS project.
7  *
8  * It is free software; you can redistribute it and/or modify it under
9  * the terms of the GNU General Public License, either version 2
10  * of the License, or any later version.
11  *
12  * For the full copyright and license information, please read the
13  * LICENSE.txt file that was distributed with this source code.
14  *
15  * The TYPO3 project - inspiring people to share!
16  */
19 
25 {
29  public function ‪build(array &$linkDetails, string $linkText, string $target, array $conf): array
30  {
31  $tsfe = $this->‪getTypoScriptFrontendController();
32  if ($linkDetails['file']) {
33  $linkDetails['type'] = ‪LinkService::TYPE_FILE;
34  $linkLocation = $linkDetails['file'];
35  // Setting title if blank value to link
36  $linkText = $this->‪encodeFallbackLinkTextIfLinkTextIsEmpty($linkText, rawurldecode($linkLocation));
37  $linkLocation = (strpos($linkLocation, '/') !== 0 ? $tsfe->absRefPrefix : '') . $linkLocation;
38  $url = $this->‪processUrl(‪UrlProcessorInterface::CONTEXT_FILE, $linkLocation, $conf);
39  $url = $this->‪forceAbsoluteUrl($url, $conf);
40  $target = $target ?: $this->‪resolveTargetAttribute($conf, 'fileTarget', false, $tsfe->fileTarget);
41  } elseif ($linkDetails['url']) {
42  $linkDetails['type'] = ‪LinkService::TYPE_URL;
43  $target = $target ?: $this->‪resolveTargetAttribute($conf, 'extTarget', true, $tsfe->extTarget);
44  $linkText = $this->‪encodeFallbackLinkTextIfLinkTextIsEmpty($linkText, $linkDetails['url']);
45  $url = $this->‪processUrl(‪UrlProcessorInterface::CONTEXT_EXTERNAL, $linkDetails['url'], $conf);
46  } else {
47  throw new ‪UnableToLinkException('Unknown link detected, so ' . $linkText . ' was not linked.', 1490990031, null, $linkText);
48  }
49  return [$url, $linkText, $target];
50  }
51 }
‪TYPO3\CMS\Frontend\Http\UrlProcessorInterface
Definition: UrlProcessorInterface.php:24
‪TYPO3\CMS\Frontend\Http\UrlProcessorInterface\CONTEXT_EXTERNAL
‪const CONTEXT_EXTERNAL
Definition: UrlProcessorInterface.php:28
‪TYPO3\CMS\Frontend\Http\UrlProcessorInterface\CONTEXT_FILE
‪const CONTEXT_FILE
Definition: UrlProcessorInterface.php:26