示例#1
0
    /**
     * confirmProcess: check the given key and username
     */
    public function confirmSignup($username, $key)
    {
        // The TB WAY:
        $userId = APP_User::userId($username);
        if (!$userId) {
            return $error = 'NoSuchMember';
        }
        $keyDB = APP_User::getSetting($userId, 'regkey');
        if (!$keyDB) {
            return $error = 'NoStoredKey';
        }
        if ($keyDB->value != $key) {
            return $error = 'WrongKey';
        }
        $memberEntity = new Member();
        $member = $memberEntity->findByUsername($username);
        $query = '
SELECT members.Status AS Status
FROM members
WHERE members.id = \'' . $member->id . '\'
        ';
        $s = $this->dao->query($query);
        if ($s->numRows() != 1) {
            return $error = 'NoMember';
        }
        $Status = $s->fetch(PDB::FETCH_OBJ)->Status;
        if ($Status != 'MailToConfirm') {
            return $error = 'Status' . $Status;
        }
        APP_User::activate($userId);
        $query = "\r\nUPDATE members\r\nSET Status = 'Active'\r\nWHERE id=" . $member->id;
        // The email is confirmed > make the status Active
        $s = $this->dao->query($query);
        if (!$s) {
            // TODO: always integrate this check?
            throw new PException('Could not determine if email is in use!');
        }
        $View = new SignupView($this);
        define('DOMAIN_MESSAGE_ID', 'bewelcome.org');
        // TODO: config
        $View->sendActivationMail($member);
        return false;
        // no error
    }
示例#2
0
 /**
  * confirmation process
  *
  * @param string $handle
  * @param string $key
  * @return boolean
  */
 public function confirmRegister($handle, $key)
 {
     $userId = APP_User::userId($handle);
     if (!$userId) {
         return false;
     }
     $keyDB = APP_User::getSetting($userId, 'regkey');
     if (!$keyDB) {
         return false;
     }
     if ($keyDB->value != $key) {
         return false;
     }
     APP_User::activate($userId);
     return true;
 }
示例#3
0
 /**
  * Sends a confirmation e-mail
  *
  * @param string $userId
  */
 public function registerMail($userId)
 {
     $User = $this->_model->getUser($userId);
     if (!$User) {
         return false;
     }
     $handle = $User->handle;
     $email = $User->email;
     $key = APP_User::getSetting($userId, 'regkey');
     if (!$key) {
         return false;
     }
     $key = $key->value;
     $confirmUrl = PVars::getObj('env')->baseuri . 'user/confirm/' . $handle . '/' . $key;
     $registerMailText = array();
     require SCRIPT_BASE . 'text/' . PVars::get()->lang . '/apps/user/register.php';
     $from = $registerMailText['from_name'] . ' <' . PVars::getObj('config_mailAddresses')->registration . '>';
     $subject = $registerMailText['subject'];
     $Mail = new MOD_mail_Multipart();
     $logoCid = $Mail->addAttachment(HTDOCS_BASE . 'images/logo.png', 'image/png');
     ob_start();
     require 'templates/register_html.php';
     $mailHTML = ob_get_contents();
     ob_end_clean();
     $mailText = '';
     require 'templates/register_plain.php';
     $Mail->addMessage($mailText);
     $Mail->addMessage($mailHTML, 'text/html');
     $Mail->buildMessage();
     $Mailer = Mail::factory(PVars::getObj('config_smtp')->backend, PVars::get()->config_smtp);
     if (is_a($Mailer, 'PEAR_Error')) {
         $e = new PException($Mailer->getMessage());
         $e->addMessage($Mailer->getDebugInfo());
         throw $e;
     }
     $rcpts = $email;
     $header = $Mail->header;
     $header['From'] = $from;
     $header['To'] = $email;
     $header['Subject'] = $subject;
     $header['Message-Id'] = '<reg' . $userId . '.' . sha1(uniqid(rand())) . '@myTravelbook>';
     $r = @$Mailer->send($rcpts, $header, $Mail->message);
     if (is_object($r) && is_a($r, 'PEAR_Error')) {
         $e = new PException($r->getMessage());
         $e->addInfo($r->getDebugInfo());
         throw $e;
     }
 }
