public function actionInvite_accept($book_id) { $this->book = Book::model()->with("owner")->membership(Yii::app()->user->id)->findByPk(intval($book_id)); if (!$this->book) { throw new CHttpException(404, "Такого перевода не существует. Возможно, он удалён."); } if ($this->book->facecontrol == Book::FC_OPEN) { Yii::app()->user->setFlash("info", "В этом переводе больше не требуется вступать в группу."); $this->redirect($this->book->url); } // если я уже в группе, то я идём нахуй if ($this->book->membership->status == GroupMember::MEMBER || $this->book->membership->status == GroupMember::MODERATOR) { $this->invite_delete(); Yii::app()->user->setFlash("success", "Вы уже состоите в этой группе перевода."); $this->redirect($this->book->url); } // проверяем, есть ли приглашение вообще if (!$this->book->user_invited(Yii::app()->user->id)) { throw new CHttpException(403, "Сожалеем, но ваше приглашение в группу устарело или отозвано пригласившим вас пользователем."); } // вступаем в группу. status до этого - NULL, BANNED или либо CONTRIBUTOR // NULL - insert // CONTRIBUTOR: update Yii::app()->db->createCommand("SELECT group_join(:user_id, :book_id)")->execute(array(":user_id" => Yii::app()->user->id, ":book_id" => $this->book->id)); // Добавляем в закладки Bookmark::set($this->book->id); // стираем инвайт и редиректимся на оглавление $this->invite_delete(); Yii::app()->user->setFlash("success", "Добро пожаловать в группу перевода!"); $this->redirect($this->book->url); }