Esempio n. 1
0
 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);
         }
     }
 }
Esempio n. 2
0
 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');
 }
Esempio n. 3
0
 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);
         }
     }
 }
Esempio n. 4
0
 /**
  * @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']);
         }
     }
 }