Exemplo n.º 1
0
    //filename is a correct image file name
    errorMsg("File name is incorrect!");
}
$theme_name = rad_themer::getCurrentTheme();
$originalFile = rad_themer::getFilePath($theme_name, 'img', $module, $filename);
if (!$originalFile) {
    errorMsg("File does not exist!");
}
$resizedFile = $config['rootPath'] . 'cache' . DS . 'img' . DS . $theme_name . DS . $module . DS . $preset . DS . $filename;
$resizedPath = dirname($resizedFile);
if (!recursive_mkdir($resizedPath, 0777)) {
    errorMsg("Can not create dir! Path: {$resizedPath}");
}
if (!file_exists($resizedFile) || time() - filemtime($resizedFile) >= (int) $config['cache.power.time']) {
    $img = new rad_gd_image();
    if ($img->set($originalFile, $resizedFile, $preset)) {
        $r = $img->resize();
        if (!$r) {
            errorMsg($img->getError());
        }
    } else {
        errorMsg($img->getError());
    }
}
switch (rad_gd_image::getFileExtension($resizedFile)) {
    case 'jpg':
    case 'jpeg':
    case 'jpe':
        header('Content-type: image/jpeg');
        break;
    case 'png':
Exemplo n.º 2
0
 function getRemoteImg()
 {
     $url = $this->request('url');
     $url = urldecode($url);
     $filename = md5($url . mktime(0, 0, 0, date("n"), date("j"), date("Y")));
     $fileadr = SMARTYCACHEPATH . $filename;
     $root_path = rad_config::getParam('rootPath');
     $theme_name = rad_config::getParam('theme.default');
     if (empty($theme_name)) {
         $theme_name = 'default';
     }
     $msg = '';
     if ($url and strpos($url, "http") === 0) {
         $opts = array('http' => array('method' => "GET", 'max_redirects' => 5, 'timeout' => 5, 'ignore_errors' => false));
         $context = stream_context_create($opts);
         $i = 3;
         $fileData = NULL;
         //try to recieve image file data 3 times with timeout 5 seconds
         do {
             $header = get_headers($url, 1);
             if (isset($header['Content-Length'])) {
                 $contentLength = (int) $header['Content-Length'];
                 $maxPost = (int) $this->configSys('max_post');
                 if ($contentLength <= $maxPost) {
                     if (!file_exists($fileadr)) {
                         $fileData = @file_get_contents($url, false, $context);
                         if ($fileData) {
                             $i = 0;
                         } else {
                             $i--;
                         }
                     } else {
                         $fileExt = $this->_getImageExtension($fileadr);
                         if ($fileExt) {
                             die(json_encode(array('is_success' => true, 'theme' => $theme_name, 'origname' => $filename, 'filename' => $filename . '.' . $fileExt)));
                         } else {
                             unlink($fileadr);
                             $i--;
                         }
                     }
                 } else {
                     $i = 0;
                     $msg = $this->lang('imagesizetoobig.catalog.error');
                 }
             }
         } while ($i > 0);
         if ($fileData) {
             // if file data recieved, put it on the server into temp folder
             $hFile = fopen($fileadr, 'w');
             if ($hFile) {
                 fputs($hFile, $fileData);
                 flush();
                 fclose($hFile);
                 $fileExt = $this->_getImageExtension($fileadr);
                 if ($fileExt) {
                     $resizedFile = $root_path . 'cache' . DS . 'img' . DS . $theme_name . DS . 'corecatalog' . DS . 'product_thumb' . DS . $filename . '.' . $fileExt;
                     $resizedPath = dirname($resizedFile);
                     if (recursive_mkdir($resizedPath, 0777)) {
                         $gdImg = new rad_gd_image();
                         if ($gdImg->set($fileadr, $resizedFile, 'product_thumb')) {
                             $r = $gdImg->resize();
                             if ($r) {
                                 die(json_encode(array('is_success' => true, 'theme' => $theme_name, 'origname' => $filename, 'filename' => $filename . '.' . $fileExt)));
                             } else {
                                 unlink($fileadr);
                                 $msg = $gdImg->getError();
                             }
                         } else {
                             unlink($fileadr);
                             $msg = $gdImg->getError();
                         }
                     } else {
                         unlink($fileadr);
                         $msg = "Can not create dir! Path: {$resizedPath}";
                     }
                 } else {
                     unlink($fileadr);
                     $msg = $this->lang('wrongfiledata.catalog.error');
                 }
             } else {
                 $msg = $this->lang('cannotcreatefile.catalog.error');
             }
         }
     } else {
         $msg = $this->lang('wrongimageurl.catalog.error');
     }
     die(json_encode(array('is_success' => false, 'msg' => $msg)));
 }