public static function getInstance()
 {
     if (!isset(self::$instance)) {
         self::$instance = new MailTemplateEngine();
     }
     return self::$instance;
 }
 private function addForgotPasswordToDatabase(User $user)
 {
     $forgotPasswordEngine = ForgotPasswordEngine::getInstance();
     $exists = $forgotPasswordEngine->getForgotPasswordByUserID($user->getUserID());
     if (is_object($exists)) {
         if ($forgotPasswordEngine->forgotPasswordIsOfValidAge($exists)) {
             return;
         }
         $forgotPasswordEngine->removeForgotPassword($exists);
     }
     $forgotPassword = $forgotPasswordEngine->generateNewForgotPassword($user->getUserID());
     if ($forgotPassword === false) {
         $this->showErrorMessageForForgotPassword();
         return;
     }
     $mailTemplateEngine = MailTemplateEngine::getInstance();
     $mail = $mailTemplateEngine->loadTemplate("forgotPassword");
     if ($mail === false) {
         $this->showErrorMessageForForgotPassword();
         return;
     }
     $mail->addRecipient($user->getEmail());
     $mail->setBulkMail(false);
     $mail->addReplacementValue("[[name]]", $user->getEmail(), $user->getFirstName());
     $passwordTokenLink = new Link("users/forgotPassword/{$forgotPassword->getToken()}", false, false, false, true);
     $mail->addReplacementValue("[[passwordToken]]", $user->getEmail(), $passwordTokenLink->getHref());
     if (!$mail->sendMail()) {
         $this->showErrorMessageForForgotPassword();
         return;
     }
 }