Вход Регистрация
Файл: mg-core/controllers/registration.php
Строк: 75
<?php

/**
 * Контроллер: Registration
 *
 * Класс Controllers_Registration обрабатывает действия пользователей на странице регистрации нового пользователя.
 * - Проверяет корректность данных;
 * - Регистрирует учетную запись пользователя.
 *
 * @author Авдеев Марк <mark-avdeev@mail.ru>
 * @package moguta.cms
 * @subpackage Controller
 */
class Controllers_Registration extends BaseController {

  private 
$error;
  private 
$userData;
  private 
$fPass;

  function 
__construct() {
    
$this->fPass = new Models_Forgotpass;
    
$form true// Отображение формы.

    // Оброботка действий пользователя при регистрации.
    
if (isset($_POST['registration'])) {
      
      
// Если данные введены верно.
      
if (!$this->unValidForm()) {
        
USER::add($this->userData);
        
$message '<span class="succes-reg">Вы успешно зарегистрировались! Для активации пользователя Вам необходимо перейти по ссылке высланной на Ваш электронный адрес <strong>'.$this->userData['email'].'</strong></span>';
        
$form false;
        
        
// Рассылаем письма со ссылкой для подтверждения регистрации.
        
$this->_sendActivationMail($this->userData['email']);
      } else {
        
$error $this->error;
        
$form true;
      }
    }
    
    
// Обработка действий перехода по ссылки.
    
if (URL::getQueryParametr('id')) {
      
$userInfo USER::getUserById(URL::getQueryParametr('id'));
      
$hash URL::getQueryParametr('sec');
      
      
// Если присланный хэш совпадает с хэшом из БД для соответствующего id.
      
if ($userInfo->restore == $hash) {
        
        
// Меняет в БД случейным образом хэш, делая невозможным повторный переход по ссылки.
        
$this->fPass->sendHashToDB($userInfo->email$this->fPass->getHash('0'));
        
$message 'Ваша учетная запись активирована. Теперь Вы можете <a href="'.SITE.'/enter">войти в личный кабинет</a> используя логин и пароль заданный при регистрации.';
        
$form false;
        
$this->fPass->activateUser(URL::getQueryParametr('id'));
      } else {
        
$error 'Некорректная ссылка. Повторите активацию!';
        
$form false;
      }
    }
    
    
// Обработка действий при запросе на повторную активацию.
    
if ($_POST['reActivate']) {
      
$email URL::getQueryParametr('activateEmail');
      if (
USER::getUserInfoByEmail($email)) {
        
$this->_sendActivationMail($email);
        
$message 'Для активации пользователя Вам необходимо перейти по ссылке высланной на Ваш электронный адрес '.$this->userData['email'];
        
$form false;
      } else {
        
$error 'К сожалению, такой логин не найден. Если вы уверены, что данный логин существует, свяжитесь, пожалуйста, с нами.';
        
$form false;
      }
    }

    
$this->data = array(
      
'error' => $error// Сообщение об ошибке.
      
'message' => $message// Информационное сообщение
      
'form' => $form// Отображение формы.
      
'meta_title' => 'Регистрация',
      
'meta_keywords' => !empty($model->currentCategory['meta_keywords']) ? $model->currentCategory['meta_keywords'] : "регистрация, зарегистрироваться",
      
'meta_desc' => !empty($model->currentCategory['meta_desc']) ? $model->currentCategory['meta_desc'] : "Зарегистрируйтесь в системе, чтобы получить дополнительные возможности, такие как просмотр состояния заказа",
    );
  }

  
/**
   * Метод проверяет корректность данных введенных в форму регистрации.
   * @return boolean
   */
  
public function unValidForm() {

    if (!
URL::getQueryParametr('name')) {
      
$name 'Пользователь';
    } else {
      
$name URL::getQueryParametr('name');
    }

    
$this->userData = array(
      
'pass' => URL::getQueryParametr('pass'),
      
'email' => URL::getQueryParametr('email'),
      
'role' => 2,
      
'name' => $name,
      
'sname' => URL::getQueryParametr('sname'),
      
'address' => URL::getQueryParametr('address'),
      
'phone' => URL::getQueryParametr('phone'),
    );

    
$registration = new Models_Registration;

    if (
$err $registration->validDataForm($this->userData)) {
      
$this->error $err;
      return 
true;
    }

    return 
false;
  }

  
/**
   * Метод отправки письма для активации пользователя.
   * @param type $userEmail
   * @return void 
   */
  
private function _sendActivationMail($userEmail) {
    
$userId USER::getUserInfoByEmail($userEmail)->id;
    
$hash $this->fPass->getHash($userEmail);
    
$this->fPass->sendHashToDB($userEmail$hash);
    
$siteName MG::getOption('sitename');
    
$link '<a href="'.SITE.'/registration?sec='.$hash.'&id='.$userId.'" target="blank">'.SITE.'/registration?sec='.$hash.'&id='.$userId.'</a>';
    
    
$paramToMail = array(
     
'siteName' => $siteName,
     
'userEmail' => $userEmail,
     
'link' => $link,     
    );
   
    
$message MG::layoutManager('email_registry',$paramToMail);
    
$emailData = array(
      
'nameFrom' => $siteName,
      
'emailFrom' => MG::getSetting('noReplyEmail'),
      
'nameTo' => 'Пользователю сайта '.$siteName,
      
'emailTo' => $userEmail,
      
'subject' => 'Активация пользователя на сайте '.$siteName,
      
'body' => $message,
      
'html' => true
    
);

    
$this->fPass->sendUrlToEmail($emailData);
  }

}
Онлайн: 1
Реклама