예제 #1
0
파일: utils.lib.php 프로젝트: romlg/cms36
function GetUploadedFile($file, $file_name, $file_dir = 'files', $resample = 0, $quality = '85')
{
    if (!is_writable($file_dir)) {
        die(str('e_not_writable') . " (" . $file_dir . ")");
    }
    $file_dir = preg_replace("~(/\$)~", "", $file_dir);
    $file_name = GetPureName($file_name);
    if ($file) {
        if (!$resample || 1) {
            # find first unexisting filename
            $counter = 0;
            $dot = strrpos($file_name, '.');
            $fbase = substr($file_name, 0, $dot);
            $fext = substr($file_name, $dot);
            while (is_file($file_dir . '/' . $file_name)) {
                $counter++;
                $file_name = $fbase . "_" . $counter . $fext;
            }
        }
        @move_uploaded_file($file, $file_dir . '/' . $file_name) or die(str('e_upload') . " (" . $file_dir . "/" . $file_name . ")");
        @chmod($file_dir . '/' . $file_name, 0775);
        # resample image
        if ($resample) {
            return ResampleImage($file_dir, $file_name, $resample, $quality);
        } else {
            return $file_name;
        }
    }
}
예제 #2
0
파일: functions.php 프로젝트: romlg/cms36
function downloadFiles2($files, $idarr, $name, $fieldname, $dir, $choose, $resample_size = array(), $quality = 85, $delete = false)
{
    $images = $photo_arr = array();
    $change1 = array('а', 'б', 'в', 'г', 'д', 'е', 'ё', 'ж', 'з', 'и', 'й', 'к', 'л', 'м', 'н', 'о', 'п', 'р', 'с', 'т', 'у', 'ф', 'х', 'ц', 'ч', 'ш', 'щ', 'ъ', 'ы', 'ь', 'э', 'ю', 'я', ' ');
    $change2 = array('a', 'b', 'v', 'g', 'd', 'e', 'jo', 'zh', 'z', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'r', 's', 't', 'u', 'f', 'h', 'c', 'ch', 'sh', 'shh', '', 'y', '', 'je', 'ju', 'ja', '');
    foreach ($idarr as $i => $v) {
        if (is_array($files['fld']['name'][$name][$fieldname])) {
            if (!empty($files['fld']['name'][$name][$fieldname][$i]) && $choose[$i]) {
                $filename = $files['fld']['name'][$name][$fieldname][$i];
                $filename = str_replace($change1, $change2, strtolower($filename));
                $full_filename = $dir . '/' . $filename;
                if ($resample_size) {
                    // Проверяем, изображение это или нет
                    $size = getimagesize($files['fld']['tmp_name'][$name][$fieldname][$i]);
                    if (!$size) {
                        continue;
                    }
                }
                if (@move_uploaded_file($files['fld']['tmp_name'][$name][$fieldname][$i], $full_filename) !== false) {
                    @chmod($full_filename, 0664);
                    if ($resample_size) {
                        $del = $delete;
                        foreach ($resample_size as $key => $val) {
                            $image = ResampleImage($dir, $filename, $val, false, $quality);
                            if ($image) {
                                $image = path($image);
                                $photo_arr[$i][$key] = $image;
                                ksort($photo_arr[$i]);
                            }
                        }
                        // Проверяем перед удалением оригинала, сжималось изображение или нет,
                        // если нет то не удаляем оригинал
                        if ($del && $photo_arr[$i]['image_large'] != $full_filename) {
                            unlink($full_filename);
                        }
                    } else {
                        $photo_arr[$i] = $filename;
                    }
                }
            }
        } else {
            if (!empty($files['fld']['name'][$name][$fieldname])) {
                $filename = $files['fld']['name'][$name][$fieldname];
                $filename = str_replace($change1, $change2, strtolower($filename));
                $full_filename = $dir . '/' . $filename;
                if ($resample_size) {
                    // Проверяем, изображение это или нет
                    $size = getimagesize($files['fld']['tmp_name'][$name][$fieldname]);
                    if (!$size) {
                        continue;
                    }
                }
                if (@move_uploaded_file($files['fld']['tmp_name'][$name][$fieldname], $full_filename) !== false) {
                    @chmod($full_filename, 0664);
                    if ($resample_size) {
                        // Ресайз изображения
                        $file['image_large'] = $full_filename;
                        $file['image_small'] = ResampleImage($dir, $filename, $resample_size, $delete, $quality);
                        $images[] = $file;
                    } else {
                        $images[] = $filename;
                    }
                }
            }
        }
    }
    return $photo_arr;
}
예제 #3
0
파일: fmr.php 프로젝트: romlg/cms36
 function GetUploadedFile($file, $file_name, $file_dir = 'files', $resample = 0, $quality = '85')
 {
     if (!is_writable($file_dir)) {
         Header("Location: " . $_SERVER["PHP_SELF"] . "?page=" . $this->name . "&dir=" . $_POST['dir'] . "&err=5");
         exit;
     }
     $file_dir = preg_replace("~(/\$)~", "", $file_dir);
     $file_name = GetPureName($file_name);
     if ($file) {
         if (!$resample || 1) {
             # find first unexisting filename
             $counter = 0;
             $dot = strrpos($file_name, '.');
             $fbase = substr($file_name, 0, $dot);
             $fext = substr($file_name, $dot);
             while (is_file($file_dir . '/' . $file_name)) {
                 $counter++;
                 $file_name = $fbase . "_" . $counter . $fext;
             }
         }
         if ($resample) {
             $size = $GLOBALS['resamle_options'][$resample];
         }
         if (!move_uploaded_file($file, $file_dir . '/' . $file_name)) {
             Header("Location: " . $_SERVER["PHP_SELF"] . "?page=" . $this->name . "&dir=" . $_POST['dir'] . "&err=6");
             exit;
             //or die(str('e_upload')." (".$file_dir."/".$file_name.")");
         }
         @chmod($file_dir . '/' . $file_name, 0775);
         # resample image
         if ($resample) {
             return ResampleImage($file_dir, $file_name, $size, false, $quality);
         } else {
             return $file_name;
         }
     }
 }
