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; } } }
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; }
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; } } }
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"; }
/** * проверяет массив файлов и ресайзит их * * @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; } } }