Файл: 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();
    }
}