예제 #4
0
파일: fm2.php 프로젝트: romlg/cms36
 function EditDownload()
 {
     $dir = get("down_dir", 'null', 'gp');
     $vdir = $this->verifyDir($dir);
     if (!is_array($vdir)) {
         $vdir = $this->getStartDir();
     }
     $dir = $vdir['dir'];
     $width = get("width", 0, 'gp');
     $height = get("height", 0, 'gp');
     $file = isset($_FILES['file']) ? $_FILES['file'] : "";
     if ($width != 0 || $height != 0) {
         $size = array($width, $height);
     }
     if (!empty($file)) {
         # находим несуществующее имя
         $file_name = GetPureName($file['name']);
         # уменьшаем рассширение файла, для номрального просмотра в fm
         $dot = strrpos($file_name, '.');
         $ext = strtolower(substr($file_name, $dot, strlen($file_name) - $dot));
         if (in_array($ext, $this->deny)) {
             echo "<script>alert('Вы не можете закачивать файлы с таким расширением.');</script>";
             return;
         }
         $file_name = substr($file_name, 0, $dot) . $ext;
         if (file_exists($this->SlashSep($dir, $file_name))) {
             $num = 1;
             while (file_exists($this->SlashSep($dir, new_file_name($file_name, '[' . $num . ']')))) {
                 $num++;
             }
             $file_name = new_file_name($file_name, '[' . $num . ']');
         }
         $file_put = $this->SlashSep($dir, $file_name);
         if (!move_uploaded_file($file['tmp_name'], $file_put)) {
             echo "<script>alert('Ошибка загрузки файла');</script>";
         }
         @chmod($file_put, FILES_MOD);
         @chown($file_put, fileowner($_SERVER['SCRIPT_FILENAME']));
         @chgrp($file_put, filegroup($_SERVER['SCRIPT_FILENAME']));
         # Ресайз
         if (!empty($size)) {
             $quality = sql_getValue('SELECT value FROM strings WHERE name="resize_quality" AND module="site" AND root_id=' . domainRootId() . ' AND lang="' . lang() . '"');
             if (!$quality) {
                 $quality = 85;
             }
             $file_name = ResampleImage($dir, $file_name, $size, false, $quality);
         }
         if (get('watermark', false, 'gp')) {
             $data = $this->config;
             $watermark = $data['module']['watermark_file'];
             if (!is_file(".." . $watermark)) {
                 echo "<script>alert('Не найден файл с водяным знаком!');</script>";
                 die;
             }
             $this->addWaterMark($file_name, ".." . $watermark);
         }
     }
     echo "\n\t\t<script>\n\t\tparent.openDir('" . $dir . "');\n\t\tparent.hideDownloadFrom();\n\t\tparent.stopMainLoad();\n\t\t</script>\n\t\t";
 }
예제 #5
0
파일: ed.utils.php 프로젝트: romlg/cms36
 /**
  * проверяет массив файлов и ресайзит их
  *
  * @param array() $fld
  * @param class $parent
  */
 function resizeFiles(&$fld, &$parent)
 {
     $quality = sql_getValue('SELECT value FROM strings WHERE name="resize_quality" AND module="site" AND root_id=' . domainRootId() . ' AND lang="' . lang() . '"');
     if (!$quality) {
         $quality = 85;
     }
     // определяем поля, где могут находится изображения во временных папках
     foreach ($parent->elem_fields['columns'] as $k => $v) {
         if ($v['type'] == 'input_image' || $v['type'] == 'input_file' && !empty($fld[$k])) {
             // не даем ресайзить на удаленных серверах
             if (strpos($fld[$k], 'http://') !== false) {
                 continue;
             }
             if (!in_array(strtolower(substr($fld[$k], strrpos($fld[$k], '.') + 1)), array('jpeg', 'jpg', 'gif', 'png'))) {
                 continue;
             }
             $delete = true;
             //ресайзим с удалением исходника
             if (substr($fld[$k], 0, 5) == '@temp') {
                 $temp = true;
                 $delete = false;
             }
             $path = $temp ? substr($fld[$k], 5) : $fld[$k];
             $file_dir = dirname($path);
             if (!is_dir($file_dir)) {
                 $file_dir = ".." . $file_dir;
                 if (!is_dir($file_dir)) {
                     echo "Директория не найдена";
                 }
             }
             $file_name = basename($path);
             $size = $v['display']['size'];
             //размер файла
             $as_size = isset($v['display']['as_size']) ? $v['display']['as_size'] : false;
             //как сжимать
             $file = ResampleImage($file_dir, $file_name, $size, $delete, $quality, $as_size);
             if (!$temp) {
                 $file = substr($file, 2);
             }
             $fld[$k] = $temp ? '@temp' . $file : $file;
         }
     }
 }