Пример #1
0
 public function saveAjaxAction(\Difra\Param\AjaxInt $perpage, \Difra\Param\AjaxString $imgSizes, \Difra\Param\AjaxString $format, \Difra\Param\AjaxCheckbox $waterOn, \Difra\Param\AjaxCheckbox $waterPreviewOn, \Difra\Param\AjaxString $waterText = null, \Difra\Param\AjaxFile $waterFile = null)
 {
     $imgSizes2 = explode("\n", str_replace("\r", '', $imgSizes));
     $imgSizes3 = [];
     foreach ($imgSizes2 as $str) {
         $arr = explode(' ', $str);
         if (sizeof($arr) != 3 or !ctype_alpha($arr[0]) or !ctype_digit($arr[1]) or !ctype_digit($arr[2]) or $arr[0] == 'f' or isset($imgSizes3[$arr[0]]) or !$arr[1] or !$arr[2]) {
             $this->ajax->invalid('imgSizes');
             return;
         }
         $imgSizes3[$arr[0]] = [(int) $arr[1], (int) $arr[2]];
     }
     $conf = \Difra\Config::getInstance();
     $conf->setValue('gallery', 'perpage', $perpage->val());
     $conf->setValue('gallery', 'imgSizes', $imgSizes3);
     $conf->setValue('gallery', 'watermark', $waterOn->val());
     $conf->setValue('gallery', 'waterOnPreview', $waterPreviewOn->val());
     $waterText = !is_null($waterText) ? $waterText->val() : '';
     $conf->setValue('gallery', 'waterText', $waterText);
     $conf->setValue('gallery', 'format', $format->val());
     if (!is_null($waterFile)) {
         $path = DIR_DATA . 'gallery/';
         @mkdir($path, 0777, true);
         file_put_contents($path . 'watermark.png', \Difra\Libs\Images::convert($waterFile->val(), 'png'));
     }
     $this->ajax->notify($this->locale->getXPath('gallery/adm/config/saved'));
 }
Пример #2
0
 /**
  * Сохраняет в нужном месте картинку анонса
  * @param $id
  * @param $fileData
  * @throws Exception
  */
 public function saveImage($id, $fileData)
 {
     @mkdir($this->imagePath, 0777, true);
     if (!is_writeable($this->imagePath)) {
         throw new Exception('Directory is not writeable!');
     }
     $img = $fileData instanceof AjaxFile ? $fileData->val() : $fileData;
     try {
         $rawImg = Images::data2image($img);
         $newImg = Images::scaleAndCrop($rawImg, $this->settings['width'], $this->settings['height'], 'png');
         $bigImg = Images::scaleAndCrop($rawImg, $this->settings['bigWidth'], $this->settings['bigHeight'], 'png');
     } catch (Exception $ex) {
         throw new Exception('Bad image format. ' . $ex->getMessage());
     }
     try {
         file_put_contents($this->imagePath . '/' . $id . '.png', $newImg);
         file_put_contents($this->imagePath . '/' . $id . '-big.png', $bigImg);
     } catch (Exception $ex) {
         throw new Exception("Can't save image");
     }
 }
Пример #3
0
 /**
  * Upload image
  */
 public function indexAction()
 {
     \Difra\View::$rendered = true;
     if (!isset($_GET['CKEditorFuncNum'])) {
         die;
     }
     $funcnum = $_GET['CKEditorFuncNum'];
     if (!isset($_FILES['upload']) or $_FILES['upload']['error'] != UPLOAD_ERR_OK) {
         die("<script type=\"text/javascript\">window.parent.CKEDITOR.tools.callFunction({$funcnum}, '','" . \Difra\Locales::get('editor/upload-error') . "');</script>");
     }
     $img = Images::convert(file_get_contents($_FILES['upload']['tmp_name']));
     if (!$img) {
         die("<script type=\"text/javascript\">window.parent.CKEDITOR.tools.callFunction({$funcnum},'','" . \Difra\Locales::get('editor/upload-notimage') . "');</script>");
     }
     try {
         $link = \Difra\Libs\Vault::add($img);
         $link = "/up/tmp/{$link}";
     } catch (\Difra\Exception $ex) {
         die("<script type=\"text/javascript\">window.parent.CKEDITOR.tools.callFunction({$funcnum},'','" . $ex->getMessage() . "');</script>");
     }
     die('<script type="text/javascript">window.parent.CKEDITOR.tools.callFunction(' . $funcnum . ",'" . $link . "');</script>");
 }
