public function checkEmail($attribute) { $value = $this->{$attribute}; $user = Users::model()->findByAttributes(['email' => $value]); /*if (!$user) { $this->addError($attribute, 'В системе нет пользователя с данной почтой'); return false; }*/ if ($user) { $group_member = GroupMember::model()->findByAttributes(['group_id' => $this->group_id, 'user_id' => $user->id]); if ($group_member) { $this->addError($attribute, 'Данный пользователь уже член вашей группы'); return false; } $group = Group::model()->findByPk($this->group_id); if ($group->owner_id == $user->id) { $this->addError($attribute, 'Администратор группы не может быть членом группы'); return false; } } $active_invites = GroupInvite::model()->findByAttributes(['group_id' => $this->group_id, 'email' => $value, 'status' => self::INVITE_CREATE]); if ($active_invites) { $this->addError($attribute, 'Данный пользователь уже имеет приглашение'); } }
public function getCountUserNotifications() { $user = Users::model()->findByPk(Yii::app()->user->getId()); if ($user) { $invites = GroupInvite::model()->count('email = :email AND status = 0', [':email' => $user->email]); return $invites; } else { return 0; } }
public function actionInvite($invite_id, $accept) { $invite = GroupInvite::model()->findByPk($invite_id); if (!$invite) { throw new CHttpException(404); } $invite->setAttribute('status', $accept == 1 ? GroupInvite::INVITE_ACCEPT : GroupInvite::INVITE_CANCELED); if ($accept == 1) { $group_member = new GroupMember(); $group_member->setAttributes(['group_id' => $invite->group_id, 'user_id' => Yii::app()->user->getId()]); $group_member->save(); } if ($invite->save()) { Yii::app()->user->setFlash('success', 'Приглашение ' . ($accept == 1 ? 'принято' : 'отклонено')); } else { Yii::app()->user->setFlash('error', 'Произошла ошибка'); } $this->redirect(['notifications']); }
public function actionInvite($hash, $type = 1) { if (!in_array($type, [1, 2])) { throw new CHttpException(404, 'Данный тип не существует'); } if ($type == 1) { $invite = GroupInvite::model()->with('group')->findByAttributes(['status' => GroupInvite::INVITE_CREATE, 'hash' => $hash]); } elseif ($type == 2) { $invite = Invite::model()->findByAttributes(['status' => Invite::INVITE_ACCEPT, 'hash' => $hash]); } if (!isset($invite)) { throw new CHttpException(404, 'Данное приглашение не найдено или было отменено'); } $model = new Users(); if (Yii::app()->request->isPostRequest) { $user = Yii::app()->request->getParam('Users'); $model->setAttributes($user); $model->setAttributes(['email' => $invite->email, 'password' => md5($user['password'])]); if ($model->save()) { Yii::app()->authManager->assign('user', $model->id); $user_identity = new UserIdentity($model->username, $model->password); $user_identity->authenticate(); Yii::app()->user->login($user_identity, 60 * 60 * 24 * 7); switch ($type) { case 1: $invite->setAttribute('status', GroupInvite::INVITE_ACCEPT); $invite->save(); $group_member = new GroupMember(); $group_member->setAttributes(['group_id' => $invite->group_id, 'user_id' => $model->id]); $group_member->save(); break; case 2: $invite->setAttribute('status', Invite::INVITE_USED); $invite->save(false); $group = new Group(); $group->setAttributes(['number' => $invite->group_number, 'owner_id' => $model->id]); $group->save(); } $this->redirect(['site/dashboard']); } } $this->render('invite', ['model' => $model]); }
public function actionDeleteInvite($invite_id, $confirm = 0) { $model = GroupInvite::model()->findByPk($invite_id); if (!$model || $model->status != GroupInvite::INVITE_CREATE) { throw new CHttpException(404, 'Элемент не найден'); } if ($confirm) { $model->setAttribute('status', GroupInvite::INVITE_CANCELED); if ($model->save()) { Yii::app()->user->setFlash('success', 'Приглашение успешно отменено'); } else { Yii::app()->user->setFlash('error', 'Ошибка отмены приглашения'); } $this->redirect(['moderators', 'id' => self::$group->number]); } $this->render('invite/delete', ['model' => $model]); }