public function updateImage() { $md5_1 = \Yii::$app->security->generateRandomString(2); $md5_2 = \Yii::$app->security->generateRandomString(2); /* @var $modelPhoto \phpnt\cropper\models\Photo */ $paramsCrop = Json::decode($this->imageData['imageCrop']); $model = new ImageForm(); $model->image = UploadedFile::getInstance($model, 'image'); if ($model->validate()) { $smallFileName = time() . '_' . \Yii::$app->user->id . '_small.' . $model->image->extension; $fileName = time() . '_' . \Yii::$app->user->id . '.' . $model->image->extension; $modelPhoto = Photo::findOne($this->imageData['image_id']); $modelDeletePhoto = new Photo(); $modelDeletePhoto->file = $modelPhoto->file; $modelDeletePhoto->file_small = $modelPhoto->file_small; $modelDeletePhoto->type = $modelPhoto->type; $modelDeletePhoto->object_id = $modelPhoto->object_id; $modelDeletePhoto->user_id = $modelPhoto->user_id; $modelDeletePhoto->deleted = 1; $modelDeletePhoto->save(); $deleteFile = $modelPhoto->file; $deleteSmallFile = $modelPhoto->file_small; $modelPhoto->file = $this->imageData['imagePath'] . $md5_1 . '/' . $md5_2 . '/' . $fileName; $modelPhoto->file_small = $this->imageData['imagePath'] . $md5_1 . '/' . $md5_2 . '/' . $smallFileName; $modelPhoto->type = $this->imageData['images_label']; $modelPhoto->object_id = $this->imageData['object_id']; $modelPhoto->user_id = \Yii::$app->user->id; $commit = true; $transaction = \Yii::$app->db->beginTransaction(); try { if ($modelPhoto->save() && $commit) { FileHelper::createDirectory(\Yii::getAlias($this->imageData['baseUrl']) . $this->imageData['imagePath'] . $md5_1 . '/' . $md5_2 . '/', $mode = 509); if ($model->image->saveAs(\Yii::getAlias($this->imageData['baseUrl']) . $this->imageData['imagePath'] . $md5_1 . '/' . $md5_2 . '/' . $fileName)) { $image = Image::getImagine(); $newImage = $image->open(\Yii::getAlias($this->imageData['baseUrl']) . $this->imageData['imagePath'] . $md5_1 . '/' . $md5_2 . '/' . $fileName); $newImage->rotate($paramsCrop['rotate']); $paramsCrop['x'] = $paramsCrop['x'] > 0 ? $paramsCrop['x'] : 0; $paramsCrop['y'] = $paramsCrop['y'] > 0 ? $paramsCrop['y'] : 0; if ($newImage->crop(new Point($paramsCrop['x'], $paramsCrop['y']), new Box($paramsCrop['width'], $paramsCrop['height']))->save(\Yii::getAlias($this->imageData['baseUrl']) . $this->imageData['imagePath'] . $md5_1 . '/' . $md5_2 . '/' . $fileName)) { $newImage = $image->open(\Yii::getAlias($this->imageData['baseUrl']) . $this->imageData['imagePath'] . $md5_1 . '/' . $md5_2 . '/' . $fileName); $newImage->thumbnail(new Box($this->imageData['imageSmallWidth'], $this->imageData['imageSmallHeight']))->save(\Yii::getAlias($this->imageData['baseUrl']) . $this->imageData['imagePath'] . $md5_1 . '/' . $md5_2 . '/' . $smallFileName); if ($this->deleteImageFile($deleteFile) && $this->deleteImageFile($deleteSmallFile)) { $transaction->commit(); } } } \Yii::$app->session->set('image', $modelPhoto->id); \Yii::$app->session->remove('error'); } else { \Yii::$app->session->set('error', 'Изображение не добавлено.'); \Yii::$app->session->remove('image'); } } catch (Exception $e) { $this->deleteImageFile(\Yii::getAlias($this->imageData['baseUrl']) . $this->imageData['imagePath'] . $md5_1 . '/' . $md5_2 . '/' . $fileName); $this->deleteImageFile(\Yii::getAlias($this->imageData['baseUrl']) . $this->imageData['imagePath'] . $md5_1 . '/' . $md5_2 . '/' . $smallFileName); $transaction->rollBack(); } } else { \Yii::$app->session->set('error', $model->errors['image']['0']); \Yii::$app->session->remove('image'); } }