‪TYPO3CMS  ‪main
FileOrFolderLinkBuilder.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 
27 {
28  public function ‪build(array &$linkDetails, string $linkText, string $target, array $conf): ‪LinkResultInterface
29  {
30  $fileOrFolderObject = ($linkDetails['file'] ?? false) ?: ($linkDetails['folder'] ?? null);
31  // check if the file exists or if a / is contained (same check as in detectLinkType)
32  if (!($fileOrFolderObject instanceof ‪FileInterface) && !($fileOrFolderObject instanceof ‪Folder)) {
33  throw new ‪UnableToLinkException(
34  'File "' . $linkDetails['typoLinkParameter'] . '" did not exist, so "' . $linkText . '" was not linked.',
35  1490989449,
36  null,
37  $linkText
38  );
39  }
40  $linkLocation = $fileOrFolderObject->getPublicUrl();
41  if ($linkLocation === null) {
42  // set the linkLocation to an empty string if null,
43  // so it does not collide with the various string functions
44  $linkLocation = '';
45  }
46  // Setting title if blank value to link
47  $linkText = $this->‪encodeFallbackLinkTextIfLinkTextIsEmpty($linkText, rawurldecode($linkLocation));
48  ‪$url = $linkLocation;
49  if (!empty($linkDetails['fragment'])) {
50  ‪$url .= '#' . $linkDetails['fragment'];
51  }
52  return (new LinkResult($linkDetails['type'], $this->‪forceAbsoluteUrl(‪$url, $conf)))
53  ->withTarget($target ?: $this->‪resolveTargetAttribute($conf, 'fileTarget'))
54  ->withLinkText($linkText);
55  }
56 }
‪TYPO3\CMS\Core\Resource\FileInterface
Definition: FileInterface.php:26
‪TYPO3\CMS\Core\Resource\Folder
Definition: Folder.php:38
‪TYPO3\CMS\Webhooks\Message\$url
‪identifier readonly UriInterface $url
Definition: LoginErrorOccurredMessage.php:36