public function actionRegistration() { $model = new RegistrationForm(); if (!empty($_POST['RegistrationForm'])) { $model->attributes = $_POST['RegistrationForm']; if ($model->validate()) { if (User::model()->exists('email=:email and status!=:status', array(':email' => $model->email, ':status' => L::r_item('userStatus', 'not_active')))) { $model->addError('email', 'Пользователь с таким почтовым адресом уже зарегестрирован в нашей системе.'); } else { // регистрация пошла, отпраляю почту и создаю пользователя со статусом "не активен" Yii::import('ext.yii-mail.*'); $message = new YiiMailMessage(); $message->view = 'email_confirmation'; $message->setBody(array('hash' => sha1($model->email . Yii::app()->params['salt']), 'email' => $model->email, 'date' => date('YmdHis')), 'text/html'); $message->subject = Yii::app()->name . ' - Подтверждение почтового адреса/E-mail confirmation'; $message->addTo($model->email); $message->from = Yii::app()->params['registrationEmail']; if (Yii::app()->mail->send($message)) { if (!($user = User::model()->find('email=:email', array(':email' => $model->email)))) { $user = new User(); } else { # надо удалить потеряного клиента Client::model()->deleteByPk($user->username); } $user->username = $model->username; $user->password = $model->password; $user->password_confirm = $model->password_confirm; $user->created = date('Y-m-d H:i:s'); $user->email = $model->email; $user->city = $model->city; $user->name = $model->name; $user->status = L::r_item('userStatus', 'not_active'); if ($user->save()) { if (!($client = Client::model()->find('username=:username', array(':username' => $user->username)))) { $client = new Client(); } # Добавляю клиента $client->attributes = $model->attributes; $client->card = Client::model()->find(array('select' => 'max(card) as maxCardNumber'))->maxCardNumber + 1; $client->save(); Yii::app()->user->setFlash('registration', 'На указанный Вами e-mail было отправленно письмо с кодом подтверждения. Введите его.'); $this->redirect(array('users/confirmation')); } } else { $model->addError('email', 'Мы не можем отправить почту на указаный Вами адрес.'); } } } } $model->password = null; $model->password_confirm = null; $this->render('registration', array('registration_form' => $model)); }