Exemplo n.º 1
0
 /**
  * Generate a new e-mail confirmation token and send a confirmation/invalidation
  * mail to the user's given address.
  *
  * @param $type String: message to send, either "created", "changed" or "set"
  * @return Status object
  */
 public function sendConfirmationMail($type = 'created', $mailtype = "ConfirmationMail", $mailmsg = '', $ip_arg = true, $emailTextTemplate = '', $langCode = null)
 {
     global $wgLang;
     $expiration = null;
     // gets passed-by-ref and defined in next line.
     $token = $this->confirmationToken($expiration);
     $url = $this->confirmationTokenUrl($token);
     $invalidateURL = $this->invalidationTokenUrl($token);
     $this->saveSettings();
     if ($type == 'created' || $type === false) {
         $message = 'confirmemail_body';
     } elseif ($type === true) {
         $message = 'confirmemail_body_changed';
     } else {
         $message = 'confirmemail_body_' . $type;
     }
     /* Wikia change begin */
     $subject = 'confirmemail_subject';
     if (!empty($mailmsg)) {
         $message = $mailmsg . '_body';
         $subject = $mailmsg . '_subject';
     }
     $manualURL = SpecialPage::getTitleFor('ConfirmEmail/manual')->getFullURL();
     $IP = $this->getRequest()->getIP();
     $name = $this->getName();
     $expDate = $wgLang->timeanddate($expiration, false);
     if (!$ip_arg) {
         $args = array($name, $url, $expDate, $invalidateURL, $manualURL, $token);
     } else {
         $args = array($IP, $name, $url, $expDate, $invalidateURL, $manualURL, $token);
     }
     $priority = 0;
     wfRunHooks('UserSendConfirmationMail', array(&$this, &$args, &$priority, &$url, $token, $ip_arg, $type));
     $emailController = $this->getEmailController($mailtype);
     if (!empty($emailController)) {
         return $this->sendUsingEmailExtension($emailController, $url);
     }
     /* Wikia change begin - @author: Marooned */
     /* HTML e-mails functionality */
     global $wgEnableRichEmails;
     if (empty($wgEnableRichEmails)) {
         return $this->sendMail(wfMsg($subject), wfMsg($message, $this->getRequest()->getIP(), $this->getName(), $url, $wgLang->timeanddate($expiration, false), $invalidateURL, $wgLang->date($expiration, false), $wgLang->time($expiration, false)), null, null, $mailtype, null, $priority);
     } else {
         $wantHTML = $this->isAnon() || $this->getGlobalPreference('htmlemails');
         if (empty($langCode)) {
             $langCode = $this->getGlobalPreference('language');
         }
         list($body, $bodyHTML) = wfMsgHTMLwithLanguage($message, $langCode, array(), $args, $wantHTML);
         if (!empty($emailTextTemplate) && $wantHTML) {
             $emailParams = array('$USERNAME' => $name, '$CONFIRMURL' => $url);
             $bodyHTML = strtr($emailTextTemplate, $emailParams);
         }
         return $this->sendMail(wfMsg($subject), $body, null, null, $mailtype, $bodyHTML, $priority);
     }
     /* Wikia change end */
 }
Exemplo n.º 2
0
 /**
  * @param $u User object
  * @param $throttle Boolean
  * @param $emailTitle String: message name of email title
  * @param $emailText String: message name of email text
  * @param $emailTextTemplate String: template of email text
  * @return Mixed: true on success, WikiError on failure
  * @private
  * @return Status object
  */
 function mailPasswordInternal($u, $throttle = true, $emailTitle = 'passwordremindertitle', $emailText = 'passwordremindertext', $emailTextTemplate = '')
 {
     global $wgServer, $wgScript, $wgNewPasswordExpiry, $wgNoReplyAddress, $wgEnableRichEmails;
     if ($u->getEmail() == '') {
         return Status::newFatal('noemail', $u->getName());
     }
     $ip = $this->getRequest()->getIP();
     if (!$ip) {
         return Status::newFatal('badipaddress');
     }
     $currentUser = $this->getUser();
     wfRunHooks('User::mailPasswordInternal', array(&$currentUser, &$ip, &$u));
     $np = $u->randomPassword();
     $u->setNewpassword($np, $throttle);
     $u->saveSettings();
     /* Wikia change begin - @author: Uberfuzzy */
     /* use noReply address (if available) */
     $nr = null;
     if (!empty($wgNoReplyAddress)) {
         $nr = new MailAddress($wgNoReplyAddress, 'No Reply');
     }
     /* Wikia change begin - @author: Marooned */
     /* HTML e-mails functionality */
     $userLanguage = $u->getGlobalPreference('language');
     $priority = 2;
     // Password emails are higher than default priority of 0 and confirmation emails priority of 1
     if (empty($wgEnableRichEmails)) {
         $m = $this->msg($emailText, $ip, $u->getName(), $np, $wgServer . $wgScript, round($wgNewPasswordExpiry / 86400))->inLanguage($userLanguage)->text();
         $result = $u->sendMail($this->msg($emailTitle)->inLanguage($userLanguage)->text(), $m, null, $nr, 'TemporaryPassword', $priority);
     } else {
         $wantHTML = $u->isAnon() || $u->getGlobalPreference('htmlemails');
         list($m, $mHTML) = wfMsgHTMLwithLanguage($emailText, $u->getGlobalPreference('language'), array('parsemag'), array($ip, $u->getName(), $np, $wgServer . $wgScript, round($wgNewPasswordExpiry / 86400)), $wantHTML);
         if (!empty($emailTextTemplate) && $wantHTML) {
             $emailParams = array('$USERNAME' => $u->getName(), '$NEWPASSWORD' => $np);
             $mHTML = strtr($emailTextTemplate, $emailParams);
         }
         $result = $u->sendMail($this->msg($emailTitle)->inLanguage($userLanguage)->text(), $m, null, $nr, 'TemporaryPassword', $mHTML, $priority);
     }
     return $result;
 }
