/** * Если пользователь зарегистрировался и сохранился то возвращаем //тру * * @return boolean */ public function checkAndLoginNewplayer() { if ($this->validate()) { // Если пароли не совпадают выдадим ошибку if ($this->password != $this->password_repeat) { $this->addError('password', 'Вы указали разные значения в поле пароль'); return false; } else { $this->password = md5($this->password); $this->date_regist = time(); if ($this->save()) { // Отправить письмо с подтверждением email $this->sendAndCheckEmail(); // Проверка и создание реферала $session = new CHttpSession(); $session->open(); if (isset($session['ref_id'])) { $player = Player::model()->findByAttributes(array('id' => (int) $session['ref_id'])); if ($player != null) { $referal = new Referals(); $referal->id_player = $player->id; $referal->id_referal = $this->id; $referal->is_active = Referals::$NOT_ACTIVE; $referal->save(); } } $statistic = new Statistic(); $statistic->id_player = $this->id; $statistic->invest_summ = 0; $statistic->out_sum = 0; $statistic->questions_summ_complette = 0; $statistic->referals = 0; $statistic->save(); $identity = new UserIdentity($this->email, $this->password); $identity->authenticate(); Yii::app()->user->login($identity, 0); return true; } else { return false; } } } else { return false; } }
/** * Создание аккаунта на сайте * * @return Users */ private function _createAccount() { $transaction = db()->beginTransaction(); $login = $this->getLogin(); try { // Создаю нового юзера $user = new Users(); $user->login = $login; $user->password = $this->password; $user->email = $this->email; $user->activated = config('register.confirm_email') ? Users::STATUS_INACTIVATED : Users::STATUS_ACTIVATED; $user->role = Users::ROLE_DEFAULT; $user->ls_id = $this->gs_list[$this->gs_id]['login_id']; $user->save(FALSE); // Referer if ($this->referer != '' && $this->refererInfo) { $referals = new Referals(); $referals->referer = $this->refererInfo->getPrimaryKey(); $referals->referal = $user->getPrimaryKey(); $referals->save(FALSE); } // Удаляю реферальную куку if (isset(request()->cookies[app()->params['cookie_referer_name']])) { unset(request()->cookies[app()->params['cookie_referer_name']]); } $transaction->commit(); return $user; } catch (Exception $e) { $transaction->rollback(); // Удаляю созданный аккаунт на сервере $this->l2->getDb()->createCommand("DELETE FROM {{accounts}} WHERE login = :login LIMIT 1")->bindParam('login', $login, PDO::PARAM_STR)->execute(); user()->setFlash(FlashConst::MESSAGE_ERROR, Yii::t('main', 'Произошла ошибка! Попробуйте повторить позже.')); return FALSE; } }