Файл: databasr/application/libraries/smarty/plugins/function.media.php
Строк: 67
<?php
function smarty_function_media($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');
    }
    // Check if thumbs folder exists
    if(!is_dir('media')) mkdir('media');
    if(!is_dir('media/img')) mkdir('media/img');
    if(!is_dir('media/img/thumbs')) mkdir('media/img/thumbs');
    $CI = &get_instance();
    $media = $CI->media->byId($params['id']);
    $width = $params['width'] ?: 500;
    $height = $params['height'] ?: 500;
    // check for user template no-images
    $frontendTemplate = $CI->settings->get('template-frontend');
    if(!$media || !file_exists($media['fullpath'])) {
        $holder = $CI->settings->get('shop-article-image-placeholder');
        if(!empty($holder)) {
            return base_url($holder);
        }
        return base_url("templates/frontend/{$frontendTemplate}/images/holder/600x400.jpg");
    }
    $thumbnailPath = 'media/img/thumbs/' . $width . 'x' . $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 . 'x' . $height . '_' . '1' . $media['file'];
    }
    if(file_exists($thumbnailPath)) {
        return base_url($thumbnailPath);
    }
    // Generate thumbnail if not exists
    $CI->load->library('image');
    $CI->image->load($media['fullpath']);
    // Generate overlay if setting is enabled
    $watermark = $CI->settings->get('watermark');
    if(isset($params['watermark']) && $params['watermark'] && isset($watermark)) {
        $CI->image->overlay($watermark, 'center center', .3, 0, 0);
    }
    // Check if image fix scaling is available
    $forceRatioBasedThumbnails = false;
    $ratio = $CI->settings->get('theme-thumbs-ratio');
    if(!empty($ratio)) {
        $ratioArray = explode(':', $ratio);
        if(count($ratioArray) == 2) {
            $height = ($width / $ratioArray[0]) * $ratioArray[1];
            $height = round($height);
        }
        if($height > 0) {
            $forceRatioBasedThumbnails = true;
        }
    }
    if(isset($params['fix']) || $forceRatioBasedThumbnails) {
        $CI->image->thumbnail($width, $height);
    } else {
        $CI->image->best_fit($width, $height);
    }
    $CI->image->save($thumbnailPath);
    // Return original image if thumbnail could not been saved
    if(!file_exists($thumbnailPath)) {
        return base_url($media['fullpath']);
    }
    return base_url($thumbnailPath);
}