Ejemplo n.º 1
0
 public function newParam($mid, $pid, $value, $files = array())
 {
     $index = 'image_' . $pid;
     $materials = new Model_Material('group');
     $material = $materials->getMaterial($mid);
     if ($files[$index]['size'] > 0) {
         foreach ($files as $file_key => $file) {
             $file_param = explode('_', $file_key);
             if ($file_param[0] == 'image') {
                 //загружаем изображение
                 if ($file['size'] < 5000000 && $file['size'] > 0) {
                     $ext = explode('.', $file['name']);
                     $extension = array_pop($ext);
                     //генерируем имя изображения
                     $base = new Model_Base();
                     $extarr = explode('.', $file['name']);
                     $ext = array_pop($extarr);
                     $filename = $material['url'] . '_' . substr(md5(microtime() * time()), 0, rand(20, 10)) . '.' . $ext;
                     if (copy($file['tmp_name'], DOCROOT . $this->dir . $filename)) {
                         $base = new Model_Base();
                         $options = $base->getOptions();
                         $size = explode(',', $options['upload_size']);
                         //изменяем картинку
                         //открываем изображение
                         $image = Image::factory(DOCROOT . $this->dir . $filename);
                         //начинаем работу с нужной картинкой. Путь указан от корня приложения
                         if (count($size) == 2) {
                             $size = explode(',', $options['upload_size']);
                             if ($size[0] != 0 && $size[1] != 0) {
                                 $ratio = $image->width / $image->height;
                                 // Соотношение сторон нужных размеров
                                 $original_ratio = $size[0] / $size[1];
                                 // Размеры, до которых обрежем картинку до масштабирования
                                 $crop_width = $image->width;
                                 $crop_height = $image->height;
                                 // Смотрим соотношения
                                 if ($ratio > $original_ratio) {
                                     // Если ширина картинки слишком большая для пропорции,
                                     // то будем обрезать по ширине
                                     $crop_width = round($original_ratio * $crop_height);
                                 } else {
                                     // Либо наоборот, если высота картинки слишком большая для пропорции,
                                     // то обрезать будем по высоте
                                     $crop_height = round($crop_width / $original_ratio);
                                 }
                                 // Обрезаем по высчитанным размерам до нужной пропорции
                                 $image->crop($crop_width, $crop_height);
                                 // Масштабируем картинку то точных размеров
                                 $image->resize($size[0], $size[1], Image::NONE);
                             } else {
                                 $image->resize($size[0], $size[1]);
                             }
                         }
                         //сохраняем новое изображение
                         $image->save(NULL, $options['image_quality']);
                         //первый параметр - путь, имя и формат изображения. Второй - качество изображения
                         $value = DIRECTORY_SEPARATOR . $this->dir . $filename;
                     }
                 }
             }
         }
     } else {
         $server_name = Request::parseUrl($value);
         if ($server_name != Kohana::$base_url && $server_name != '') {
             $ext = explode('.', $value);
             $extension = array_pop($ext);
             //генерируем имя изображения
             $base = new Model_Base();
             $extarr = explode('.', $value);
             $ext = array_pop($extarr);
             $filename = $material['url'] . '_' . substr(md5(microtime() * time()), 0, rand(20, 10)) . '.' . $ext;
             if (copy($value, DOCROOT . $this->dir . $filename)) {
                 //загружаем их к себе
                 //открываем изображение
                 $image = Image::factory(DOCROOT . $this->dir . $filename);
                 //начинаем работу с нужной картинкой. Путь указан от корня приложения
                 //меняем размер картинки
                 $image->resize(800, 1000);
                 //изменение размера по короткой стороне
                 //сохраняем новое изображение
                 $image->save();
                 //первый параметр - путь, имя и формат изображения. Второй - качество изображения
                 unset($image);
                 $value = DIRECTORY_SEPARATOR . $this->dir . $filename;
             }
         } else {
             $value = str_replace($server_name, DIRECTORY_SEPARATOR, $value);
         }
     }
     //сохраняем картинку
     $insert = DB::insert('images', array('id', 'value'))->values(array('', $value));
     $result = $insert->execute();
     $insertId = $result[0];
     //Добавляем связь материала с папкой
     $insert = DB::insert('group_param_values', array('id', 'pid', 'mid', 'value'))->values(array('', $pid, $mid, $insertId))->execute();
     if ($insert != NULL) {
         return TRUE;
     } else {
         return FALSE;
     }
 }
