Guest User

Untitled

a guest
Aug 24th, 2018
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 10.47 KB | None | 0 0
  1.     /**
  2.      * Default renderer for frontend.
  3.      * @return array
  4.      */
  5.     public function mainFe()
  6.     {
  7.         Css::addInclude(AITOM_ROOT . 'moduly/' . $this->_dir . '/css/fe.css');
  8.         Javascript::addInclude(AITOM_ROOT . 'moduly/' . $this->_dir . '/js/fe.js');
  9.         Javascript::addVariable('userWebPasswordMinLenght', self::PASSWORD_MIN_LENGHT);
  10.         Javascript::exportTranslation(array(
  11.             'uswErrorEmail',
  12.             'sysEmailError',
  13.             'uswErrorFirstname',
  14.             'uswErrorSurname',
  15.             'uswErrorPassword',
  16.             'uswErrorPasswordRepeat',
  17.             'uswDefaultErrorMsg'
  18.         ));
  19.         $name = Address::getParams();
  20.  
  21.         if (isset($name[0])) {
  22.             if ($name[0] === Lang::getTranslation('uswRegistrationIdent')) {
  23.                 // registration page
  24.                 Address::setParamUsage(0);
  25.                 Address::add(Lang::getTranslation('uswRegistration'), Address::getOriginalPathAsString() . '/' . Lang::getTranslation('uswRegistrationIdent'), TRUE);
  26.                 Address::setPageTitle(Lang::getTranslation('uswRegistration') . ' - ' . Address::getPageTitle());
  27.  
  28.                 if(array_key_exists('frmRegistration-submitted', $_POST) == FALSE)
  29.                     Smartyhandle::set('cfCaptcha', Exts::callFunction('CaptchaControl', 'getCaptchaHtmlImg'), TRUE);
  30.  
  31.                 if (array_key_exists('frmRegistration-submitted', $_POST)) {
  32.                     // process post data
  33.                     $errors = array();
  34.                     $values = $_POST;
  35.                     $verified = array();
  36.  
  37.                     try {
  38.                         // check post data
  39.                         if (self::verifyRequiredKeysFe($values) === TRUE) {
  40.                             foreach ($values as $key => $value) {
  41.                                 $verified[$key] = self::checkAndNormalizeDataFe($key, $value);
  42.                             }
  43.                         }
  44.  
  45.                         // spam control
  46.                         if (Exts::callFunction('CaptchaControl', 'verifiCaptchaCode', array('code' => $verified['code'])) === FALSE)
  47.                         {
  48.                             Smartyhandle::set('cfCaptcha', Exts::callFunction('CaptchaControl', 'getCaptchaHtmlImg'), TRUE);
  49.                             throw new InvalidStateException(Lang::getTranslation('cptCodeError'), 101010);
  50.                         }
  51.  
  52.  
  53.                         $data = array(
  54.                             'email%s' => $verified['email'],
  55.                             'password%s' => sha1($verified['password']),
  56.                             'name%s' => $verified['name'],
  57.                             'company%s' => $verified['company'],
  58.                             'phone%s' => $verified['phone'],
  59.                             'street%s' => $verified['street'],
  60.                             'city%s' => $verified['city'],
  61.                             'ic_code%s' => $verified['ic_code'],
  62.                             'dic_code%s' => $verified['dic_code'],
  63.                             'send_invoice_by%s' => $verified['send_invoice_by'],
  64.                             'postalcode%s' => $verified['postalcode'],
  65.                             'hide%i' => 0,
  66.                             'has_cor_info%i' => ($verified['has_cor_info']) ? true : false,
  67.                             'cor_company%s' => $verified['cor_company'],
  68.                             'cor_name%s' => $verified['cor_name'],
  69.                             'cor_street%s' => $verified['cor_street'],
  70.                             'cor_city%s' => $verified['cor_city'],
  71.                             'cor_postalcode%s' => $verified['cor_postalcode'],
  72.                             'cor_phone%s' => $verified['cor_phone'],
  73.                             'cor_notice%s' => $verified['cor_notice'],
  74.                             'is_recepient%i' => ($verified['send_invoice_by']) ? UserWebModel::SEND_INVOICE_BY_POST : UserWebModel::SEND_INVOICE_BY_MAIL,
  75.                             'created%t' => dibi::datetime(),
  76.                         );
  77.  
  78.                         if ($this->model->add($data)) {
  79.                             Messages::add(Lang::getTranslation('uswRegistrationOK'), Messages::OK);
  80.  
  81.                             // send info mail
  82.                             Smartyhandle::set('uswMail', array(
  83.                                 'email' => $verified['email'],
  84.                                 'password' => $verified['password'],
  85.                             ));
  86.  
  87.                             $template = Smartyhandle::getPageAsText('../moduly/' . $this->_dir . '/smarty/mail/newUser.tpl');
  88.                             $mailFrom = Config::get('from_mail');
  89.  
  90.                             if (Tools::checkEmail($mailFrom)) {
  91.                                 // create new mail
  92.                                 $mail = new Mail;
  93.                                 $mail->setFrom($mailFrom)
  94.                                     ->addTo($verified['email'])
  95.                                     ->setHtmlBody($template)
  96.                                     ->send();
  97.  
  98.                                 Messages::add(Lang::getTranslation('uswMailSend'), Messages::OK);
  99.                             } else {
  100.                                 throw new InvalidStateException(Lang::getTranslation('uswErrorMailFrom'), 101010);
  101.                             }
  102.                         } else {
  103.                             Messages::add(Lang::getTranslation('uswRegistrationNOK'), Messages::ERROR);
  104.                         }
  105.                     }  catch (DibiDriverException $e) {
  106.                         if ($e->getCode() == 1062) { // MySQL-1062
  107.                             array_push($errors, Lang::getTranslation('uswErrorEmailUnique'));
  108.                         } else {
  109.                             Messages::add(Lang::getTranslation('uswRegistrationNOK'), Messages::ERROR);
  110.                             if (DEBUG)
  111.                                 Messages::add($e->getMessage(), Messages::WARNING);
  112.                         }
  113.                     } catch (InvalidStateException $e) {
  114.                         if ($e->getCode() === 101010)
  115.                             array_push($errors, $e->getMessage());
  116.                         else {
  117.                             Messages::add(Lang::getTranslation('uswRegistrationNOK'), Messages::ERROR);
  118.                             if (DEBUG)
  119.                                 Messages::add($e->getMessage(), Messages::WARNING);
  120.                         }
  121.                     }
  122.  
  123.                     Smartyhandle::set('uswData', $values);
  124.                     Smartyhandle::set('frmErrors', $errors);
  125.                 }
  126.  
  127.                 return 'fe/registration.tpl';
  128.             } else if ($name[0] === Lang::getTranslation('uswLostPasswordIdent')) {
  129.                 // registration page
  130.                 Address::setParamUsage(0);
  131.                 Address::add(Lang::getTranslation('uswLostPassword'), Address::getOriginalPathAsString() . '/' . Lang::getTranslation('uswLostPasswordIdent'), TRUE);
  132.                 Address::setPageTitle(Lang::getTranslation('uswLostPassword') . ' - ' . Address::getPageTitle());
  133.  
  134.                 if (array_key_exists('frmLostPassword-submitted', $_POST)) {
  135.                     $password = Tools::generateRandomCode(self::PASSWORD_MIN_LENGHT);
  136.  
  137.                     try {
  138.                         // fetch user info
  139.                         $user = $this->model->fetch(array('email%s' => $_POST['email']));
  140.                         $begin = FALSE;
  141.  
  142.                         if ($user instanceof DibiRow) {
  143.                             // start transaction
  144.                             $this->model->begin();
  145.                             $begin = TRUE;
  146.                             // save new password
  147.                             $this->model->update(array('password%s' => sha1($password)), $_POST['itemId'], FALSE);
  148.  
  149.                             // set the template variables
  150.                             Smartyhandle::set('uswMail', array(
  151.                                 'email' => $user->email,
  152.                                 'password' => $password
  153.                             ));
  154.                             $template = Smartyhandle::getPageAsText('../moduly/' . $this->_dir . '/smarty/mail/newPassword.tpl');
  155.                             $mailFrom = Config::get('from_mail');
  156.  
  157.                             if (Tools::checkEmail($mailFrom)) {
  158.                                 // Create new mail
  159.                                 $mail = new Mail;
  160.                                 $mail->setFrom($mailFrom)
  161.                                     ->addTo($user->email)
  162.                                     ->setHtmlBody($template)
  163.                                     ->send();
  164.  
  165.                                 $this->model->commit();
  166.  
  167.                                 Messages::add(Lang::getTranslation('uswPasswordChanged'), Messages::OK);
  168.                                 Messages::add(Lang::getTranslation('uswMailSend'), Messages::OK);
  169.                             } else {
  170.                                 throw new InvalidStateException(Lang::getTranslation('uswErrorMailFrom'), 10101);
  171.                             }
  172.                         } else {
  173.                             throw new InvalidStateException(Lang::getTranslation('uswErrorUserNotFound'), 10101);
  174.                         }
  175.                     $values = $_POST;
  176.                     $verified = array();
  177.                     } catch (DibiDriverException $e) {
  178.                         if ($begin === TRUE) {
  179.                             $this->model->rollback();
  180.                         }
  181.                         Messages::add(Lang::getTranslation('sysDBSaveError'), Messages::ERROR);
  182.                         if (DEBUG) {
  183.                             Messages::add($e->getMessage(), Messages::ERROR);
  184.                         }
  185.                     } catch (InvalidStateException $e) {
  186.                         if ($begin === TRUE) {
  187.                             $this->model->rollback();
  188.                         }
  189.                         Messages::add(Lang::getTranslation('uswMailSendError'), Messages::ERROR);
  190.                         if ($e->getCode() === 10101) {
  191.                             Messages::add($e->getMessage(), Messages::ERROR);
  192.                         } else {
  193.                             if (DEBUG) {
  194.                                 Messages::add($e->getMessage(), Messages::ERROR);
  195.                             }
  196.                         }
  197.                     } catch (Exception $e) {
  198.                         if ($begin === TRUE) {
  199.                             $this->model->rollback();
  200.                         }
  201.                         Messages::add(Lang::getTranslation('uswMailSendError'), Messages::ERROR);
  202.                         if (DEBUG) {
  203.                             Messages::add($e->getMessage(), Messages::ERROR);
  204.                         }
  205.                     }
  206.  
  207.                     Address::reload(TRUE);
  208.                 }
  209.                 return 'fe/lostPassword.tpl';
  210.             }
  211.         } else {
  212.             // login or setting page
  213.             if (array_key_exists('frmSettings-submitted', $_POST)) {
  214.                 // process post data
  215.                 if (Exts::callFunction('UserWebAuthenticator', 'isLoggedIn') === FALSE) {
  216.                     Messages::add(Lang::getTranslation('uswInfoLogin'), Messages::MSG);
  217.                     Address::changeTo(AITOM_BASE);
  218.                 }
  219.  
  220.                 if (($userData = Exts::callFunction('UserWebAuthenticator', 'getData')) === NULL) {
  221.                     Messages::add(Lang::getTranslation('uswInfoLogin'), Messages::MSG);
  222.                     Address::changeTo(AITOM_BASE);
  223.                 }
  224.                 $errors = array();
  225.                 $values = $_POST;
  226.                 $verified = array();
  227.  
  228.                 try {
  229.                     // check post data
  230.                     if (self::verifyRequiredSettingsKeysFe($values) === TRUE) {
  231.                         foreach ($values as $key => $value) {
  232.                             $verified[$key] = self::checkAndNormalizeSettingsDataFe($key, $value);
  233.                         }
  234.                     }
  235.  
  236.                     // update DB user data
  237.                     $data = array(
  238.                         'email%s' => $verified['email'],
  239.                         'firstname%s' => $verified['firstname'],
  240.                         'surname%s' => $verified['surname'],
  241.                         'phone%s' => $verified['phone'],
  242.                         'street%s' => $verified['street'],
  243.                         'city%s' => $verified['city'],
  244.                         'postalcode%s' => $verified['postalcode'],
  245.                     );
  246.                     if (String::length($verified['password']) >= self::PASSWORD_MIN_LENGHT) {
  247.                         $data['password%s'] = sha1($verified['password']);
  248.                     }
  249.                     $this->model->update($data, $userData['id_user'], FALSE);
  250.  
  251.                     // update user identity
  252.                     $userData['email'] = $verified['email'];
  253.                     $userData['firstname'] = $verified['firstname'];
  254.                     $userData['surname'] = $verified['surname'];
  255.                     $userData['phone'] = $verified['phone'];
  256.                     $userData['street'] = $verified['street'];
  257.                     $userData['city'] = $verified['city'];
  258.                     $userData['postalcode'] = $verified['postalcode'];
  259.  
  260.                     Exts::callFunction('UserWebAuthenticator', 'setData', array($userData));
  261.                     Messages::add(Lang::getTranslation('uswErrorItemOK'), Messages::OK);
  262.                     Address::reload();
  263.                 }  catch (DibiDriverException $e) {
  264.                     if ($e->getCode() == 1062) { // MySQL-1062
  265.                         array_push($errors, Lang::getTranslation('uswErrorEmailUnique'));
  266.                     } else {
  267.                         Messages::add(Lang::getTranslation('uswRegistrationNOK'), Messages::ERROR);
  268.                         if (DEBUG)
  269.                             Messages::add($e->getMessage(), Messages::WARNING);
  270.                     }
  271.                 } catch (InvalidStateException $e) {
  272.                     if ($e->getCode() === 101010)
  273.                         array_push($errors, $e->getMessage());
  274.                     else {
  275.                         Messages::add(Lang::getTranslation('uswRegistrationNOK'), Messages::ERROR);
  276.                         if (DEBUG)
  277.                             Messages::add($e->getMessage(), Messages::WARNING);
  278.                     }
  279.                 }
  280.  
  281.                 Smartyhandle::set('uswData', $values);
  282.                 Smartyhandle::set('frmErrors', $errors);
  283.             }
  284.  
  285.             return 'fe/default.tpl';
  286.         }
  287.  
  288.         // if i'm up here -> 404 error
  289.         Aitom::error404();
  290.     }
Add Comment
Please, Sign In to add comment