Пример #4
0
 /**
  * Сохраняет картинки работы портфолио
  * @param int $id
  * @param array $images
  * @throws \Difra\Exception
  */
 public static function saveImages($id, $images)
 {
     if (!$images) {
         return;
     } elseif ($images instanceof \Difra\Param\AjaxFile) {
         $images = [$images->val()];
     } elseif ($images instanceof \Difra\Param\AjaxFiles) {
         $images = $images->val();
     } elseif (!is_array($images)) {
         $images = [$images];
     }
     $imgSizes = self::getSizes();
     if (empty($imgSizes)) {
         throw new \Difra\Exception('Not set image sizes for portfolio');
     }
     $savePath = DIR_DATA . 'portfolio/';
     @mkdir($savePath, 0777, true);
     $db = \Difra\MySQL::getInstance();
     $pos = intval($db->fetchOne("SELECT MAX(`position`) FROM `portfolio_images` WHERE `portfolio`='" . intval($id) . "'")) + 1;
     foreach ($images as $img) {
         $query = "INSERT INTO `portfolio_images` SET `portfolio`='" . intval($id) . "', `position`='" . $pos . "'";
         $db->query($query);
         $imgId = $db->getLastId();
         foreach ($imgSizes as $k => $size) {
             if ($size) {
                 $tmpImg = Images::createThumbnail($img, $size[0], $size[1]);
             } else {
                 $tmpImg = Images::convert($img, 'png');
             }
             $fSize = file_put_contents($savePath . $imgId . '-' . $k . '.png', $tmpImg);
             if ($fSize === false) {
                 throw new \Difra\Exception('It is impossible to save the picture in the data folder.');
             }
         }
         ++$pos;
     }
 }
Пример #5
0
 public static function saveSettings($settings)
 {
     if (!empty($settings)) {
         if (isset($settings['logo'])) {
             $logoImage = $settings['logo']->val();
             unset($settings['logo']);
             @mkdir(DIR_DATA . 'rss', 0777, true);
             try {
                 $rawImg = Images::createThumbnail($logoImage, 256, 256, 'png');
             } catch (\Difra\Exception $ex) {
                 throw new \Difra\Exception('Bad image format.');
             }
             try {
                 file_put_contents(DIR_DATA . 'rss' . '/rsslogo.png', $rawImg);
             } catch (\Difra\Exception $ex) {
                 throw new \Difra\Exception("Can't save image");
             }
         }
         \Difra\Config::getInstance()->set('rss', $settings);
     }
 }
Пример #6
0
 /**
  * Добавление изображения
  * @param string|\Difra\Param\AjaxFile $image
  * @param bool $main
  * @throws \Difra\Exception
  */
 public function addImage($image, $main = false)
 {
     $path = DIR_DATA . 'catalog/items/';
     @mkdir($path, 0777, true);
     $this->save();
     $this->load();
     $useScaleAndCrop = \Difra\Config::getInstance()->getValue('catalog', 'usescale');
     try {
         $rawImg = Images::data2image($image);
     } catch (\Difra\Exception $ex) {
         throw new \Difra\Exception('Bad image format.');
     }
     $db = MySQL::getInstance();
     $db->query('INSERT INTO `catalog_images` SET ' . "`item`='" . $db->escape($this->id) . "'," . "`main`=" . ($main ? '1' : '0'));
     $imgId = $db->getLastId();
     foreach ($this->imgSizes as $k => $size) {
         if ($size) {
             if (is_null($useScaleAndCrop) || intval($useScaleAndCrop) == 0) {
                 $newImg = Images::createThumbnail($rawImg, $size[0], $size[1], 'png');
             } else {
                 $newImg = Images::scaleAndCrop($rawImg, $size[0], $size[1], 'png');
             }
         } else {
             $newImg = Images::convert($rawImg, 'png');
         }
         if (file_put_contents($path . $imgId . $k . '.png', $newImg) === false) {
             throw new \Difra\Exception('Can\'t save image file.');
         }
     }
 }