Ejemplo n.º 2
0
 public function newParam($mid, $pid, $value, $files = array())
 {
     $index = 'image_' . $pid;
     $materials = new Model_Material('group');
     $material = $materials->getMaterial($mid);
     if ($files[$index]['size'] > 0) {
         foreach ($files as $file_key => $file) {
             $file_param = explode('_', $file_key);
             if ($file_param[0] == 'image') {
                 //загружаем изображение
                 if ($file['size'] < 5000000 && $file['size'] > 0) {
                     $ext = explode('.', $file['name']);
                     $extension = array_pop($ext);
                     //генерируем имя изображения
                     $base = new Model_Base();
                     $extarr = explode('.', $file['name']);
                     $ext = array_pop($extarr);
                     $filename = $material['url'] . '_' . substr(md5(microtime() * time()), 0, rand(20, 10)) . '.' . $ext;
                     if (copy($file['tmp_name'], DOCROOT . $this->dir . $filename)) {
                         $base = new Model_Base();
                         $options = $base->getOptions();
                         $size = explode(',', $options['upload_size']);
                         //изменяем картинку
                         //открываем изображение
                         $image = Image::factory(DOCROOT . $this->dir . $filename);
                         //начинаем работу с нужной картинкой. Путь указан от корня приложения
                         //                            if(count($size)==2)
                         //                            {
                         //                                $size = explode(',', $options['upload_size']);
                         //                                $image->resize($size[0], $size[1]);
                         //                            }
                         //сохраняем новое изображение
                         $image->save(NULL, $options['image_quality']);
                         //первый параметр - путь, имя и формат изображения. Второй - качество изображения
                         $value = DIRECTORY_SEPARATOR . $this->dir . $filename;
                     }
                 }
             }
         }
     } else {
         $server_name = Request::parseUrl($value);
         if ($server_name != Kohana::$base_url && $server_name != '') {
             $ext = explode('.', $value);
             $extension = array_pop($ext);
             //генерируем имя изображения
             $base = new Model_Base();
             $extarr = explode('.', $value);
             $ext = array_pop($extarr);
             $filename = $material['url'] . '_' . substr(md5(microtime() * time()), 0, rand(20, 10)) . '.' . $ext;
             if (copy($value, DOCROOT . $this->dir . $filename)) {
                 //загружаем их к себе
                 //открываем изображение
                 $image = Image::factory(DOCROOT . $this->dir . $filename);
                 //начинаем работу с нужной картинкой. Путь указан от корня приложения
                 //меняем размер картинки
                 $image->resize(800, 1000);
                 //изменение размера по короткой стороне
                 //сохраняем новое изображение
                 $image->save();
                 //первый параметр - путь, имя и формат изображения. Второй - качество изображения
                 unset($image);
                 $value = DIRECTORY_SEPARATOR . $this->dir . $filename;
             }
         } else {
             $value = str_replace($server_name, DIRECTORY_SEPARATOR, $value);
         }
     }
     //сохраняем картинку
     $insert = DB::insert('images', array('id', 'value'))->values(array('', $value));
     $result = $insert->execute();
     $insertId = $result[0];
     //Добавляем связь материала с папкой
     $insert = DB::insert('group_param_values', array('id', 'pid', 'mid', 'value'))->values(array('', $pid, $mid, $insertId))->execute();
     if ($insert != NULL) {
         return TRUE;
     } else {
         return FALSE;
     }
 }
