/**
  * Генерируем служебную почту (если она не была сгенерирована)
  */
 function create_service_mail()
 {
     $mail = _Core_Request::getCurrent()->post['mail'];
     $user = Core::getInstance()->user;
     if (Helper_Mail::validateEmail($mail)) {
         if ($this->model->checkServiceEmailIsUnique($mail)) {
             if ($this->model->createServiceMail($user, $mail)) {
                 $this->tpl->assign('result', array('text' => 'Email успешно создан'));
             }
         } else {
             $this->tpl->assign('error', array('text' => "Придумайте другой email.\nЭтот email уже занят"));
         }
     } else {
         $this->tpl->assign('error', array('text' => 'Используйте только английские буквы и цифры'));
     }
 }
 /**
  * Создаём нового пользователя
  * @param $args array mixed
  * @return void
  */
 function new_user()
 {
     $login = isset($_POST['login']) ? trim((string) $_POST['login']) : '';
     $password = isset($_POST['password']) ? trim((string) $_POST['password']) : '';
     $confirm_password = isset($_POST['confirm_password']) ? trim((string) $_POST['confirm_password']) : '';
     $name = isset($_POST['name']) ? trim((string) $_POST['name']) : '';
     $mail = isset($_POST['mail']) ? trim((string) $_POST['mail']) : '';
     // Проверяем валидность заполненных данных
     if (!empty($password) && !empty($confirm_password)) {
         if ($password === $confirm_password) {
             $sha1_password = SHA1($password);
         } else {
             $this->_error['pass'] = "******";
         }
     } else {
         $this->_error['pass'] = "******";
     }
     if (!$this->validate_login($login)) {
         $this->_error['login'] = "******";
     }
     $login = htmlspecialchars($login);
     if (!Helper_Mail::validateEmail($mail)) {
         $this->_error['mail'] = "Неверно введен e-mail!";
     }
     $mail = htmlspecialchars($mail);
     // Проверить наличие пользователя
     // TODO: model->exist_user() готовит собщение об ошибке - надо перенести сюда
     $this->model->exist_user($login, $mail);
     // Если нет ошибок создать и авторизовать пользователя
     $errors = array_merge($this->model->getErrors(), $this->_error);
     if (!$errors) {
         // Создать пользователя
         $this->model->new_user($name, $login, $password, $confirm_password, $mail);
         // Отправить ему уведомление с реквизитами
         $this->_send_mail_success($name, $login, $password, $mail);
         $user = Core::getInstance()->user;
         if (!$user->initUser($login, $sha1_password)) {
             $this->_output(array('error' => array('text' => 'Некорректный логин или пароль!')));
         }
         // Авторизовать пользователя
         $this->_authenticateUser($login, $sha1_password);
         $answer = array('result' => array('text' => 'Спасибо, вы зарегистрированы!', 'redirect' => URL_ROOT_MAIN . "my/review/"));
     } else {
         $answer = array('error' => array('text' => implode('<br />', $errors)));
     }
     $this->_output($answer);
 }
 /**
  * @dataProvider planForValidateEmail
  */
 public function testValidateEmail($mail, $bool)
 {
     $this->assertEquals(Helper_Mail::validateEmail($mail), $bool);
 }