private function preResizeJpeg($file) { if (system::fileExtIs($file, array('jpeg', 'jpg')) && reg::getKey('/core/scaleBigJpeg')) { $ava = imagecreatefromjpeg(ROOT_DIR . $file); $x = imagesx($ava); $y = imagesy($ava); $sra = $x > $y ? $x : $y; if ($sra > reg::getKey('/core/sizeBigJpeg')) { $qr = $sra / reg::getKey('/core/sizeBigJpeg'); $nx = round($x / $qr); $ny = round($y / $qr); $sava = imagecreatetruecolor($nx, $ny); imagecopyresized($sava, $ava, 0, 0, 0, 0, $nx, $ny, $x, $y); imagedestroy($ava); imagejpeg($sava, ROOT_DIR . $file); imagedestroy($sava); } else { imagedestroy($ava); } } }
public function proc() { reg::setKey('/core/gzip', system::POST('gzip', isBool)); reg::setKey('/core/delToTrash', system::POST('delToTrash', isBool)); reg::setKey('/core/scaleBigJpeg', system::POST('scaleBigJpeg', isBool)); reg::setKey('/core/sizeBigJpeg', system::POST('sizeBigJpeg', isInt)); reg::setKey('/core/noIE6', system::POST('noIE6', isBool)); reg::setKey('/core/noIE7', system::POST('noIE7', isBool)); reg::setKey('/core/noIE8', system::POST('noIE8', isBool)); reg::setKey('/core/noDelMiniTexts', system::POST('noDelMiniTexts', isBool)); // Загрузка ватермарка if (isset($_FILES['file_watermark']) && !empty($_FILES['file_watermark']['name'])) { if (system::fileExtIs($_FILES['file_watermark']['name'], array('png'))) { $watermark = system::copyFile($_FILES['file_watermark']['tmp_name'], $_FILES['file_watermark']['name'], '/upload/image'); } else { ui::MessageBox(lang::get('CONFIG_SAVE_ERROR'), lang::get('CONFIG_WATERMARK_ERROR')); } } if (!isset($watermark) && isset($_POST['watermark'])) { if (system::fileExtIs($_POST['watermark'], array('png')) || empty($_POST['watermark'])) { $watermark = system::checkVar($_POST['watermark'], isString); } else { ui::MessageBox(lang::get('CONFIG_SAVE_ERROR'), lang::get('CONFIG_WATERMARK_ERROR') . '123'); } } if (isset($watermark) && $watermark != reg::getKey('/core/watermark')) { reg::setKey('/core/watermark', $watermark); $this->deleteCacheWatermark($watermark); } // ****************** Сохранение доменов *************************** function changeDomain($id, $data) { $online = isset($data['d_online']) ? $data['d_online'] : 0; $isAdd = empty($id) ? true : false; $obj = new domain($id); $obj->setName($data['d_name']); $obj->setOnline($online); $obj->setDefLang($data['d_def_lang']); $obj->setEmail($data['d_email']); $obj->setSiteName($data['d_sitename']); $id = $obj->save(); if ($id === false) { ui::MessageBox(lang::get('TEXT_MESSAGE_ERROR'), $obj->getErrorListText()); } else { if ($isAdd) { ui::MessageBox(lang::get('CONFIG_DOMAIN_ADD'), lang::get('CONFIG_DOMAIN_TEXT')); } } return true; } function delDomain($id) { $obj = new domain($id); if ($obj->delete() === false) { ui::MessageBox(lang::get('TEXT_MESSAGE_ERROR'), $obj->getErrorListText()); } } $form = new uiMultiForm('domains'); $form->process('changeDomain', 'delDomain'); // ****************** Сохранение языков *************************** function changeLang($id, $data) { $isAdd = empty($id) ? true : false; $obj = new language($id); $obj->setName($data['l_name']); $obj->setPrefix($data['l_prefix']); $id = $obj->save(); if ($id === false) { ui::MessageBox(lang::get('TEXT_MESSAGE_ERROR'), $obj->getErrorListText()); } else { if ($isAdd) { ui::MessageBox(lang::get('CONFIG_LANG_ADD'), lang::get('CONFIG_LANG_TEXT')); } } return true; } function delLang($id) { $obj = new language($id); if ($obj->delete() === false) { ui::MessageBox(lang::get('TEXT_MESSAGE_ERROR'), $obj->getErrorListText()); } } $form = new uiMultiForm('langs'); $form->process('changeLang', 'delLang'); // Если в системе только один язык, сохраняем его данные в реестр для быстрой подгрузки if (count(languages::getAll(true)) == 1) { reg::setKey('/core/cur_lang/id', languages::get(1, true)->id()); reg::setKey('/core/cur_lang/prefix', languages::get(1, true)->getPrefix()); reg::setKey('/core/cur_lang/name', languages::get(1, true)->getName()); } else { reg::delKey('/core/cur_lang'); } // Если в системе только один домен, сохраняем его данные в реестр для быстрой подгрузки if (count(domains::getAll(true)) == 1) { reg::setKey('/core/cur_domain/id', domains::get(1, true)->id()); reg::setKey('/core/cur_domain/name', domains::get(1, true)->getName()); reg::setKey('/core/cur_domain/def_lang', domains::get(1, true)->getDefLang()); reg::setKey('/core/cur_domain/sitename', domains::get(1, true)->getSiteName()); reg::setKey('/core/cur_domain/email', domains::get(1, true)->getEmail()); reg::setKey('/core/cur_domain/online', domains::get(1, true)->online()); reg::setKey('/core/cur_domain/offline_msg', domains::get(1, true)->getOfflineMsg()); reg::setKey('/core/cur_domain/error_msg', domains::get(1, true)->getErrorMsg()); } else { reg::delKey('/core/cur_domain'); } ui::MessageBox(lang::get('CONFIG_SAVE_OK'), lang::get('CONFIG_SAVE_OK_MSG')); reg::clearCache(); system::log(lang::get('CONFIG_LOG_SAVE'), warning); system::redirect('/core/change'); }
private function imageResize($new_file_name) { if (!empty($this->original_image) && file_exists($this->original_image)) { switch (substr($this->original_image, -4)) { case '.gif': $type = 1; break; case '.jpg': $type = 2; break; case 'jpeg': $type = 2; break; case '.png': $type = 3; break; } switch ($type) { case 1: $src = @imagecreatefromgif($this->original_image); break; case 2: $src = @imagecreatefromjpeg($this->original_image); break; case 3: $src = @imagecreatefrompng($this->original_image); break; } if (empty($src)) { die('Can not read file "' . $this->original_image . '"'); } $w_src = imagesx($src); $h_src = imagesy($src); $process = true; // Масштабируем только большие рисунки if ((!empty($this->width) && $this->width > $w_src || empty($this->width)) && (!empty($this->height) && $this->height > $h_src || empty($this->height))) { $dest = $src; $process = false; $w_dest = $w_src; $h_dest = $h_src; // пропорциональное уменьшение рисунка либо по высоте, либо по ширине } else { if ($this->scale_type == stRateably && (!empty($this->width) || !empty($this->height))) { if (!empty($this->width) && !empty($this->height)) { // Масштабируем по двум размерам сразу (width и height) $tmp = round($h_src / ($w_src / $this->width)); $tmp2 = round($w_src / ($h_src / $this->height)); if ($w_src < $h_src) { if ($tmp >= $this->height) { $ratio = $w_src / $this->width; } else { $ratio = $h_src / $this->height; } } else { if ($w_src > $h_src) { if ($tmp2 >= $this->width) { $ratio = $h_src / $this->height; } else { $ratio = $w_src / $this->width; } } else { $ratio = 1; } } $w_dest = round($w_src / $ratio); $h_dest = round($h_src / $ratio); $dest_tmp = @imagecreatetruecolor($w_dest, $h_dest) or die("Cannot Initialize new GD image stream 11"); $white = imagecolorallocate($dest_tmp, 255, 255, 255); imagefill($dest_tmp, 1, 1, $white); imagecopyresampled($dest_tmp, $src, 0, 0, 0, 0, $w_dest, $h_dest, $w_src, $h_src); $dest = @imagecreatetruecolor($this->width, $this->height) or die("Cannot Initialize new GD image stream 11"); imagecopyresampled($dest, $dest_tmp, 0, 0, round(($w_dest - $this->width) / 2), round(($h_dest - $this->height) / 2), $this->width, $this->height, $this->width, $this->height); imagedestroy($dest_tmp); } else { // Масштабируем только по одному из размеров if (!empty($this->width)) { $ratio = $w_src / $this->width; } else { if (!empty($this->height)) { $ratio = $h_src / $this->height; } } $w_dest = round($w_src / $ratio); $h_dest = round($h_src / $ratio); // создаём пустую картинку $dest = @imagecreatetruecolor($w_dest, $h_dest) or die("Cannot Initialize new GD image stream 11"); // imagealphablending($dest, false); // imagesavealpha($dest, true); $white = imagecolorallocate($dest, 255, 255, 255); //imagecolortransparent($dest, $white); imagefill($dest, 1, 1, $white); // $this->setTransparency($dest, $src); imagecopyresampled($dest, $src, 0, 0, 0, 0, $w_dest, $h_dest, $w_src, $h_src); } // получения прямоугольного файла вписанного в квадрат со стороной $this->width } else { if ($this->scale_type == stInSquare && !empty($this->width)) { $delitel = $w_src > $h_src ? $w_src : $h_src; $ratio = $delitel / $this->width; $w_dest = round($w_src / $ratio); $h_dest = round($h_src / $ratio); // создаём пустую картинку $dest = @imagecreatetruecolor($w_dest, $h_dest) or die("Cannot Initialize new GD image stream 11"); imagealphablending($dest, false); /*$white = imagecolorallocate($dest, 255, 255, 255); imagefill($dest, 1, 1, $white);*/ imagecopyresampled($dest, $src, 0, 0, 0, 0, $w_dest, $h_dest, $w_src, $h_src); // обрезка фото по квадрату со стороной $this->width } else { if ($this->scale_type == stSquare && !empty($this->width)) { // создаём пустую квадратную картинку $dest = @imagecreatetruecolor($this->width, $this->width) or die("Cannot Initialize new GD image stream 12"); imagealphablending($dest, false); // вырезаем квадратную серединку по x, если фото горизонтальное if ($w_src > $h_src) { imagecopyresampled($dest, $src, 0, 0, round((max($w_src, $h_src) - min($w_src, $h_src)) / 2), 0, $this->width, $this->width, min($w_src, $h_src), min($w_src, $h_src)); } // вырезаем квадратную верхушку по y, если фото вертикальное (хотя можно тоже середику) if ($w_src < $h_src) { imagecopyresampled($dest, $src, 0, 0, 0, round((max($w_src, $h_src) - min($w_src, $h_src)) / 2), $this->width, $this->width, min($w_src, $h_src), min($w_src, $h_src)); } // квадратная картинка масштабируется без вырезок if ($w_src == $h_src) { imagecopyresampled($dest, $src, 0, 0, 0, 0, $this->width, $this->width, $w_src, $w_src); } } } } } // Наложение водяного знака if (!empty($this->watermark) && file_exists(ROOT_DIR . $this->watermark['file']) && system::fileExtIs($this->watermark['file'], array('png'))) { $logo = imagecreatefrompng(ROOT_DIR . $this->watermark['file']); imagealphablending($logo, false); imagesavealpha($logo, true); $logo_w = imagesx($logo); $logo_h = imagesy($logo); imagealphablending($dest, true); switch ($this->watermark['position']) { case 1: imagecopy($dest, $logo, 10, 10, 0, 0, $logo_w, $logo_h); break; case 2: imagecopy($dest, $logo, $w_dest / 2 - $logo_w / 2, 10, 0, 0, $logo_w, $logo_h); break; case 3: imagecopy($dest, $logo, $w_dest - $logo_w - 10, 10, 0, 0, $logo_w, $logo_h); break; case 4: imagecopy($dest, $logo, 10, $h_dest / 2 - $logo_h / 2, 0, 0, $logo_w, $logo_h); break; case 5: imagecopy($dest, $logo, $w_dest / 2 - $logo_w / 2, $h_dest / 2 - $logo_h / 2, 0, 0, $logo_w, $logo_h); break; case 6: imagecopy($dest, $logo, $w_dest - $logo_w - 10, $h_dest / 2 - $logo_h / 2, 0, 0, $logo_w, $logo_h); break; case 7: imagecopy($dest, $logo, 10, $h_dest - $logo_h - 10, 0, 0, $logo_w, $logo_h); break; case 8: imagecopy($dest, $logo, $w_dest / 2 - $logo_w / 2, $h_dest - $logo_h - 10, 0, 0, $logo_w, $logo_h); break; case 9: imagecopy($dest, $logo, $w_dest - $logo_w - 10, $h_dest - $logo_h - 10, 0, 0, $logo_w, $logo_h); break; } } @imagegammacorrect($dest, 1, 1.1); @imageinterlace($dest, 1); if ($new_file_name == 'screen') { switch ($type) { case 1: header("Content-type: image/gif"); imagegif($dest); break; case 2: header("Content-type: image/jpeg"); imagejpeg($dest, '', $this->quality); break; case 3: header("Content-type: image/png"); imagesavealpha($dest, true); imagepng($dest); break; } } else { switch ($type) { case 1: imagegif($dest, $new_file_name); break; case 2: imagejpeg($dest, $new_file_name, $this->quality); break; case 3: imagepng($dest, $new_file_name); break; } } imagedestroy($dest); if ($process) { imagedestroy($src); } } }
/** * @return null * @param string $field_name - Имя поля формы и макроса для вывода элемента в шаблон * @param string $value - Список файлов * @desc Элемент формы для загрузки списка файлов */ public static function listFile($field_name, $value) { if (file_exists(MODUL_DIR . '/mpanel/template/list_file.tpl')) { include MODUL_DIR . '/mpanel/template/list_file.tpl'; /* if (system::fileExtIs($file_name, array('flv', 'png', 'jpg', 'jpeg', 'png'))) page::assign('link_type', 'href="#" onclick="$.prettyPhoto.open(\'%value%\');"'); else page::assign('link_type', 'href="%value%" target="_target"'); */ // if (!empty($value)) { $files = explode(";", $value); $items = ''; while (list($key, $file_name) = each($files)) { if (!empty($file_name) && file_exists(ROOT_DIR . $file_name) && !is_Dir(ROOT_DIR . $file_name)) { $info = stat(ROOT_DIR . $file_name); if (system::fileExtIs($file_name, array('png', 'gif', 'jpg', 'jpeg'))) { $size = getimagesize(ROOT_DIR . $file_name); $size_img = ', ' . $size[0] . 'x' . $size[1] . 'px'; } else { $size_img = ''; } page::assign('file.name', system::fileName($file_name)); page::assign('file.url', $file_name); page::assign('file.ext', system::fileExt($file_name)); page::assign('file.size', round($info[7] / 1024, 0) . ' Кбайт' . $size_img); $items .= page::parse($TEMPLATE['files']); } } page::assign('files', $items); return page::parse($TEMPLATE['frame_view']); } else { page::assign('value', $value); page::assign('sname', $field_name); return page::parse($TEMPLATE['frame_add']); } } }