Пример #1
0
 /**
  * action show
  *
  * @return void
  */
 public function showAction()
 {
     // define some variables
     $recursive = (int) $this->settings['recursive'] < 10 ? (int) $this->settings['recursive'] : 10;
     // try to get all root-page-uids
     if ($this->settings['pages']) {
         $rootpageUids = \TYPO3\CMS\Extbase\Utility\ArrayUtility::integerExplode(",", $this->settings['pages']);
     } else {
         $rootpageUids = array($GLOBALS['TSFE']->id);
     }
     switch ($this->settings['layout']) {
         case "overview_from_directory":
         case "overview_from_directory_small":
             $queryGenerator = $this->objectManager->get('TYPO3\\CMS\\Core\\Database\\QueryGenerator');
             $pagesArr = array();
             $i = 0;
             foreach ($rootpageUids as $rootpageUid) {
                 $pageUidStr = $queryGenerator->getTreeList($rootpageUid, $recursive, 0, " doktype IN (1,2,3,4)");
                 if ($pageUidStr) {
                     $pagesArr = array_merge($pagesArr, \TYPO3\CMS\Extbase\Utility\ArrayUtility::integerExplode(",", $pageUidStr));
                 }
                 // remove rootpageUid
                 foreach (array_keys($pagesArr, $rootpageUid, false) as $key) {
                     unset($pagesArr[$key]);
                 }
             }
             // find the pages
             $pages = $this->pageRepository->findByUidArray(array_unique($pagesArr), "sorting");
             $this->view->assign("pages", $pages);
             $this->view->assign("current", $GLOBALS['TSFE']->id);
             return $this->view->render();
             break;
     }
     return "";
 }
 /**
  * action list
  *
  * @return void
  */
 public function listAction()
 {
     // find the locations
     $uidList = \TYPO3\CMS\Extbase\Utility\ArrayUtility::integerExplode(",", $this->settings['GoogleMap']['locationUidList']);
     $locations = array();
     if (count($uidList)) {
         foreach ($uidList as $uid) {
             $location = $this->locationRepository->findByUid($uid);
             if ($location) {
                 $locations[] = $location;
             }
         }
     }
     // calculate the center of the map
     $averageLatitude = 0;
     $averageLongitude = 0;
     if (count($locations)) {
         $validLocations = array();
         foreach ($locations as $location) {
             if (is_numeric($location->getLatitude()) && is_numeric($location->getLongitude())) {
                 $averageLatitude += $location->getLatitude();
                 $averageLongitude += $location->getLongitude();
                 $validLocations[] = $location;
             }
         }
         if (count($validLocations)) {
             $averageLatitude = $averageLatitude / count($validLocations);
             $averageLongitude = $averageLongitude / count($validLocations);
         }
         $locations = $validLocations;
         unset($validLocations);
     }
     // add JavaScript and Stylesheets
     $this->addStylesheetFiles($this->settings['GoogleMap']['Stylesheets']);
     $this->addJavaScriptFiles($this->settings['GoogleMap']['JavaScript']);
     $this->view->assignMultiple(array('locations' => $locations, 'latitude' => $averageLatitude, 'longitude' => $averageLongitude, 'data' => $this->configurationManager->getContentObject()->data));
 }
Пример #3
0
 /**
  * Returns all pages in $page
  *
  * @param string $uidList
  * @param string $order
  * @return \TYPO3\CMS\Extbase\Persistence\QueryResult<\LBR\LbrSitemap\Domain\Model\Page>
  * @deprecated Use $this->findByUidArray() instead
  */
 public function findByUidList($uidList, $order = "title")
 {
     return $this->findByUidArray(\TYPO3\CMS\Extbase\Utility\ArrayUtility::integerExplode(",", $uidList), $order);
 }