Ejemplo n.º 3
0
 public function newParam($mid, $pid, $value, $files = array(), $export = FALSE)
 {
     $materials = new Model_Material('group');
     $material = $materials->getMaterial($mid);
     /*ONLY FOR EXPORT OPTION!*/
     if ($export == TRUE) {
         foreach ($value as $val) {
             $server_name = Request::parseUrl($val);
             if ($server_name != Kohana::$base_url && $server_name != '') {
                 $info = getimagesize($val);
                 $ext = image_type_to_extension($info[2]);
                 //смотрим сколько файлов в текущей папке файтов
                 //генерируем имя изображения
                 //                    $base = new Model_Base();
                 //                    $extarr = explode('.', $val);
                 //                    $ext = array_pop($extarr);
                 $filename = $material['url'] . '_' . substr(md5(microtime() * time()), 0, rand(20, 10)) . $ext;
                 //                    if(exec("cp ".$val." ".DOCROOT . $this->dir . $filename))
                 if (copy($val, DOCROOT . $this->dir . $filename)) {
                     //загружаем их к себе
                     //открываем изображение
                     $image = Image::factory(DOCROOT . $this->dir . $filename);
                     //начинаем работу с нужной картинкой. Путь указан от корня приложения
                     //меняем размер картинки
                     //   $image->resize(800, 1000); //изменение размера по короткой стороне
                     //сохраняем новое изображение
                     $image->save(NULL, 90);
                     //первый параметр - путь, имя и формат изображения. Второй - качество изображения
                     unset($image);
                     $val = DIRECTORY_SEPARATOR . $this->dir . $filename;
                 }
             }
             $insert = DB::insert('photoalbum', array('id', 'value'))->values(array('', $val));
             $result = $insert->execute();
             $paramId = $result[0];
             $insert = DB::insert('group_param_values', array('id', 'pid', 'mid', 'value'))->values(array('', $pid, $mid, $paramId))->execute();
         }
     } else {
         for ($i = 0; $i < count($files['photos']['name']); ++$i) {
             if ($files['photos']['size'][$i] < 15000000 && $files['photos']['size'][$i] > 100) {
                 //расширение файла
                 $ext = explode('.', $files['photos']['name'][$i]);
                 $extension = array_pop($ext);
                 //генерируем имя изображения
                 $base = new Model_Base();
                 $extarr = explode('.', $files['photos']['name'][$i]);
                 $ext = array_pop($extarr);
                 $filename = $material['url'] . '_' . substr(md5(microtime() * time()), 0, rand(20, 10)) . '.' . $ext;
                 if (copy($files['photos']['tmp_name'][$i], DOCROOT . $this->dir . $filename)) {
                     $base = new Model_Base();
                     $options = $base->getOptions();
                     //изменяем картинку
                     //открываем изображение
                     $image = Image::factory(DOCROOT . $this->dir . $filename);
                     //начинаем работу с нужной картинкой. Путь указан от корня приложения
                     //меняем размер картинки
                     $size = explode(',', $options['upload_size']);
                     if (count($size) == 2) {
                         $size = explode(',', $options['upload_size']);
                         $image->resize($size[0], $size[1]);
                     }
                     $crop = explode(',', $options['upload_crop']);
                     if (count($crop) == 2) {
                         $crop = explode(',', $options['upload_crop']);
                         $image->crop($crop[0], $crop[1]);
                     }
                     //изменение размера по короткой стороне
                     //                    $watermark=Image::factory(DOCROOT . '/img/watermark.png'); //берем изображение для водяного знака
                     //
                     //                    $offset_x = $image->width - $watermark->width - 10;
                     //                    $offset_y = $image->height - $watermark->height - 10;
                     //
                     //                    $image->watermark($watermark, $offset_x, $offset_y, $opacity = 70);
                     //                        var_dump($image);
                     //сохраняем новое изображение
                     $image->save(NULL, $options['image_quality']);
                     //первый параметр - путь, имя и формат изображения. Второй - качество изображения
                     $insert = DB::insert('photoalbum', array('id', 'value'))->values(array('', DIRECTORY_SEPARATOR . $this->dir . $filename));
                     $result = $insert->execute();
                     $paramId = $result[0];
                     $insert = DB::insert('group_param_values', array('id', 'pid', 'mid', 'value'))->values(array('', $pid, $mid, $paramId))->execute();
                 }
             }
         }
     }
 }