src/Controller/DefaultController.php line 26

Open in your IDE?
  1. <?php
  2. /**
  3.  * Pimcore
  4.  *
  5.  * This source file is available under two different licenses:
  6.  * - GNU General Public License version 3 (GPLv3)
  7.  * - Pimcore Enterprise License (PEL)
  8.  * Full copyright and license information is available in
  9.  * LICENSE.md which is distributed with this source code.
  10.  *
  11.  *  @copyright  Copyright (c) Pimcore GmbH (http://www.pimcore.org)
  12.  *  @license    http://www.pimcore.org/license     GPLv3 and PEL
  13.  */
  14. namespace App\Controller;
  15. use Pimcore\Model\Asset;
  16. use App\Website\Tool\Text;
  17. use Pimcore\Controller\Configuration\ResponseHeader;
  18. use Pimcore\Translation\Translator;
  19. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
  20. use Symfony\Component\HttpFoundation\Request;
  21. use Symfony\Component\HttpFoundation\Response;
  22. class DefaultController extends BaseController
  23. {
  24.     /**
  25.      * @Template
  26.      */
  27.     public function defaultAction()
  28.     {
  29.         return [];
  30.     }
  31.     /**
  32.      * Redirect Base URL to Language Directory
  33.      * @param Request $request
  34.      */
  35.     public function languagedirAction(Request $request)
  36.     {
  37.         $available_languages = array (
  38.             'en''de''es''es-419''fr''it''pt''pt-br''tr',
  39.             'es-mx''es-co''es-ar''es-pe''es-ve''es-cl''es-gt''es-ec''es-bo''es-cu''es-do''es-hn''es-py''es-sv''es-ni''es-cr''es-pa''es-uy''es-gq'
  40.         );
  41.         $default_language 'en';
  42.         $strict_mode true;
  43.         /**
  44.          * Country Codes for Spanish speaking Latin American Countries
  45.          * @see https://en.wikipedia.org/wiki/List_of_countries_and_territories_where_Spanish_is_an_official_language
  46.          */
  47.         $eslatam_codes = array ( 'MX''CO''ES''AR''PE''VE''CL''GT''EC''BO''CU''DO''HN''PY''SV''NI''CR''PA''UY''GQ' );
  48.         $ptlatam_codes = array ( 'BR' );
  49.         // Configure defaults
  50.         $preferredLang $default_language;
  51.         $current_q 0;
  52.         // Get Accepted Languages from Browser
  53.         $lang_variable $_SERVER['HTTP_ACCEPT_LANGUAGE'];
  54.         // Convert String to Array
  55.         $accepted_languages preg_split('/,\s*/'$lang_variable);
  56.         // Loop through Accepted Languages
  57.         foreach ($accepted_languages as $accepted_language) {
  58.             // Get all Info about the language
  59.             $res preg_match (
  60.               '/^([a-z]{1,8}(?:-[a-z]{1,8})*)(?:;\s*q=(0(?:\.[0-9]{1,3})?|1(?:\.0{1,3})?))?$/i',
  61.               $accepted_language,
  62.               $matches
  63.             );
  64.             // Ignore if not Valid Syntax?
  65.             if (!$res) {
  66.               continue;
  67.             }
  68.             // Split Language Code into parts
  69.             $lang_code explode ('-'$matches[1]);
  70.             $needle null;
  71.             foreach($lang_code as $i=>$l_code) {
  72.                 if($i === 1) {
  73.                     $needle $l_code;
  74.                 }
  75.             }
  76.             // Was a quality defined?
  77.             if (isset($matches[2])) {
  78.               // Use the quality
  79.               $lang_quality = (float)$matches[2];
  80.             } else {
  81.               // Compatibility mode: assume quality 1
  82.               $lang_quality 1.0;
  83.             }
  84.             // Loop through language codes
  85.             while (count ($lang_code)) {
  86.                 // see if that code is offered as available language
  87.                 if (in_array (strtolower (join ('-'$lang_code)), $available_languages)) {
  88.                     // Check quality
  89.                     if ($lang_quality $current_q) {
  90.                         // Use language
  91.                         $preferredLang strtolower (join ('_'$lang_code)); // Underscore for Pimcore language codes
  92.                         // Do we want Latin American Spanish?
  93.                         if (in_array($needle$eslatam_codes)) {
  94.                             $preferredLang 'es-america-latina';
  95.                         }
  96.                         // Do we want Latin American Portuguese?
  97.                         if (in_array($needle$ptlatam_codes)) {
  98.                             $preferredLang 'pt_BR';
  99.                         }
  100.                         $current_q $lang_quality;
  101.                         // Leave inner while-loop
  102.                         break;
  103.                     }
  104.                 }
  105.                 // Do not minimize language when in strict mode
  106.                 if ($strict_mode) {
  107.                     // Break up inner while-loop
  108.                     break;
  109.                 }
  110.                 // Otherwise, cut off rightmost part of language code
  111.                 $preferredLang array_pop ($lang_code);
  112.             }
  113.         }
  114.         /* Accept Language Header */
  115.         // $preferredLang = $request->getPreferredLanguage(['en', 'de', 'es', 'es-419', 'fr', 'it', 'pt', 'pt-BR', 'tr']);
  116.         return $this->redirect('/'.$preferredLang);
  117.     }
  118.     /**
  119.      * Use Landing Page Template
  120.      * @return Response
  121.      */
  122.     public function landingpageAction()
  123.     {
  124.         return $this->render('cleanfix/layout/landing.html.twig');
  125.     }
  126.     /**
  127.      * Use Product Page Template
  128.      * @return Response
  129.      */
  130.     public function productpageAction()
  131.     {
  132.         return $this->render('cleanfix/layout/product.html.twig');
  133.     }
  134.     /**
  135.      * Use Start Page Template
  136.      * @return Response
  137.      */
  138.     public function startpageAction()
  139.     {
  140.         return $this->render('cleanfix/layout/start.html.twig');
  141.     }
  142.     /**
  143.      * Render Javascript Scroll Jack
  144.      * @param Request $request
  145.      *
  146.      * @return Response
  147.      */
  148.     public function scrolljackJsRenderletAction(Request $request)
  149.     {
  150.         $imagesList = new \Pimcore\Model\Asset\Listing();
  151.         $imagesList->setCondition"parentId = " $request->get('id') );
  152.         $imagesList->load();
  153.         $scrollImages['assets'] = [];
  154.         foreach( $imagesList as $i => $image) {
  155.             if( $i == count$imagesList ) -) {
  156.                 $scrollImages['assets'][$i] = '"' $image->getThumbnail("image")->getPath() . '"';
  157.             } else {
  158.                 $scrollImages['assets'][$i] = '"' $image->getThumbnail("image")->getPath() . '", ';
  159.             }
  160.         }
  161.         $scrollImages['length'] = count($scrollImages['assets']);
  162.         // convert array to string
  163.         $scrollImages['assets'] = implode($scrollImages['assets']);
  164.         // remove html entity masking
  165.         $scrollImages['assets'] = html_entity_decode($scrollImages['assets']);
  166.         return $this->render('default/scrolljack_js_renderlet.html.twig'$scrollImages);
  167.     }
  168. }