Blame view

common/modules/file/controllers/UploaderController.php 6.66 KB
29b842c0   Administrator   add field v.1
1
2
3
4
5
6
7
  <?php
  /**
   * Created by PhpStorm.
   * User: Cibermag
   * Date: 31.08.2015
   * Time: 9:58
   */
ab6d9045   Administrator   add Vitaliy's wid...
8
  namespace common\modules\file\controllers;
29b842c0   Administrator   add field v.1
9
  use Yii;
eb7e82fb   Administrator   29.02.16
10
  use yii\helpers\ArrayHelper;
29b842c0   Administrator   add field v.1
11
  use yii\web\UploadedFile;
8c448b56   Administrator   add yii jquery
12
  use common\modules\file\models\ImageSizerForm;
29b842c0   Administrator   add field v.1
13
14
15
16
17
  use yii\web\Controller;
  use Imagine\Gd\Imagine;
  use Imagine\Image\Box;
  use yii\imagine\Image;
  
ab6d9045   Administrator   add Vitaliy's wid...
18
  class UploaderController extends Controller {
29b842c0   Administrator   add field v.1
19
20
21
22
23
24
25
26
27
28
29
30
  
      public function isBigger($width,$height,$w,$h)
      {
          if($width>$w){
              return true;
          }else if($height >$h) {
              return true;
          }
          return false;
      }
  
  
ab6d9045   Administrator   add Vitaliy's wid...
31
32
33
34
35
36
37
38
      private function getUserPath(){
          if(isset(Yii::$app->user->id)){
              return 'user_'.Yii::$app->user->id;
          }else {
              return 'guest';
          }
      }
  
29b842c0   Administrator   add field v.1
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
      private function resizeImg($w, $h, $imageAlias,$imageAliasSave){
          $img = Image::getImagine()->open(Yii::getAlias($imageAlias));
  
          $size = $img->getSize();
  
          $width = $size->getWidth();
          $height = $size->getHeight();
  
          $e_width = $w/$h;
          $e_height = $h/$w;
  
          $e1_width = $width/$height;
          $e1_height = $height/$width;
  
  
8c448b56   Administrator   add yii jquery
54
  
29b842c0   Administrator   add field v.1
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
              if($e_width<$e1_width){
  
                  $new_width = $width*($e_width/$e1_width);
  
                  $y = 0;
                  $x = $width/ 2-($new_width/2);
                  $width = $new_width;
  
              }else {
  
                  $new_height = $height*($e_height/$e1_height);
                  $x = 0;
                  $y = $height/2-($new_height/2);
                  $height = $new_height;
              }
  
  
29b842c0   Administrator   add field v.1
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
  
  
          Image::crop($imageAlias, $width, $height,[$x,$y])
              ->save(Yii::getAlias($imageAliasSave), ['quality' =>
                  100]);
  
  
          $imagine = new Imagine();
          $imagine->open($imageAliasSave)
              ->resize(new Box($w, $h))
              ->save($imageAliasSave, array('flatten' => false));
  
  
  
      }
  
      private function deleteImages($old_img){
  
          if(!empty($old_img) && file_exists($_SERVER['DOCUMENT_ROOT'].$old_img)){
  
eb7e82fb   Administrator   29.02.16
92
93
94
95
96
97
98
99
100
101
102
103
104
              $rootDir = explode("/", $old_img);
  
              $row = $_SERVER['DOCUMENT_ROOT'].'/'.$rootDir[1].'/'.$rootDir[2].'/'.$rootDir[3].'/';
  
              $allFiles = scandir($row);
  
              $allFiles = array_slice($allFiles, 2);
  
              foreach($allFiles as $oldFile){
  
                  unlink($row.$oldFile);
  
              }
29b842c0   Administrator   add field v.1
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
  
          }
      }
  
      public function actionDeleteImage(){
  
          $request = Yii::$app->request->post();
  
          if($request){
              if ($request['old_img']) {
                  $this->deleteImages($request['old_img']);
              }
              if(isset($request['action']) && $request['action']=='save'){
                  $object = str_replace('-', '\\',$request['model']);
                  $model = new $object;
                  $model = $model->findOne($request['id']);
                  $model->$request['field'] = $request['new_url'];
29b842c0   Administrator   add field v.1
122
123
124
125
126
127
128
129
130
                  $model->save();
              }
          }
  
      }
  
  
      public function actionDownloadPhoto()
      {
29b842c0   Administrator   add field v.1
131
132
133
          $model = new ImageSizerForm();
  
          $request = Yii::$app->request->post();
ea09d15d   Yarik   test
134
  
29b842c0   Administrator   add field v.1
135
136
          if ($request) {
  
033f9331   Administrator   09.02.16
137
              $model->multi = isset($request['multi'])? 1 : 0;
ea09d15d   Yarik   test
138
  
29b842c0   Administrator   add field v.1
139
140
              $model->file = UploadedFile::getInstance($model, 'file');
  
ab6d9045   Administrator   add Vitaliy's wid...
141
              $md5_file = md5_file($model->file->tempName).rand(1, 1000);
29b842c0   Administrator   add field v.1
142
  
ab6d9045   Administrator   add Vitaliy's wid...
143
              $imgDir = Yii::getAlias('@storage/'.$this->getUserPath().'/'.$md5_file.'/');
29b842c0   Administrator   add field v.1
144
145
146
147
148
149
150
151
152
  
              $imageOrigAlias = Yii::getAlias($imgDir.'original'.'.'.$model->file->extension);
  
              if(!is_dir($imgDir)) {
                  mkdir($imgDir, 0755, true);
              }
  
              $model->file->saveAs($imageOrigAlias);
  
29b842c0   Administrator   add field v.1
153
  
eb7e82fb   Administrator   29.02.16
154
              if(isset($request['size'] )){
29b842c0   Administrator   add field v.1
155
  
eb7e82fb   Administrator   29.02.16
156
                  $request['size'] = ArrayHelper::toArray(json_decode($request['size']));
29b842c0   Administrator   add field v.1
157
  
eb7e82fb   Administrator   29.02.16
158
159
160
161
162
163
164
165
166
167
168
                  foreach($request['size'] as $size){
                      if($size['width'] && $size['height']){
  
                          $imageAlias = Yii::getAlias($imgDir.$size['width'].'x'.$size['height'].'.'.$model->file->extension);
  
                          $imageLink = '/storage/'.$this->getUserPath().'/'.$md5_file.'/'.$size['width'].'x'.$size['height'].'.'.$model->file->extension;
  
                          $this->resizeImg($size['width'], $size['height'], $imageOrigAlias,$imageAlias);
  
                      }
                  }
29b842c0   Administrator   add field v.1
169
170
171
  
              } else {
  
ab6d9045   Administrator   add Vitaliy's wid...
172
                  $imageLink = '/storage/'.$this->getUserPath().'/'.$md5_file.'/'.'original'.'.'.$model->file->extension;
29b842c0   Administrator   add field v.1
173
174
  
              }
eb7e82fb   Administrator   29.02.16
175
176
  
  
29b842c0   Administrator   add field v.1
177
              if($model->multi){
ea09d15d   Yarik   test
178
                  $view = $this->renderPartial('@common/widgets/views/_gallery_item', [
29b842c0   Administrator   add field v.1
179
180
                      'item' => ['image'=>$imageLink],
                  ]);
29b842c0   Administrator   add field v.1
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
                  return json_encode(['link'=>$imageLink, 'view' =>$view]);
  
  
              } else {
                  return json_encode(['link'=>$imageLink]);
              }
  
  
          }
      }
  
  
      public function getex($filename) {
          return end(explode(".", $filename));
      }
  
  
      public function actionImagesUpload(){
ab6d9045   Administrator   add Vitaliy's wid...
199
  
29b842c0   Administrator   add field v.1
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
          if($_FILES['upload'])
          {
              if (($_FILES['upload'] == "none") OR (empty($_FILES['upload']['name'])) )
              {
                  $message = "Вы не выбрали файл";
              }
              else if ($_FILES['upload']["size"] == 0 OR $_FILES['upload']["size"] > 2050000)
              {
                  $message = "Размер файла не соответствует нормам";
              }
              else if (($_FILES['upload']["type"] != "image/jpeg") AND ($_FILES['upload']["type"] != "image/jpeg") AND ($_FILES['upload']["type"] != "image/png") AND ($_FILES['upload']['type'] != 'image/gif'))
              {
                  $message = "Допускается загрузка только картинок JPG и PNG.";
              }
              else if (!is_uploaded_file($_FILES['upload']["tmp_name"]))
              {
                  $message = "Что-то пошло не так. Попытайтесь загрузить файл ещё раз.";
              }
              else{
ab6d9045   Administrator   add Vitaliy's wid...
219
220
221
222
223
224
225
226
227
228
229
230
231
                  $name =$_FILES['upload']['name'].'.'.$this->getex($_FILES['upload']['name']);
  
                  $path = "../../storage/".$this->getUserPath()."/images/";
                  if(!is_dir($path)) {
                      mkdir($path, 0755, true);
                  }
  
  
  
                  move_uploaded_file($_FILES['upload']['tmp_name'], $path.$name);
  
                  $full_path = '/storage/'.$this->getUserPath().'/images/'.$name;
  
29b842c0   Administrator   add field v.1
232
                  $message = "Файл ".$_FILES['upload']['name']." загружен";
ab6d9045   Administrator   add Vitaliy's wid...
233
  
29b842c0   Administrator   add field v.1
234
235
236
237
238
239
240
241
242
  
              }
              $callback = $_REQUEST['CKEditorFuncNum'];
              echo '<script type="text/javascript">window.parent.CKEDITOR.tools.callFunction("'.$callback.'", "'.$full_path.'", "'.$message.'" );</script>';
          }
      }
  
  
  }