/** * 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 }
/** * 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; }
/** * 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; } }
/** * 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(); }
/** * 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; }