Esempio n. 1
0
 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);
 }