Пример #7
0
 public function updateValue($id, $value, $image = null)
 {
     $this->load();
     $db = \Difra\MySQL::getInstance();
     $db->query("UPDATE `catalog_ext_sets` SET `name`='" . $db->escape($value) . "' WHERE `id`='" . $db->escape($id) . "'");
     if ($image and $this->set & self::SET_IMAGES) {
         $path = DIR_DATA . 'catalog/ext/';
         @mkdir($path, 0777, true);
         $smallImage = \Difra\Libs\Images::scaleAndCrop($image, $this->imgWidth, $this->imgHeight, 'png', true);
         if (!$smallImage) {
             return self::BAD_IMAGE;
         }
         file_put_contents($path . $id . '.png', $smallImage);
     }
     return $id;
 }
Пример #8
0
 /**
  * Сохраняет постер для видео
  * @param $video
  * @param $poster
  */
 public function savePoster($video, $poster)
 {
     $db = \Difra\MySQL::getInstance();
     $video = $db->escape($video);
     if (!is_dir($this->postersDir)) {
         return 'badPosterDir';
     }
     foreach ($this->videoSizes as $size) {
         $res = @file_put_contents($this->postersDir . '/' . $video . '_' . $size . '_0' . '.png', Images::createThumbnail($poster, $size, $size, 'png'));
         if ($res === false) {
             return 'badPosterSave';
         }
     }
     // отдельно сохраняем маленькую превьюшку для админки
     $res = @file_put_contents($this->postersDir . '/' . $video . '_thumb.png', Images::createThumbnail($poster, 78, 78, 'png'));
     if ($res === false) {
         return 'badPosterSave';
     }
     $db->query("UPDATE `videos` SET `hasPoster`=1 WHERE `video`='" . $video . "'");
     return true;
 }
Пример #9
0
 /**
  * @param string|\Difra\Param\AjaxFile|\Difra\Param\AjaxFiles $image
  */
 public function addImage($image)
 {
     if (!$image) {
         return;
     } elseif ($image instanceof \Difra\Param\AjaxFile) {
         $image = [$image->val()];
     } elseif ($image instanceof \Difra\Param\AjaxFiles) {
         $image = $image->val();
     } elseif (!is_array($image)) {
         $image = [$image];
     }
     $path = DIR_DATA . 'gallery/';
     @mkdir($path, 0777, true);
     $this->save();
     $this->load();
     $Config = \Difra\Config::getInstance();
     $waterMarkOn = $Config->getValue('gallery', 'watermark');
     $waterMarkOnPreview = $Config->getValue('gallery', 'waterOnPreview');
     $waterText = $Config->getValue('gallery', 'waterText');
     $watermarkImage = null;
     if (file_exists($path . 'watermark.png')) {
         $watermarkImage = file_get_contents($path . 'watermark.png');
     }
     $db = \Difra\MySQL::getInstance();
     $pos = intval($db->fetchOne("SELECT MAX(`position`) FROM `gallery_photos` WHERE `album`='" . $db->escape($this->id) . "'")) + 1;
     foreach ($image as $img) {
         $db->query('INSERT INTO `gallery_photos` SET ' . "`album`='" . $db->escape($this->id) . "'," . "`position`='{$pos}'");
         $imgId = $db->getLastId();
         foreach ($this->imgSizes as $k => $size) {
             if ($size) {
                 $tmpImg = Images::scaleAndCrop($img, $size[0], $size[1], $this->format);
                 if ($waterMarkOn && $waterMarkOnPreview) {
                     if ($waterText != '') {
                         $tmpImg = Images::setWatermark($tmpImg, $waterText, null, $this->format, 7);
                     } elseif ($watermarkImage) {
                         $tmpImg = Images::setWatermark($tmpImg, null, $watermarkImage, $this->format, 7);
                     }
                 }
                 file_put_contents($path . $imgId . $k . '.' . $this->format, $tmpImg);
             } else {
                 $tmpImg = Images::convert($img, $this->format);
                 if ($waterMarkOn) {
                     if ($waterText != '') {
                         $tmpImg = Images::setWatermark($tmpImg, $waterText, null, $this->format, 15);
                     } elseif ($watermarkImage) {
                         $tmpImg = Images::setWatermark($tmpImg, null, $watermarkImage, $this->format, 15);
                     }
                 }
                 file_put_contents($path . $imgId . $k . '.' . $this->format, $tmpImg);
             }
         }
         ++$pos;
     }
 }