src/Controller/SnippetController.php line 21

Open in your IDE?
  1. <?php
  2. /**
  3.  * w-vision AG.
  4.  *
  5.  * LICENSE
  6.  *
  7.  * For the full copyright and license information, please view the LICENSE.md
  8.  * file that is distributed with this source code.
  9.  *
  10.  * @copyright Copyright (c) 2023 w-vision AG. (https://www.w-vision.ch)
  11.  */
  12. namespace App\Controller;
  13. use Carbon\Carbon;
  14. use Exception;
  15. use Pimcore\Config\Config;
  16. use Pimcore\Model\DataObject;
  17. use Symfony\Component\HttpFoundation\Response;
  18. class SnippetController extends FrontendController
  19. {
  20.     /**
  21.      * @param Config $websiteConfig
  22.      *
  23.      * @return Response
  24.      *
  25.      * @throws Exception
  26.      */
  27.     public function footerAction(Config $websiteConfig): Response
  28.     {
  29.         $siteID $this->document->getProperty('siteId');
  30.         $now Carbon::now();
  31.         $news = new DataObject\News\Listing();
  32.         $news->setOrderKey('date');
  33.         $news->setOrder('desc');
  34.         $news->setCondition('stores LIKE :store', [
  35.             'store' => '%,' $siteID ',%',
  36.         ]);
  37.         $events = new DataObject\Event\Listing();
  38.         $events->setOrderKey('date');
  39.         $events->setOrder('asc');
  40.         $events->setCondition('dateTo >= :dateNow AND stores LIKE :store AND (hideInList IS NULL OR hideInList = 0)', [
  41.             'dateNow' => $now->getTimestamp(),
  42.             'store' => '%,' $siteID ',%',
  43.         ]);
  44.         return $this->renderTemplate('snippet/footer.html.twig', [
  45.             'socialMedia' => $this->getSocialMediaPlatforms($websiteConfig),
  46.             'news' => $news,
  47.             'events' => $events,
  48.         ]);
  49.     }
  50.     /**
  51.      * @return Response
  52.      */
  53.     public function teaserAction(): Response
  54.     {
  55.         return $this->renderTemplate('snippet/teaser.html.twig');
  56.     }
  57.     /**
  58.      * @param Config $websiteConfig
  59.      *
  60.      * @return Response
  61.      */
  62.     public function navFooterAction(Config $websiteConfig): Response
  63.     {
  64.         return $this->renderTemplate('snippet/navigation.html.twig', [
  65.             'socialMedia' => $this->getSocialMediaPlatforms($websiteConfig),
  66.         ]);
  67.     }
  68.     /**
  69.      * @param Config $websiteConfig
  70.      *
  71.      * @return array
  72.      */
  73.     private function getSocialMediaPlatforms(Config $websiteConfig): array
  74.     {
  75.         $allowedPlatforms = [
  76.             '500px''behance''dribbble''facebook''flickr''foursquare''github''gitter''google',
  77.             'instagram''linkedin''pinterest''soundcloud''tripadvisor''tumblr''twitter''vimeo',
  78.             'whatsapp''xing''yelp''youtube',
  79.         ];
  80.         $socialMedia = [];
  81.         foreach ($websiteConfig->toArray() as $item => $value) {
  82.             if (empty($value) || !in_array($item$allowedPlatformstrue)) {
  83.                 continue;
  84.             }
  85.             $socialMedia[$item] = $value;
  86.         }
  87.         return $socialMedia;
  88.     }
  89. }