Файл: databasr/application/libraries/smarty/plugins/function.shop.php
Строк: 92
<?php
function smarty_function_shop($params, &$smarty)
{
if (!function_exists('current_url')) {
if (!function_exists('get_instance')) {
$smarty->trigger_error("url: Cannot load CodeIgniter");
return;
}
$CI = &get_instance();
$CI->load->helper('url');
}
// Frontend product links
if(isset($params['productId']) && !empty($params['productId'])) {
$CI = &get_instance();
$CI->load->model('shop_articles_model');
$product = $CI->shop_articles_model->byId($params['productId']);
// SEO Route
if(!empty($product['seo'])) {
// check if seo route exists
$exists = $CI->routes->trace($product['seo']);
if($exists) {
return site_url([$product['seo']]);
}
}
// Fallback route if seo not exists
$route = array('articles', 'view', $product->id);
return site_url($route);
}
// Frontend listing links
if(isset($params['catId']) && !empty($params['catId'])) {
$CI = &get_instance();
// Breadcrumb Menu
$node = $CI->shop->categories->getNodeById($params['catId']);
$breadcrumb = $CI->shop->categories->buildBreadcrumbByNode($node);
$breadcrumbRoute = "";
foreach($breadcrumb as $breadcrumb) {
$breadcrumbRoute = $breadcrumbRoute . '/' . $breadcrumb['seo'];
}
return site_url($breadcrumbRoute);
}
// Frontend image
if(isset($params['mode']) && $params['mode'] == "image") {
$CI = &get_instance();
$media = $CI->media->byId($params['mediaId']);
return base_url($media['fullpath']);
}
if(isset($params['mode']) && $params['mode'] == "thumbnail") {
// Check if thumbs folder exists
if(!is_dir('media/img/thumbs')) mkdir('media/img/thumbs');
$CI = &get_instance();
$media = $CI->media->byId($params['mediaId']);
$width = $params['width'] ?: 500;
$height = $params['height'];
// Check image auto scaling
$ratio = $CI->settings->get('theme-thumbs-ratio');
if(!$height && !empty($ratio)) {
$ratioArray = explode(':', $ratio);
if(count($ratioArray) == 2) {
$height = ($width / $ratioArray[0]) * $ratioArray[1];
$height = round($height);
}
}
if(!isset($height)) {
$height = $params['height'] ?: 500;
}
// check if user zoom is set
if(isset($params['crop']) && isset($media['x1']) && isset($media['x2']) && isset($media['y1']) && isset($media['y2'])) {
// generate unique file path
$filepath = 'media/img/thumbs/' . $width . $height . (int) $media['x1'] . (int) $media['y1'] . (int) $media['x2'] . (int) $media['y2'] . $media['file'];
if(file_exists($filepath)) {
return base_url($filepath);
}
$CI->load->library('image');
if(!is_file($media['fullpath'])) {
return;
}
$CI->image->load($media['fullpath']);
$CI->image->crop($media['x1'], $media['y1'], $media['x2'], $media['y2']);
$CI->image->save($filepath);
return base_url($filepath);
}
// check for user template no-images
$frontendTemplate = $CI->settings->get('template-frontend');
if(!file_exists($media['fullpath']) && file_exists("templates/frontend/{$frontendTemplate}/images/holder/{$width}x{$height}.jpg")) {
return base_url("templates/frontend/{$frontendTemplate}/images/holder/{$width}x{$height}.jpg");
}
if(!$media || !file_exists($media['fullpath'])) {
return "http://placehold.it/{$width}x{$height}/E6E6E6/&text=kein+Bild";
}
$thumbnailPath = 'media/img/thumbs/' . $width . '_' . $height . '_' . $media['file'];
// force regenerate watermark image
$watermark = $CI->settings->get('watermark');
if(isset($params['watermark']) && $params['watermark'] && isset($watermark)) {
$thumbnailPath = 'media/img/thumbs/' . $width . '_' . $height . '_' . '1' . $media['file'];
}
if(!file_exists($thumbnailPath)) {
$CI->load->library('image');
if(!is_file($media['fullpath'])) {
return;
}
$CI->image->load($media['fullpath']);
$watermark = $CI->settings->get('watermark');
if(isset($params['watermark']) && $params['watermark'] && isset($watermark)) {
$CI->image->overlay($watermark, 'center center', .3, 0, 0);
}
$CI->image->thumbnail($width, $height);
$CI->image->save($thumbnailPath);
}
if(!file_exists($thumbnailPath)) {
return base_url($media['fullpath']);
}
return base_url($thumbnailPath);
}
if(isset($params['mode']) && $params['mode'] == "current") {
return current_url();
}
}