/**
  * Making new User to register.
  * @param RegisterFO $fo
  * @return User
  */
 private function makeUser(RegisterFO $fo)
 {
     $user = new User();
     $user->setLogin($fo->getLogin());
     $user->setFirstname($fo->getFirstname());
     $user->setLastname($fo->getLastname());
     $user->setEmail($fo->getEmail());
     $user->setPassword($fo->getPassword());
     $user->setGender($fo->getGender());
     $user->setBirthdate($fo->getBirthdate());
     $user->setLatestIP(null);
     $user->setLastActive(null);
     $user->setActivation($this->makeActivationHash($user));
     return $user;
 }
 public static function register()
 {
     $email = Core::validate(self::getVar('email'));
     $pass = Core::validate(self::getVar('password'));
     $captcha = Core::validate(self::getVar('captcha'));
     if ($email == null || $pass == null || $captcha == null) {
         Core::printErrorJson('Incorrect data input');
         return;
     }
     $right_code = Session::getSessionVariable('security_code');
     Session::unsetSessionVariable('security_code');
     if ($captcha != $right_code) {
         Core::printErrorJson('Incorrect captcha');
         return;
     }
     if (!Core::isEmailAddress($email)) {
         Core::printErrorJson('Incorrect email');
         return;
     }
     if (User::isExist($email, $email)) {
         Core::printErrorJson('User ' . $email . ' is already registered.');
         return;
     }
     $usr = new User();
     $usr->setLogin($email);
     $usr->setEmail($email);
     $usr->setDate(date("Y-m-d H:i:s"));
     $usr->setActivation(0);
     $usr->setPassHash(Core::calculateHash($pass));
     $usr->insert();
     $activationCode = self::calcActivationCode($usr);
     $activationUrl = "http://" . $_SERVER['SERVER_NAME'] . "/usr/activation?login="******"&code=" . $activationCode;
     $subject = Core::translateToCurrentLocale("Registration confirmation") . ".";
     $header = '<h1>' . Core::translateToCurrentLocale("Hello") . ', </h1>
     <p class="lead">' . Core::translateToCurrentLocale("you have registered on the Bitmonex website") . '.</p>' . '<p>' . Core::translateToCurrentLocale("Your login is") . ': ' . $email . '</p><p>' . Core::translateToCurrentLocale("Your password is") . ': ' . $pass . '</p>';
     $body = '<p>' . Core::translateToCurrentLocale("To confirm your registration, please click on this link") . '. <a href="' . $activationUrl . '">' . Core::translateToCurrentLocale("Activate") . '!</a></p>';
     $message = self::getMessage($header, $body);
     if (!Core::send_mail($email, $subject, $message)) {
         $usr->delete();
         Core::printErrorJson('Notification email is not send.');
         return;
     }
     $result['success'] = 1;
     print json_encode($result);
 }