Source for file Register.class.php

Documentation is available at Register.class.php

  1. /**
  2.  * Содержит класс Register
  3.  *
  4.  * @package energine
  5.  * @author 1m.dm
  6.  * @copyright ColoCall 2006
  7.  * @version $Id: fsource_energine__modulesusercomponentsRegister.class.php.html,v 1.1 2007/09/17 14:32:32 pavka Exp $
  8.  */
  9.  
  10. require_once 'core/modules/share/components/DBDataSet.class.php';
  11. require_once 'core/framework/User.class.php';
  12. require_once('core/framework/Mail.class.php');
  13.  
  14. /**
  15.  * Форма регистрации
  16.  *
  17.  * @package energine
  18.  * @subpackage user
  19.  */
  20. class Register extends DBDataSet {
  21.  
  22.     /**
  23.      * Экземпляр класса User
  24.      *
  25.      * @var User 
  26.      * @access private
  27.      */
  28.     private $user;
  29.  
  30.     /**
  31.      * Конструктор класса
  32.      *
  33.      * @param string $name 
  34.      * @param string $module 
  35.      * @param Document $document 
  36.      * @param array $params 
  37.      * @access public
  38.      */
  39.     public function __construct($name$moduleDocument $document,  array $params null{
  40.         parent::__construct($name$module$document,  $params);
  41.         $this->setDataSetAction('save-user');
  42.         $this->setType(self::COMPONENT_TYPE_FORM_ADD);
  43.         $this->user = new User();
  44.         $this->setTableName(User::USER_TABLE_NAME);
  45.     }
  46.     /**
  47.      * Переопределен параметр active
  48.      *
  49.      * @return int 
  50.      * @access protected
  51.      */
  52.  
  53.     protected function defineParams({
  54.         $result = array_merge(parent::defineParams(),
  55.         array(
  56.         'active'=>true,
  57.         ));
  58.         return $result;
  59.     }
  60.     /**
  61.      * Обработка возможных ошибок сохранения + редирект на страницу результата
  62.      *
  63.      * @return void 
  64.      * @access protected
  65.      */
  66.     protected function save({
  67.         try {
  68.             $this->saveData();
  69.             $_SESSION['saved'true;
  70.             $this->response->redirectToCurrentSection('success/');
  71.         }
  72.         catch (SystemException $e{
  73.             $this->generateError(SystemException::ERR_NOTICE$e->getMessage());
  74.             $this->setParam('action''main');
  75.             $this->prepare();
  76.         }
  77.     }
  78.  
  79.     /**
  80.      * Сохранение данных.
  81.      *
  82.      * @return array 
  83.      * @access protected
  84.      */
  85.     protected function saveData({
  86.         $password $_POST[$this->getTableName()]['u_password'User::generatePassword();
  87.  
  88.         $result $this->user->create($_POST[$this->getTableName()]);
  89.         if (!$result{
  90.             $errors $this->user->getErrors();
  91.             $errror $errors[0];
  92.             throw new SystemException($errror->getMessage()SystemException::ERR_NOTICE);
  93.         }
  94.         else {
  95.             $mailer new Mail();
  96.             $mailer->setFrom($this->getConfigValue('mail.from'));
  97.             $mailer->setSubject($this->translate('TXT_SUBJ_REGISTER'));
  98.             $mailer->setText(sprintf($this->translate('TXT_BODY_REGISTER'),$this->user->getValue('u_name')$password));
  99.             $mailer->addTo($this->user->getValue('u_name'));
  100.             $mailer->send();
  101.  
  102.         }
  103.     }
  104.  
  105.     /**
  106.      * Получает список доступных полей из таблицы пользователей и генерит форму
  107.      *
  108.      * @return void 
  109.      * @access protected
  110.      */
  111.     protected function prepare({
  112.         parent::prepare();
  113.         //u_id и u_is_active нам не нужны ни при каких раскладах
  114.         if ($this->getDataDescription()->getFieldDescriptionByName('u_id')) {
  115.            $this->getDataDescription()->removeFieldDescription($this->getDataDescription()->getFieldDescriptionByName('u_id'));
  116.         }
  117.  
  118.         if ($this->getDataDescription()->getFieldDescriptionByName('u_is_active')) {
  119.            $this->getDataDescription()->removeFieldDescription($this->getDataDescription()->getFieldDescriptionByName('u_is_active'));
  120.         }
  121.         //Тут таки нужно вернуться к параметру confirmationNeeded
  122.         if ($this->getDataDescription()->getFieldDescriptionByName('u_password')) {
  123.            $this->getDataDescription()->removeFieldDescription($this->getDataDescription()->getFieldDescriptionByName('u_password'));
  124.         }
  125.         $this->getDataDescription()->getFieldDescriptionByName('u_name')->setType(FieldDescription::FIELD_TYPE_EMAIL);
  126.     }
  127.  
  128.     /**
  129.      * Выводит результат регистрации.
  130.      *
  131.      * @return void 
  132.      * @access protected
  133.      */
  134.     protected function success({
  135.         //если в сессии нет переменной saved значит этот метод пытаются вызвать напрямую. Не выйдет!
  136.         if (!isset($_SESSION['saved'])) {
  137.             throw new SystemException('ERR_404'SystemException::ERR_404);
  138.         }
  139.         //unset($_SESSION['saved']);
  140.         if ($textBlock $this->document->componentManager->getComponentByName('RegTextBlock')) {
  141.             $textBlock->disable();
  142.         }
  143.         $this->setBuilder($this->createBuilder());
  144.  
  145.         $dataDescription new DataDescription();
  146.         $ddi new FieldDescription('success_message');
  147.         $ddi->setType(FieldDescription::FIELD_TYPE_TEXT);
  148.         $ddi->setMode(FieldDescription::FIELD_MODE_READ);
  149.         $ddi->removeProperty('title');
  150.         $dataDescription->addFieldDescription($ddi);
  151.  
  152.         $data new Data();
  153.         $di new Field('success_message');
  154.         $di->setData($this->translate('TXT_USER_REGISTRED'));
  155.         $data->addField($di);
  156.  
  157.         $this->setDataDescription($dataDescription);
  158.         $this->setData($data);
  159.     }
  160. }

Documentation generated on Mon, 17 Sep 2007 13:31:07 +0300 by phpDocumentor 1.4.0a2