Пример #4
0
 /**
  * action xml
  * @throws \Exception
  * @return string XML
  * @todo Check and implement the correct crdate/lastmod of content elements in translations.
  */
 public function xmlAction()
 {
     if (isset($this->settings['rootpageUids']) === FALSE || is_array($this->settings['rootpageUids']) === FALSE) {
         throw new \Exception("You have to define settings.rootpageUids with the keys uid and depth!", 1458210595);
     }
     $dokTypes = \TYPO3\CMS\Extbase\Utility\ArrayUtility::integerExplode(",", $this->settings['dokTypes']);
     if (!count($dokTypes)) {
         throw new \Exception("You have to define settings.dokTypes! (almost: 1,2)", 1458210596);
     }
     // define some variables
     $uriBuilder = $this->controllerContext->getUriBuilder();
     $queryGenerator = $this->objectManager->get('TYPO3\\CMS\\Core\\Database\\QueryGenerator');
     // find the pages
     $pagesArr = array();
     $i = 0;
     foreach ($this->settings['rootpageUids'] as $rootpageConfiguration) {
         if (isset($rootpageConfiguration['uid']) && isset($rootpageConfiguration['depth'])) {
             $pagesUidStr = $queryGenerator->getTreeList((int) $rootpageConfiguration['uid'], (int) $rootpageConfiguration['depth'], 0, " doktype IN (" . implode(",", $dokTypes) . ")");
             if ($pagesUidStr) {
                 $pagesArr = array_merge($pagesArr, \TYPO3\CMS\Extbase\Utility\ArrayUtility::integerExplode(",", $pagesUidStr));
             }
         }
     }
     // find the pages
     $pages = $this->pageRepository->findByUidArray(array_unique($pagesArr));
     // build xml
     $builtUris = [];
     $xml = '<?xml version="1.0" encoding="UTF-8"?>';
     $xml .= PHP_EOL . '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"';
     $xml .= PHP_EOL . '	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"';
     $xml .= PHP_EOL . '	xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">';
     foreach ($pages as $page) {
         // if ($page->isNavHide () || $page->isHideinxml () || $page->getDoktype () == 4) {
         if ($page->isHideinxml() || $page->getDoktype() == 4) {
             continue;
         }
         // location
         $uriBuilder->reset();
         $uriBuilder->setCreateAbsoluteUri(true);
         $uriBuilder->setTargetPageUid($page->getUid());
         $uri = $uriBuilder->build();
         if (in_array($uri, $builtUris)) {
             continue;
         }
         $builtUris[] = $uri;
         $xml .= PHP_EOL . '	<url>';
         $xml .= PHP_EOL . '		<loc>' . htmlentities($uri, ENT_XML1, "UTF-8") . '</loc>';
         // lastmod
         $latestContentElement = $this->contentRepository->findOneLatest($page);
         if ($latestContentElement && $latestContentElement->getTstamp()) {
             $xml .= PHP_EOL . '		<lastmod>' . $latestContentElement->getTstamp()->format("c") . '</lastmod>';
         } else {
             if ($page->getTstamp()) {
                 $xml .= PHP_EOL . '		<lastmod>' . $page->getTstamp()->format("c") . '</lastmod>';
             }
         }
         unset($latestContentElement);
         // changefreq
         if ($page->getChangefreq()) {
             $xml .= PHP_EOL . '		<changefreq>' . $page->getChangefreq() . '</changefreq>';
         }
         // priority
         if ($page->getPriority()) {
             $xml .= PHP_EOL . '		<priority>' . $page->getPriority() . '</priority>';
         }
         $xml .= PHP_EOL . '	</url>';
     }
     $additionalLanguages = \TYPO3\CMS\Extbase\Utility\ArrayUtility::integerExplode(",", $this->settings['additionalLanguages']);
     if (count($additionalLanguages)) {
         foreach ($additionalLanguages as $additionalLanguage) {
             // find the pages
             $pagesTranslation = $this->pageTranslationRepository->findByPidArray(array_unique($pagesArr), $additionalLanguage);
             foreach ($pagesTranslation as $page) {
                 // if ($page->isNavHide () || $page->isHideinxml () || $page->getDoktype () == 4) {
                 if ($page->isHideinxml() || $page->getDoktype() == 4) {
                     continue;
                 }
                 // location
                 $uriBuilder->reset();
                 $uriBuilder->setCreateAbsoluteUri(true);
                 $uriBuilder->setTargetPageUid($page->getPid());
                 $uriBuilder->setArguments(["L" => $additionalLanguage]);
                 $uri = $uriBuilder->build();
                 if (in_array($uri, $builtUris)) {
                     continue;
                 }
                 $builtUris[] = $uri;
                 $xml .= PHP_EOL . '	<url>';
                 $xml .= PHP_EOL . '		<loc>' . htmlentities($uri, ENT_XML1, "UTF-8") . '</loc>';
                 // lastmod
                 $latestContentElement = $this->contentRepository->findOneLatest($page);
                 if ($latestContentElement && $latestContentElement->getTstamp()) {
                     $xml .= PHP_EOL . '		<lastmod>' . $latestContentElement->getTstamp()->format("c") . '</lastmod>';
                 } else {
                     if ($page->getTstamp()) {
                         $xml .= PHP_EOL . '		<lastmod>' . $page->getTstamp()->format("c") . '</lastmod>';
                     }
                 }
                 unset($latestContentElement);
                 // changefreq
                 if ($page->getChangefreq()) {
                     $xml .= PHP_EOL . '		<changefreq>' . $page->getChangefreq() . '</changefreq>';
                 }
                 // priority
                 if ($page->getPriority()) {
                     $xml .= PHP_EOL . '		<priority>' . $page->getPriority() . '</priority>';
                 }
                 $xml .= PHP_EOL . '	</url>';
             }
         }
     }
     $xml .= PHP_EOL . '</urlset>';
     $xml .= PHP_EOL . '<!-- count: ' . count($builtUris) . ' URI -->';
     return $xml;
 }
Пример #5
0
 /**
  * @test
  */
 public function integerExplodeReturnsZeroForStringValues()
 {
     $inputString = '1,abc,3,,5';
     $expected = array(1, 0, 3, 0, 5);
     $this->assertSame($expected, \TYPO3\CMS\Extbase\Utility\ArrayUtility::integerExplode(',', $inputString));
 }