‪TYPO3CMS  10.4
LegacyLinkBuilder.php
Go to the documentation of this file.
1 <?php
2 
3 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  */
17 
19 
22 
28 {
32  public function ‪build(array &$linkDetails, string $linkText, string $target, array $conf): array
33  {
34  $tsfe = $this->‪getTypoScriptFrontendController();
35  if ($linkDetails['file']) {
36  $linkDetails['type'] = ‪LinkService::TYPE_FILE;
37  $linkLocation = $linkDetails['file'];
38  // Setting title if blank value to link
39  $linkText = $this->‪encodeFallbackLinkTextIfLinkTextIsEmpty($linkText, rawurldecode($linkLocation));
40  $linkLocation = (strpos($linkLocation, '/') !== 0 ? $tsfe->absRefPrefix : '') . $linkLocation;
41  $url = $this->‪processUrl(‪UrlProcessorInterface::CONTEXT_FILE, $linkLocation, $conf) ?? '';
42  $url = $this->‪forceAbsoluteUrl($url, $conf);
43  $target = $target ?: $this->‪resolveTargetAttribute($conf, 'fileTarget', false, $tsfe->fileTarget);
44  } elseif ($linkDetails['url']) {
45  $linkDetails['type'] = ‪LinkService::TYPE_URL;
46  $target = $target ?: $this->‪resolveTargetAttribute($conf, 'extTarget', true, $tsfe->extTarget);
47  $linkText = $this->‪encodeFallbackLinkTextIfLinkTextIsEmpty($linkText, $linkDetails['url']);
48  $url = $this->‪processUrl(‪UrlProcessorInterface::CONTEXT_EXTERNAL, $linkDetails['url'], $conf);
49  } else {
50  throw new ‪UnableToLinkException('Unknown link detected, so ' . $linkText . ' was not linked.', 1490990031, null, $linkText);
51  }
52  return [$url, $linkText, $target];
53  }
54 }
‪TYPO3\CMS\Frontend\Http\UrlProcessorInterface
Definition: UrlProcessorInterface.php:27
‪TYPO3\CMS\Frontend\Http\UrlProcessorInterface\CONTEXT_EXTERNAL
‪const CONTEXT_EXTERNAL
Definition: UrlProcessorInterface.php:31
‪TYPO3\CMS\Frontend\Http\UrlProcessorInterface\CONTEXT_FILE
‪const CONTEXT_FILE
Definition: UrlProcessorInterface.php:29