Blame view

common/modules/file/controllers/UploaderController.php 5.41 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;
6676fbc7   Administrator   28.04.16 перенес ...
9
  use common\modules\file\components\UploaderComponent;
29b842c0   Administrator   add field v.1
10
  use Yii;
eb7e82fb   Administrator   29.02.16
11
  use yii\helpers\ArrayHelper;
29b842c0   Administrator   add field v.1
12
  use yii\web\UploadedFile;
8c448b56   Administrator   add yii jquery
13
  use common\modules\file\models\ImageSizerForm;
29b842c0   Administrator   add field v.1
14
  use yii\web\Controller;
29b842c0   Administrator   add field v.1
15
  
ab6d9045   Administrator   add Vitaliy's wid...
16
  class UploaderController extends Controller {
29b842c0   Administrator   add field v.1
17
  
29b842c0   Administrator   add field v.1
18
19
  
  
ab6d9045   Administrator   add Vitaliy's wid...
20
21
22
23
24
25
26
27
      private function getUserPath(){
          if(isset(Yii::$app->user->id)){
              return 'user_'.Yii::$app->user->id;
          }else {
              return 'guest';
          }
      }
  
29b842c0   Administrator   add field v.1
28
29
  
  
29b842c0   Administrator   add field v.1
30
31
32
33
      private function deleteImages($old_img){
  
          if(!empty($old_img) && file_exists($_SERVER['DOCUMENT_ROOT'].$old_img)){
  
eb7e82fb   Administrator   29.02.16
34
35
36
37
38
39
40
41
42
43
44
45
46
              $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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
  
          }
      }
  
      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
64
65
66
67
68
69
70
71
72
                  $model->save();
              }
          }
  
      }
  
  
      public function actionDownloadPhoto()
      {
29b842c0   Administrator   add field v.1
73
74
75
          $model = new ImageSizerForm();
  
          $request = Yii::$app->request->post();
ea09d15d   Yarik   test
76
  
29b842c0   Administrator   add field v.1
77
78
          if ($request) {
  
033f9331   Administrator   09.02.16
79
              $model->multi = isset($request['multi'])? 1 : 0;
ea09d15d   Yarik   test
80
  
29b842c0   Administrator   add field v.1
81
82
              $model->file = UploadedFile::getInstance($model, 'file');
  
ab6d9045   Administrator   add Vitaliy's wid...
83
              $md5_file = md5_file($model->file->tempName).rand(1, 1000);
29b842c0   Administrator   add field v.1
84
  
ab6d9045   Administrator   add Vitaliy's wid...
85
              $imgDir = Yii::getAlias('@storage/'.$this->getUserPath().'/'.$md5_file.'/');
29b842c0   Administrator   add field v.1
86
87
88
89
90
91
92
93
94
  
              $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
95
  
eb7e82fb   Administrator   29.02.16
96
              if(isset($request['size'] )){
29b842c0   Administrator   add field v.1
97
  
eb7e82fb   Administrator   29.02.16
98
                  $request['size'] = ArrayHelper::toArray(json_decode($request['size']));
29b842c0   Administrator   add field v.1
99
  
eb7e82fb   Administrator   29.02.16
100
101
102
103
104
105
106
                  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;
  
6676fbc7   Administrator   28.04.16 перенес ...
107
108
109
                          $resizer = new UploaderComponent();
  
                          $resizer->resizeImg($size['width'], $size['height'], $imageOrigAlias,$imageAlias);
eb7e82fb   Administrator   29.02.16
110
111
112
  
                      }
                  }
29b842c0   Administrator   add field v.1
113
114
115
  
              } else {
  
ab6d9045   Administrator   add Vitaliy's wid...
116
                  $imageLink = '/storage/'.$this->getUserPath().'/'.$md5_file.'/'.'original'.'.'.$model->file->extension;
29b842c0   Administrator   add field v.1
117
118
  
              }
eb7e82fb   Administrator   29.02.16
119
120
  
  
29b842c0   Administrator   add field v.1
121
              if($model->multi){
ea09d15d   Yarik   test
122
                  $view = $this->renderPartial('@common/widgets/views/_gallery_item', [
29b842c0   Administrator   add field v.1
123
124
                      'item' => ['image'=>$imageLink],
                  ]);
29b842c0   Administrator   add field v.1
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
                  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...
143
  
29b842c0   Administrator   add field v.1
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
          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...
163
164
165
166
167
168
169
170
171
172
173
174
175
                  $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
176
                  $message = "Файл ".$_FILES['upload']['name']." загружен";
ab6d9045   Administrator   add Vitaliy's wid...
177
  
29b842c0   Administrator   add field v.1
178
179
180
181
182
183
184
185
186
  
              }
              $callback = $_REQUEST['CKEditorFuncNum'];
              echo '<script type="text/javascript">window.parent.CKEDITOR.tools.callFunction("'.$callback.'", "'.$full_path.'", "'.$message.'" );</script>';
          }
      }
  
  
  }