<?php
/**
* Pimcore
*
* This source file is available under two different licenses:
* - GNU General Public License version 3 (GPLv3)
* - Pimcore Enterprise License (PEL)
* Full copyright and license information is available in
* LICENSE.md which is distributed with this source code.
*
* @copyright Copyright (c) Pimcore GmbH (http://www.pimcore.org)
* @license http://www.pimcore.org/license GPLv3 and PEL
*/
namespace App\Controller;
use Pimcore\Model\Asset;
use App\Website\Tool\Text;
use Pimcore\Controller\Configuration\ResponseHeader;
use Pimcore\Translation\Translator;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
class DefaultController extends BaseController
{
/**
* @Template
*/
public function defaultAction()
{
return [];
}
/**
* Redirect Base URL to Language Directory
* @param Request $request
*/
public function languagedirAction(Request $request)
{
$available_languages = array (
'en', 'de', 'es', 'es-419', 'fr', 'it', 'pt', 'pt-br', 'tr',
'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'
);
$default_language = 'en';
$strict_mode = true;
/**
* Country Codes for Spanish speaking Latin American Countries
* @see https://en.wikipedia.org/wiki/List_of_countries_and_territories_where_Spanish_is_an_official_language
*/
$eslatam_codes = array ( 'MX', 'CO', 'ES', 'AR', 'PE', 'VE', 'CL', 'GT', 'EC', 'BO', 'CU', 'DO', 'HN', 'PY', 'SV', 'NI', 'CR', 'PA', 'UY', 'GQ' );
$ptlatam_codes = array ( 'BR' );
// Configure defaults
$preferredLang = $default_language;
$current_q = 0;
// Get Accepted Languages from Browser
$lang_variable = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
// Convert String to Array
$accepted_languages = preg_split('/,\s*/', $lang_variable);
// Loop through Accepted Languages
foreach ($accepted_languages as $accepted_language) {
// Get all Info about the language
$res = preg_match (
'/^([a-z]{1,8}(?:-[a-z]{1,8})*)(?:;\s*q=(0(?:\.[0-9]{1,3})?|1(?:\.0{1,3})?))?$/i',
$accepted_language,
$matches
);
// Ignore if not Valid Syntax?
if (!$res) {
continue;
}
// Split Language Code into parts
$lang_code = explode ('-', $matches[1]);
$needle = null;
foreach($lang_code as $i=>$l_code) {
if($i === 1) {
$needle = $l_code;
}
}
// Was a quality defined?
if (isset($matches[2])) {
// Use the quality
$lang_quality = (float)$matches[2];
} else {
// Compatibility mode: assume quality 1
$lang_quality = 1.0;
}
// Loop through language codes
while (count ($lang_code)) {
// see if that code is offered as available language
if (in_array (strtolower (join ('-', $lang_code)), $available_languages)) {
// Check quality
if ($lang_quality > $current_q) {
// Use language
$preferredLang = strtolower (join ('_', $lang_code)); // Underscore for Pimcore language codes
// Do we want Latin American Spanish?
if (in_array($needle, $eslatam_codes)) {
$preferredLang = 'es-america-latina';
}
// Do we want Latin American Portuguese?
if (in_array($needle, $ptlatam_codes)) {
$preferredLang = 'pt_BR';
}
$current_q = $lang_quality;
// Leave inner while-loop
break;
}
}
// Do not minimize language when in strict mode
if ($strict_mode) {
// Break up inner while-loop
break;
}
// Otherwise, cut off rightmost part of language code
$preferredLang = array_pop ($lang_code);
}
}
/* Accept Language Header */
// $preferredLang = $request->getPreferredLanguage(['en', 'de', 'es', 'es-419', 'fr', 'it', 'pt', 'pt-BR', 'tr']);
return $this->redirect('/'.$preferredLang);
}
/**
* Use Landing Page Template
* @return Response
*/
public function landingpageAction()
{
return $this->render('cleanfix/layout/landing.html.twig');
}
/**
* Use Product Page Template
* @return Response
*/
public function productpageAction()
{
return $this->render('cleanfix/layout/product.html.twig');
}
/**
* Use Start Page Template
* @return Response
*/
public function startpageAction()
{
return $this->render('cleanfix/layout/start.html.twig');
}
/**
* Render Javascript Scroll Jack
* @param Request $request
*
* @return Response
*/
public function scrolljackJsRenderletAction(Request $request)
{
$imagesList = new \Pimcore\Model\Asset\Listing();
$imagesList->setCondition( "parentId = " . $request->get('id') );
$imagesList->load();
$scrollImages['assets'] = [];
foreach( $imagesList as $i => $image) {
if( $i == count( $imagesList ) -1 ) {
$scrollImages['assets'][$i] = '"' . $image->getThumbnail("image")->getPath() . '"';
} else {
$scrollImages['assets'][$i] = '"' . $image->getThumbnail("image")->getPath() . '", ';
}
}
$scrollImages['length'] = count($scrollImages['assets']);
// convert array to string
$scrollImages['assets'] = implode($scrollImages['assets']);
// remove html entity masking
$scrollImages['assets'] = html_entity_decode($scrollImages['assets']);
return $this->render('default/scrolljack_js_renderlet.html.twig', $scrollImages);
}
}