示例#4
0
 /**
  * Actually run the bot
  *
  * @return nothing
  */
 public function run()
 {
     $qry = $this->_getMessageList();
     while ($msg = $qry->fetch(PDB::FETCH_OBJ)) {
         $receiver = new Member($msg->IdReceiver);
         $email = $this->getEmailAddress($receiver);
         $language = $receiver->getLanguagePreferenceId();
         $link = false;
         if ($msg->broadcast_type == 'MailToConfirmReminder') {
             $userId = APP_User::userId($receiver->Username);
             if (!$userId) {
                 continue;
             }
             $keyDB = APP_User::getSetting($userId, 'regkey');
             if (!$keyDB) {
                 continue;
             }
             $link = $this->baseuri . 'signup/confirm/' . $receiver->Username . '/' . $keyDB->value;
         }
         $subj = $this->_getBroadCastElement("BroadCast_Title_" . $msg->word, $language, $msg->Username);
         $text = $this->_getBroadCastElement("BroadCast_Body_" . $msg->word, $language, $msg->Username, $email, $link);
         if (empty($msg->EmailFrom)) {
             switch ($msg->broadcast_type) {
                 case "RemindToLog":
                 case "MailToConfirmReminder":
                     $sender_mail = "*****@*****.**";
                     break;
                 case "SuggestionReminder":
                     $sender_mail = "*****@*****.**";
                     break;
                 default:
                     $sender_mail = "*****@*****.**";
             }
         } else {
             $sender_mail = $msg->EmailFrom;
         }
         $memberPrefersHtml = true;
         if ($receiver->getPreference('PreferenceHtmlMails', 'Yes') == 'No') {
             $memberPrefersHtml = false;
         }
         if (!$this->sendEmail($subj, $sender_mail, $email, $subj, $text, $language, $memberPrefersHtml)) {
             $this->_updateMessageStatus($msg->IdBroadcast, 'Failed', $msg->IdReceiver);
             $this->log("Cannot send broadcastmessages.id=#" . $msg->IdBroadcast . " to <b>" . $msg->Username . "</b>\n                \$Email=[" . $email . "] Type=[" . $msg->broadcast_type . "]");
         } else {
             if ($msg->broadcast_type == "RemindToLog") {
                 $this->queryDB("update members set NbRemindWithoutLogingIn=NbRemindWithoutLogingIn+1 where members.id=" . $msg->IdReceiver);
             }
             $this->_updateMessageStatus($msg->IdBroadcast, 'Sent', $msg->IdReceiver);
         }
     }
     $this->reportStats();
 }
示例#5
0
 /**
  * Sends a confirmation e-mail
  *
  * @param string $userId
  */
 public function registerMail($vars, $IdMember, $idTB)
 {
     $MembersModel = new MembersModel();
     $member = $MembersModel->getMemberWithId($IdMember);
     if (!$member) {
         return false;
     }
     $words = new MOD_words();
     // KEY-GENERATION the TB Way
     $key = APP_User::getSetting($idTB, 'regkey');
     if (!$key) {
         return false;
     }
     $key = $key->value;
     $confirmUrl = PVars::getObj('env')->baseuri . 'signup/confirm/' . $member->Username . '/' . $key;
     $confirmUrl_html = "<a href=\"" . $confirmUrl . "\">" . $confirmUrl . "</a>";
     $title = $words->get("Welcome") . '!';
     $body = $words->get("SignupTextRegistration", $vars['firstname'], $vars['secondname'], $vars['lastname'], PVars::getObj('env')->sitename, $confirmUrl_html);
     // set the sender & receiver
     $from = PVars::getObj('mailAddresses')->registration;
     $to = $vars['email'];
     // set the subject
     $subject = $words->get('SignupSubjRegistration', PVars::getObj('env')->sitename);
     // Use MOD_mail to create and send a message
     $result = MOD_mail::sendEmail($subject, $from, $to, $title, $body, $member->getLanguagePreference());
     //Now check if Swift actually sends it
     if (!$result) {
         MOD_log::get()->write(" in signup view registerMail: Failed to send a mail to [" . $to . "]", "signup");
     }
     return $result;
 }