public function actionPhotoEdit($id) { $model = Photo::findOne(['id' => $id]); $tmpI = $model->src; $tmpD = $model->date; if ($model->id_author != Yii::$app->user->getId()) { return $this->redirect('/'); } if (!$model) { throw new \yii\web\HttpException(404); } $all_categories = Category::getAllTranslatedCategory(); $all_subcategories = Category::getAllTranslatedSubCategoryByCategory($model->id_level_1); $this->redirectOnHomepageIfGuest($user, $isMyProfile); $marksNames = Marks::getNamesByIdPhoto($id); $date = explode(' ', $model->date); $date = explode('-', $date[0]); $photoSrc = '/img/photos/' . $date[0] . '/' . $date[1] . '/' . $date[2] . '/original_' . $model->src; $request = Yii::$app->request; if ($request->isAjax && $model->load($request->post())) { Yii::$app->response->format = Response::FORMAT_JSON; return ActiveForm::validate($model); } if ($model->load($request->post()) && $model->validate()) { $model->src = $tmpI; if (!Category::isSetCategory($model->id_level_1) || !SubCategoryController::isValidCategory($model->id_level_1, $model->id_level_2) && Category::hasSubCategory($model->id_level_1) || !User::checkAlbum($model->id_album)) { return $this->redirect("/"); } Yii::$app->db->createCommand("DELETE FROM marks_photo WHERE id_photo={$id}")->execute(); if ($request->post('mark')) { $marks_arr_new = $request->post('mark'); } else { $marks_arr_new = []; } if ($model->id_marks) { $marks_arr_new[$model->id_marks] = ''; } $marks_arr_new = \app\components\Marks::format($marks_arr_new); $marks_tmp = []; foreach ($marks_arr_new as $k => $v) { $marks_tmp[] = $k; } //список тих що в базі даних $marks_tmp = Marks::getMarksByNames($marks_tmp); //масив id тих що в бд $marks_tmp_id = []; foreach ($marks_tmp as $v) { $marks_tmp_id[] = $v['id']; } //обновилення coununter тих о в бд if ($marks_tmp_id) { Marks::updateCountMarks($marks_tmp_id); } //позначаємо ті що є в бд foreach ($marks_tmp as $k => $v) { $marks_arr_new[$k] = true; } //список тих що нема в бд $marks_tmp = []; foreach ($marks_arr_new as $k => $v) { if (!$v) { $marks_tmp[] = $k; } } if ($marks_tmp) { Marks::insertMarks($marks_tmp); } $marks_tmp = Marks::getMarksByNames($marks_tmp); foreach ($marks_tmp as $v) { $marks_tmp_id[] = $v['id']; } //зберігаємо данні в БД $model->date = date('Y-m-d H:i:s'); $model->id_author = Yii::$app->user->getId(); $model->views = 1; $model->rating_all = 1; if (Album::isPrivacyAlbum($model->id_album)) { $model->is_closed = 1; } if (isset($_POST['private'])) { $model->erotic = 1; } else { $model->erotic = 0; } $model->date = $tmpD; $model->save(); if ($marks_tmp_id) { Marks::addMarksToPhoto($marks_tmp_id, $model->id); } // Якщо це перше фото в альбомі, то встановлюємо його як обкладинку альбому if (Photo::thisFirstAlbumPhoto($model->id_album) == 1) { Photo::setPhotoToCover($model->id, $model->id_album); } //формуємо повідомлення про вдале додання нової фотографії // @todo перекласти \Yii::$app->getSession()->setFlash('notify', 'Фотографія успішно редагована!'); return $this->redirect("/photo" . $model->id); } $model->id_marks = ''; return $this->render('photo_edit', ['model' => $model, 'all_categories' => $all_categories, 'all_subcategories' => $all_subcategories, 'user' => $user, 'isMyProfile' => $isMyProfile, 'marksNames' => $marksNames, 'photoSrc' => $photoSrc]); }