コード例 #1
0
 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));
 }