Exemplo n.º 3
0
/**
 * Get more accurate message in plain and HTML versions using language as priority
 *
 * @author Marooned
 * @return array
 */
function wfMsgHTMLwithLanguageAndAlternative($key, $keyAlternative, $lang, $options = array(), $params = array(), $wantHTML = true)
{
    // inserted here for external i18n add-on, adjust params if needed
    wfRunHooks('MsgHTMLwithLanguageAndAlternativeBefore');
    list($msgPlainMain, $msgRichMain, $msgPlainMainFallback, $msgRichMainFallback) = wfMsgHTMLwithLanguage($key, $lang, $options, $params, $wantHTML);
    list($msgPlainAlter, $msgRichAlter, $msgPlainAlterFallback, $msgRichAlterFallback) = wfMsgHTMLwithLanguage($keyAlternative, $lang, $options, $params, $wantHTML);
    $msgPlain = $msgPlainMainFallback > $msgPlainAlterFallback || wfEmptyMsg($key, $msgPlainMain) ? $msgPlainAlter : $msgPlainMain;
    $msgRich = $msgRichMainFallback > $msgRichAlterFallback || wfEmptyMsg($key . '-HTML', $msgRichMain) ? $msgRichAlter : $msgRichMain;
    return array($msgPlain, $msgRich);
}
Exemplo n.º 4
0
 /**
  * sendWelcomeMail
  *
  * sensd welcome email to founder (if founder has set email address)
  *
  * @author eloy@wikia-inc.com
  * @author adi@wikia-inc.com
  * @author moli@wikia-inc.com
  * @access private
  *
  * @return boolean status
  */
 private function sendWelcomeMail()
 {
     global $wgUser, $wgPasswordSender, $wgWikiaEnableFounderEmailsExt;
     if (!empty($wgWikiaEnableFounderEmailsExt)) {
         // skip this step when FounderEmails extension is enabled
         Wikia::log(__METHOD__, "mail", "FounderEmails extension is enabled. Welcome email is not sent");
         return true;
     }
     $oReceiver = $this->mFounder;
     $sServer = $this->mParams->url;
     /**
      * set apropriate staff member
      */
     $oStaffUser = Wikia::staffForLang($this->mParams->language);
     $oStaffUser = $oStaffUser instanceof User ? $oStaffUser : User::newFromName(CreateWiki::DEFAULT_STAFF);
     $sFrom = new MailAddress($wgPasswordSender, "The Wikia Community Team");
     $sTo = $oReceiver->getEmail();
     $aBodyParams = array($sServer, $oReceiver->getName(), $oStaffUser->getRealName(), htmlspecialchars($oStaffUser->getTitleKey()), htmlspecialchars($oReceiver->getTalkPage()->getFullURL()));
     $sBody = $sBodyHTML = $sSubject = null;
     $language = @empty($this->mParams->language) ? 'en' : $this->mParams->language;
     list($sBody, $sBodyHTML) = wfMsgHTMLwithLanguage('autocreatewiki-welcomebody', $language, array(), $aBodyParams);
     $sSubject = wfMsgExt('autocreatewiki-welcomesubject', array('language' => $language), array($this->mParams->sitename));
     if (!empty($sTo)) {
         $status = $oReceiver->sendMail($sSubject, $sBody, $sFrom, null, 'AutoCreateWiki', $sBodyHTML);
         if ($status) {
             Wikia::log(__METHOD__, "mail", "Mail to founder {$sTo} sent.");
         }
     } else {
         Wikia::log(__METHOD__, "mail", "Founder email is not set. Welcome email is not sent");
     }
 }