| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- <?php
- namespace Opentalent\OtOptimizer\XClass\Core\Site;
- use Opentalent\OtCore\Exception\NoSuchWebsiteException;
- use Opentalent\OtCore\Website\OtWebsiteRepository;
- use TYPO3\CMS\Core\Exception\SiteNotFoundException;
- use TYPO3\CMS\Core\Site\Entity\Site;
- use TYPO3\CMS\Core\Utility\GeneralUtility;
- use TYPO3\CMS\Extbase\Object\ObjectManager;
- class SiteFinder extends \TYPO3\CMS\Core\Site\SiteFinder
- {
- private $fallback;
- /**
- * Fetches all existing configurations as Site objects
- */
- public function __construct($siteConfiguration = null, $fallback = true)
- {
- $this->fallback = $fallback;
- if ($this->fallback) {
- parent::__construct($siteConfiguration);
- }
- }
- /**
- * Find a site by given root page id
- *
- * @param int $rootPageId the page ID (default language)
- * @return Site
- * @throws SiteNotFoundException
- * @internal only for usage in some places for managing Site Configuration, might be removed without further notice
- */
- public function getSiteByRootPageId(int $rootPageId): Site
- {
- if ($this->fallback) {
- return parent::getSiteByRootPageId($rootPageId);
- }
- $otWebsiteRepository = GeneralUtility::makeInstance(ObjectManager::class)->get(OtWebsiteRepository::class);
- try {
- $website = $otWebsiteRepository->getWebsiteByPageUid($rootPageId);
- return $otWebsiteRepository->generateWebsiteConfiguration($website);
- } catch (NoSuchWebsiteException $e) {
- throw new SiteNotFoundException('No site found for root page id ' . $rootPageId, 1521668882);
- }
- }
- /**
- * Find a site by given identifier
- *
- * @param string $identifier
- * @return Site
- * @throws SiteNotFoundException
- */
- public function getSiteByIdentifier(string $identifier): Site
- {
- if ($this->fallback) {
- return parent::getSiteByIdentifier($identifier);
- }
- $otWebsiteRepository = GeneralUtility::makeInstance(ObjectManager::class)->get(OtWebsiteRepository::class);
- try {
- $website = $otWebsiteRepository->getWebsiteByConfigIdentifier($identifier);
- return $otWebsiteRepository->generateWebsiteConfiguration($website);
- } catch (NoSuchWebsiteException $e) {
- throw new SiteNotFoundException('No site found for identifier ' . $identifier, 1521716628);
- }
- }
- /**
- *
- *
- * @param int $pageId
- * @param array $rootLine
- * @param string|null $mountPointParameter
- * @return Site
- * @throws SiteNotFoundException
- */
- public function getSiteByPageId(int $pageId, array $rootLine = null, string $mountPointParameter = null): Site
- {
- if ($this->fallback) {
- return parent::getSiteByPageId($pageId, $rootLine, $mountPointParameter);
- }
- $otWebsiteRepository = GeneralUtility::makeInstance(ObjectManager::class)->get(OtWebsiteRepository::class);
- try {
- $website = $otWebsiteRepository->getWebsiteByPageUid($pageId);
- return $otWebsiteRepository->generateWebsiteConfiguration($website);
- } catch (NoSuchWebsiteException $e) {
- throw new SiteNotFoundException('No site found in root line of page ' . $pageId, 1521716622);
- }
- }
- }
|