/** * Override SpecialPage::execute($param = '') */ function execute($param) { global $wgOut, $wgUser, $wgRequest, $wgParser, $wgEmailPageContactsCat, $wgGroupPermissions, $wgSitename, $wgRecordAdminCategory, $wgEmailPageCss, $wgEmailPageAllowAllUsers, $wgEmergencyContact; $db = wfGetDB(DB_SLAVE); $param = str_replace('_', ' ', $param); $this->setHeaders(); // Get info from request or set to defaults $this->title = $wgRequest->getText('ea-title', $param); $this->from = $wgRequest->getText('ea-from'); $this->subject = $wgRequest->getText('ea-subject', wfMessage('ea-pagesend', $this->title, $wgSitename)->text()); $this->message = $wgRequest->getText('ea-message'); $this->group = $wgRequest->getText('ea-group'); $this->to = $wgRequest->getText('ea-to'); $this->cc = $wgRequest->getText('ea-cc'); $this->textonly = $wgRequest->getText('ea-textonly', false); $this->css = $wgRequest->getText('ea-css', $wgEmailPageCss); $this->record = $wgRequest->getText('ea-record', false); $this->addcomments = $wgRequest->getText('ea-addcomments', false); $this->db = $db; // Bail if no page title to send has been specified if ($this->title) { $wgOut->addWikiText("===" . wfMessage('ea-heading', $this->title)->text() . "==="); } else { return $wgOut->addWikiText(wfMessage('ea-nopage')->text()); } // If the send button was clicked, attempt to send and exit if ($wgRequest->getText('ea-send', false)) { return $this->send(); } // Render form $special = SpecialPage::getTitleFor('EmailPage'); $wgOut->addHTML(Xml::element('form', array('class' => 'EmailPage', 'action' => $special->getLocalURL('action=submit'), 'method' => 'POST'), null)); $wgOut->addHTML("<table style=\"padding:0;margin:0;border:none;\">"); // From (dropdown list of self and wiki addresses) $from = "<option>{$wgEmergencyContact}</option>"; $ue = $wgUser->getEmail(); $from = Sanitizer::validateEmail($ue) ? "<option>{$ue}</option>{$from}" : $from; $wgOut->addHTML("<tr id=\"ea-from\"><th align=\"right\">" . wfMessage('ea-from')->text() . ":</th>"); $wgOut->addHTML("<td><select name=\"ea-from\">{$from}</select></td></tr>\n"); // To $wgOut->addHTML("<tr id=\"ea-to\"><th align=\"right\" valign=\"top\">" . wfMessage('ea-to')->text() . ":</th>"); $wgOut->addHTML("<td><textarea name=\"ea-to\" rows=\"2\" style=\"width:100%\">{$this->to}</textarea>"); $wgOut->addHTML("<br /><small><i>" . wfMessage('ea-to-info')->text() . "</i></small>"); // To group $groups = "<option />"; foreach (array_keys($wgGroupPermissions) as $group) { if ($group != '*' && $group != 'user') { $selected = $group == $this->group ? ' selected' : ''; $groups .= "<option{$selected}>{$group}</option>"; } } if ($wgEmailPageAllowAllUsers) { $selected = 'user' == $this->group ? ' selected' : ''; $groups .= "<option{$selected} value=\"user\">" . wfMessage('ea-allusers')->text() . "</option>"; } $wgOut->addHTML("<div id=\"ea-group\"><select name=\"ea-group\">{$groups}</select>"); $wgOut->addHTML(" <i><small>" . wfMessage('ea-group-info')->text() . "</small></i></div>"); $wgOut->addHTML("</td></tr>"); // Cc $wgOut->addHTML("<tr id=\"ea-cc\"><th align=\"right\">" . wfMessage('ea-cc')->text() . ":</th>"); $wgOut->addHTML("<td>" . Xml::element('input', array('type' => 'text', 'name' => 'ea-cc', 'value' => $this->cc ? $this->cc : $ue, 'style' => "width:100%")) . "</td></tr>"); // Subject $wgOut->addHTML("<tr id=\"ea-subject\"><th align=\"right\">" . wfMessage('ea-subject')->text() . ":</th>"); $wgOut->addHTML("<td>" . Xml::element('input', array('type' => 'text', 'name' => 'ea-subject', 'value' => $this->subject, 'style' => "width:100%")) . "</td></tr>"); // Message $wgOut->addHTML("<tr id=\"ea-message\"><th align=\"right\" valign=\"top\">" . wfMessage('ea-message')->text() . ":</th>"); $wgOut->addHTML("<td><textarea name=\"ea-message\" rows=\"3\" style=\"width:100%\">{$this->message}</textarea>"); $wgOut->addHTML("<br /><i><small>" . wfMessage('ea-message-info')->text() . "</small></i></td></tr>"); // Data if (defined('NS_FORM')) { $options = ""; $tbl = $db->tableName('page'); $res = $db->select($tbl, 'page_id', "page_namespace = " . NS_FORM); while ($row = $db->fetchRow($res)) { $t = Title::newFromID($row[0])->getText(); $selected = $t == $this->record ? ' selected' : ''; $options .= "<option{$selected}>{$t}</option>"; } $db->freeResult($res); if ($options) { $wgOut->addHTML("<tr id=\"ea-data\"><th align=\"right\">" . wfMessage('ea-data')->text() . ":</th><td>"); $wgOut->addHTML("<select name=\"ea-record\"><option />{$options}</select>"); $wgOut->addHTML(" <small><i>" . wfMessage('ea-selectrecord')->text() . "</i></small></td></tr>"); } } // Include comments checkbox if (defined('AJAXCOMMENTS_VERSION') && AjaxComments::checkTitle($this->title)) { $wgOut->addHTML("<tr id=\"ea-addcomments\"><th> </th><td>"); $wgOut->addHTML("<input type=\"checkbox\" name=\"ea-addcomments\" /> " . wfMessage('ea-addcomments')->text() . "</td></tr>"); } // Submit buttons & hidden values $wgOut->addHTML("<tr><td colspan=\"2\" align=\"right\">"); $wgOut->addHTML(Xml::element('input', array('type' => 'hidden', 'name' => 'ea-title', 'value' => $this->title))); $wgOut->addHTML(Xml::element('input', array('id' => 'ea-show', 'type' => 'submit', 'name' => 'ea-show', 'value' => wfMessage('ea-show')->text()))); $wgOut->addHTML(" "); $wgOut->addHTML(Xml::element('input', array('type' => 'submit', 'name' => 'ea-send', 'value' => wfMessage('ea-send')->text())) . ' '); $wgOut->addHTML("</td></tr>"); $wgOut->addHTML("</table></form>"); // If the show button was clicked, render the list if (isset($_REQUEST['ea-show'])) { return $this->send(false); } }