Ejemplo n.º 1
0
 public function execute()
 {
     global $wgUser;
     // Check whether email is enabled
     if (!EmailUserForm::userEmailEnabled()) {
         $this->dieUsageMsg(array('usermaildisabled'));
     }
     $params = $this->extractRequestParams();
     // Check required parameters
     if (!isset($params['target'])) {
         $this->dieUsageMsg(array('missingparam', 'target'));
     }
     if (!isset($params['text'])) {
         $this->dieUsageMsg(array('missingparam', 'text'));
     }
     // Validate target
     $targetUser = EmailUserForm::validateEmailTarget($params['target']);
     if (!$targetUser instanceof User) {
         $this->dieUsageMsg(array($targetUser));
     }
     // Check permissions
     $error = EmailUserForm::getPermissionsError($wgUser, $params['token']);
     if ($error) {
         $this->dieUsageMsg(array($error));
     }
     $form = new EmailUserForm($targetUser, $params['text'], $params['subject'], $params['ccme']);
     $retval = $form->doSubmit();
     if (is_null($retval)) {
         $result = array('result' => 'Success');
     } else {
         $result = array('result' => 'Failure', 'message' => $retval->getMessage());
     }
     $this->getResult()->addValue(null, $this->getModuleName(), $result);
 }
Ejemplo n.º 2
0
/**
 * @todo document
 */
function wfSpecialEmailuser($par)
{
    global $wgUser, $wgOut, $wgRequest, $wgEnableEmail, $wgEnableUserEmail;
    if (!($wgEnableEmail && $wgEnableUserEmail)) {
        $wgOut->showErrorPage("nosuchspecialpage", "nospecialpagetext");
        return;
    }
    if (!$wgUser->canSendEmail()) {
        wfDebug("User can't send.\n");
        $wgOut->showErrorPage("mailnologin", "mailnologintext");
        return;
    }
    $action = $wgRequest->getVal('action');
    $target = isset($par) ? $par : $wgRequest->getVal('target');
    if ("" == $target) {
        wfDebug("Target is empty.\n");
        $wgOut->showErrorPage("notargettitle", "notargettext");
        return;
    }
    $nt = Title::newFromURL($target);
    if (is_null($nt)) {
        wfDebug("Target is invalid title.\n");
        $wgOut->showErrorPage("notargettitle", "notargettext");
        return;
    }
    $nu = User::newFromName($nt->getText());
    if (is_null($nu) || !$nu->canReceiveEmail()) {
        wfDebug("Target is invalid user or can't receive.\n");
        $wgOut->showErrorPage("noemailtitle", "noemailtext");
        return;
    }
    if ($wgUser->isBlockedFromEmailUser()) {
        // User has been blocked from sending e-mail. Show the std blocked form.
        wfDebug("User is blocked from sending e-mail.\n");
        $wgOut->blockedPage();
        return;
    }
    if (!$wgUser->getEditCount()) {
        //no edits? no emailing...
        $wgOut->errorpage('Emailerror', 'Emailerrortext');
        return;
    }
    $f = new EmailUserForm($nu);
    if ("success" == $action) {
        $f->showSuccess($nu);
    } else {
        if ("submit" == $action && $wgRequest->wasPosted() && $wgUser->matchEditToken($wgRequest->getVal('wpEditToken'))) {
            # Check against the rate limiter
            if ($wgUser->pingLimiter('emailuser')) {
                $wgOut->rateLimited();
                return;
            }
            $f->doSubmit();
        } else {
            $f->showForm();
        }
    }
}
function wfSpecialEmailuser($par)
{
    global $wgUser, $wgOut, $wgRequest, $wgEnableEmail, $wgEnableUserEmail;
    if (!($wgEnableEmail && $wgEnableUserEmail)) {
        $wgOut->errorpage("nosuchspecialpage", "nospecialpagetext");
        return;
    }
    if (!$wgUser->canSendEmail()) {
        wfDebug("User can't send.\n");
        $wgOut->errorpage("mailnologin", "mailnologintext");
        return;
    }
    $action = $wgRequest->getVal('action');
    $target = isset($par) ? $par : $wgRequest->getVal('target');
    if ("" == $target) {
        wfDebug("Target is empty.\n");
        $wgOut->errorpage("notargettitle", "notargettext");
        return;
    }
    $nt = Title::newFromURL($target);
    if (is_null($nt)) {
        wfDebug("Target is invalid title.\n");
        $wgOut->errorpage("notargettitle", "notargettext");
        return;
    }
    $nu = User::newFromName($nt->getText());
    if (is_null($nu) || !$nu->canReceiveEmail()) {
        wfDebug("Target is invalid user or can't receive.\n");
        $wgOut->errorpage("noemailtitle", "noemailtext");
        return;
    }
    $address = $nu->getEmail();
    $f = new EmailUserForm($nu->getName() . " <{$address}>", $target);
    if ("success" == $action) {
        $f->showSuccess();
    } else {
        if ("submit" == $action && $wgRequest->wasPosted() && $wgUser->matchEditToken($wgRequest->getVal('wpEditToken'))) {
            $f->doSubmit();
        } else {
            $f->showForm();
        }
    }
}
Ejemplo n.º 4
0
/**
 * 	Constructor for Special:Emailuser.
 */
function wfSpecialEmailuser($par)
{
    global $wgRequest, $wgUser, $wgOut;
    if (!EmailUserForm::userEmailEnabled()) {
        $wgOut->showErrorPage('nosuchspecialpage', 'nospecialpagetext');
        return;
    }
    $action = $wgRequest->getVal('action');
    $target = isset($par) ? $par : $wgRequest->getVal('target');
    $targetUser = EmailUserForm::validateEmailTarget($target);
    if (!$targetUser instanceof User) {
        $wgOut->showErrorPage($targetUser . 'title', $targetUser . 'text');
        return;
    }
    $form = new EmailUserForm($targetUser, $wgRequest->getText('wpText'), $wgRequest->getText('wpSubject'), $wgRequest->getBool('wpCCMe'));
    if ($action == 'success') {
        $form->showSuccess();
        return;
    }
    $error = EmailUserForm::getPermissionsError($wgUser, $wgRequest->getVal('wpEditToken'));
    if ($error) {
        switch ($error) {
            case 'blockedemailuser':
                $wgOut->blockedPage();
                return;
            case 'actionthrottledtext':
                $wgOut->rateLimited();
                return;
            case 'sessionfailure':
                $form->showForm();
                return;
            case 'mailnologin':
                $wgOut->showErrorPage('mailnologin', 'mailnologintext');
                return;
            default:
                // It's a hook error
                list($title, $msg, $params) = $error;
                $wgOut->showErrorPage($title, $msg, $params);
                return;
        }
    }
    if ("submit" == $action && $wgRequest->wasPosted()) {
        $result = $form->doSubmit();
        if (!is_null($result)) {
            $wgOut->addHTML(wfMsg("usermailererror") . ' ' . htmlspecialchars($result->getMessage()));
        } else {
            $titleObj = SpecialPage::getTitleFor("Emailuser");
            $encTarget = wfUrlencode($form->getTarget()->getName());
            $wgOut->redirect($titleObj->getFullURL("target={$encTarget}&action=success"));
        }
    } else {
        $form->showForm();
    }
}