public function testRequireLoginNotAnon() { $specialPage = new SpecialPage('Watchlist', 'viewmywatchlist'); $user = User::newFromName("UTSysop"); $specialPage->getContext()->setUser($user); $specialPage->requireLogin(); // no exception thrown, logged in use can access special page $this->assertTrue(true); }
public function __construct() { parent::__construct('CategoryIntersection'); global $wgContLang; $this->CATEGORY_NS_PREFIX = $wgContLang->getNSText(NS_CATEGORY) . ":"; // the actual namespace prefix (includes the colon at the end). }
/** * Main execution point * * @param string $subpage */ function execute($subpage) { // Anons don't get a watchlist $this->requireLogin('watchlistanontext'); $output = $this->getOutput(); $request = $this->getRequest(); $this->addHelpLink('Help:Watching pages'); $output->addModules(array('mediawiki.special.changeslist.visitedstatus')); $mode = SpecialEditWatchlist::getMode($request, $subpage); if ($mode !== false) { if ($mode === SpecialEditWatchlist::EDIT_RAW) { $title = SpecialPage::getTitleFor('EditWatchlist', 'raw'); } elseif ($mode === SpecialEditWatchlist::EDIT_CLEAR) { $title = SpecialPage::getTitleFor('EditWatchlist', 'clear'); } else { $title = SpecialPage::getTitleFor('EditWatchlist'); } $output->redirect($title->getLocalURL()); return; } $this->checkPermissions(); $user = $this->getUser(); $opts = $this->getOptions(); $config = $this->getConfig(); if (($config->get('EnotifWatchlist') || $config->get('ShowUpdatedMarker')) && $request->getVal('reset') && $request->wasPosted()) { $user->clearAllNotifications(); $output->redirect($this->getPageTitle()->getFullURL($opts->getChangedValues())); return; } parent::execute($subpage); }
function execute($par) { /** * Some satellite ISPs use broken precaching schemes that log people out straight after * they're logged in (bug 17790). Luckily, there's a way to detect such requests. */ if (isset($_SERVER['REQUEST_URI']) && strpos($_SERVER['REQUEST_URI'], '&') !== false) { wfDebug("Special:Userlogout request {$_SERVER['REQUEST_URI']} looks suspicious, denying.\n"); throw new HttpError(400, $this->msg('suspicious-userlogout'), $this->msg('loginerror')); } $this->setHeaders(); $this->outputHeader(); // Make sure it's possible to log out $session = MediaWiki\Session\SessionManager::getGlobalSession(); if (!$session->canSetUser()) { throw new ErrorPageError('cannotlogoutnow-title', 'cannotlogoutnow-text', [$session->getProvider()->describe(RequestContext::getMain()->getLanguage())]); } $user = $this->getUser(); $oldName = $user->getName(); $user->logout(); $loginURL = SpecialPage::getTitleFor('Userlogin')->getFullURL($this->getRequest()->getValues('returnto', 'returntoquery')); $out = $this->getOutput(); $out->addWikiMsg('logouttext', $loginURL); // Hook. $injected_html = ''; Hooks::run('UserLogoutComplete', [&$user, &$injected_html, $oldName]); $out->addHTML($injected_html); $out->returnToMain(); }
public function getActionLinks() { if ( $this->entry->isDeleted( LogPage::DELETED_ACTION ) // Action is hidden || $this->entry->getSubtype() !== 'move' || !$this->context->getUser()->isAllowed( 'move' ) ) { return ''; } $params = $this->extractParameters(); $destTitle = Title::newFromText( $params[3] ); if ( !$destTitle ) { return ''; } $revert = Linker::linkKnown( SpecialPage::getTitleFor( 'Movepage' ), $this->msg( 'revertmove' )->escaped(), array(), array( 'wpOldTitle' => $destTitle->getPrefixedDBkey(), 'wpNewTitle' => $this->entry->getTarget()->getPrefixedDBkey(), 'wpReason' => $this->msg( 'revertmove' )->inContentLanguage()->text(), 'wpMovetalk' => 0 ) ); return $this->msg( 'parentheses' )->rawParams( $revert )->escaped(); }
static function formatLogEntry($type, $action, $title, $sk, $parameters) { $msg = "lqt-log-action-{$action}"; switch ($action) { case 'merge': if ($parameters[0]) { $msg = 'lqt-log-action-merge-across'; } else { $msg = 'lqt-log-action-merge-down'; } break; case 'move': $smt = new SpecialMoveThread(); $rightsCheck = $smt->checkUserRights($parameters[1] instanceof Title ? $parameters[1] : Title::newFromText($parameters[1]), $parameters[0] instanceof Title ? $parameters[0] : Title::newFromText($parameters[0])); if ($rightsCheck === true) { $parameters[] = Message::rawParam(Linker::link(SpecialPage::getTitleFor('MoveThread', $title), wfMessage('revertmove')->text(), array(), array('dest' => $parameters[0]))); } else { $parameters[] = ''; } break; default: // Give grep a chance to find the usages: // lqt-log-action-move, lqt-log-action-split, lqt-log-action-subjectedit, // lqt-log-action-resort, lqt-log-action-signatureedit $msg = "lqt-log-action-{$action}"; break; } array_unshift($parameters, $title->getPrefixedText()); $html = wfMessage($msg, $parameters); if ($sk === null) { return StringUtils::delimiterReplace('<', '>', '', $html->inContentLanguage()->parse()); } return $html->parse(); }
/** * Constructor */ public function __construct() { global $wgUser; parent::__construct('ChangeAuthor', 'changeauthor'); $this->selfTitle = SpecialPage::getTitleFor('ChangeAuthor'); $this->skin = $wgUser->getSkin(); }
/** * Constructor: initialise object * Get data POSTed through the form and assign them to the object * * @param $request WebRequest: Data posted. */ public function __construct( $request = null ) { global $wgRequest; SpecialPage::__construct( 'PictureGameAjaxUpload', 'upload', false ); $this->loadRequest( is_null( $request ) ? $wgRequest : $request ); }
function showForm($form, $errmsg = null) { global $wgOut, $wgRequest, $wgParser, $wgUser, $wgSpecialFormRecaptcha; $self = SpecialPage::getTitleFor(wfMsgForContent('form') . '/' . $form->name); $wgOut->setPageTitle($form->title); if (!is_null($form->instructions)) { $wgOut->addHTML(Xml::openElement('div', array('class' => 'instructions')) . $wgOut->parse($form->instructions) . Xml::closeElement('div') . Xml::element('br')); } if (!is_null($errmsg)) { $wgOut->addHTML(Xml::openElement('div', array('class' => 'error')) . $wgOut->parse($errmsg) . Xml::closeElement('div') . Xml::element('br')); } $wgOut->addHTML(Xml::openElement('form', array('method' => 'post', 'action' => $self->getLocalURL()))); foreach ($form->fields as $field) { $wgOut->addHTML($field->render($wgRequest->getText($field->name)) . Xml::element('br') . "\n"); } # Anonymous user, use recaptcha if ($wgUser->getId() == 0 && $wgSpecialFormRecaptcha) { require_once 'recaptchalib.php'; global $recaptcha_public_key; # same as used by Recaptcha plugin $wgOut->addHTML(recaptcha_get_html($recaptcha_public_key)); } $wgOut->addHTML(Xml::element('input', array('type' => 'submit', 'value' => wfMsg('formsave')))); $wgOut->addHTML(Xml::closeElement('form')); }
/** * @param Skin $skin * @param object $result Result row * @return string */ function formatResult($skin, $result) { $title = Title::makeTitle(NS_TEMPLATE, $result->title); $pageLink = Linker::linkKnown($title, null, array(), array('redirect' => 'no')); $wlhLink = Linker::linkKnown(SpecialPage::getTitleFor('Whatlinkshere', $title->getPrefixedText()), $this->msg('unusedtemplateswlh')->escaped()); return $this->getLanguage()->specialList($pageLink, $wlhLink); }
/** * Show the special page * * @param $params Mixed: parameter(s) passed to the page or null */ public function execute($params) { $out = $this->getOutput(); $user = $this->getUser(); // Set the page title, robot policies, etc. $this->setHeaders(); /** * Redirect anonymous users to the login page * It will automatically return them to the ViewRelationshipRequests page */ if (!$user->isLoggedIn()) { $out->setPageTitle($this->msg('ur-error-page-title')->plain()); $login = SpecialPage::getTitleFor('Userlogin'); $out->redirect($login->getFullURL('returnto=Special:ViewRelationshipRequests')); return false; } // Add CSS & JS $out->addModuleStyles('ext.socialprofile.userrelationship.css'); $out->addModules('ext.socialprofile.userrelationship.js'); $rel = new UserRelationship($user->getName()); $friend_request_count = $rel->getOpenRequestCount($user->getID(), 1); $foe_request_count = $rel->getOpenRequestCount($user->getID(), 2); if ($this->getRequest()->wasPosted() && $_SESSION['alreadysubmitted'] == false) { $_SESSION['alreadysubmitted'] = true; $rel->addRelationshipRequest($this->user_name_to, $this->relationship_type, $_POST['message']); $output = '<br /><span class="title">' . $this->msg('ur-already-submitted')->plain() . '</span><br /><br />'; $out->addHTML($output); } else { $_SESSION['alreadysubmitted'] = false; $output = ''; $out->setPageTitle($this->msg('ur-requests-title')->plain()); $requests = $rel->getRequestList(0); if ($requests) { foreach ($requests as $request) { $user_from = Title::makeTitle(NS_USER, $request['user_name_from']); $avatar = new wAvatar($request['user_id_from'], 'l'); $avatar_img = $avatar->getAvatarURL(); if ($request['type'] == 'Foe') { $msg = $this->msg('ur-requests-message-foe', htmlspecialchars($user_from->getFullURL()), $request['user_name_from'])->text(); } else { $msg = $this->msg('ur-requests-message-friend', htmlspecialchars($user_from->getFullURL()), $request['user_name_from'])->text(); } $message = $out->parse(trim($request['message']), false); $output .= "<div class=\"relationship-action black-text\" id=\"request_action_{$request['id']}\">\n\t\t\t\t\t \t{$avatar_img}" . $msg; if ($request['message']) { $output .= '<div class="relationship-message">' . $message . '</div>'; } $output .= '<div class="cleared"></div> <div class="relationship-buttons"> <input type="button" class="site-button" value="' . $this->msg('ur-accept')->plain() . '" data-response="1" /> <input type="button" class="site-button" value="' . $this->msg('ur-reject')->plain() . '" data-response="-1" /> </div> </div>'; } } else { $output = $this->msg('ur-no-requests-message')->parse(); } $out->addHTML($output); } }
function displayEditForm() { global $wgOut, $wgRequest; $url = $wgRequest->getVal('_url'); $title = $wgRequest->getVal('_title'); $l = new Link(); $link = $l->getLinkByPageID($wgRequest->getInt('id')); if (is_array($link)) { $url = htmlspecialchars($link['url'], ENT_QUOTES); $description = htmlspecialchars($link['description'], ENT_QUOTES); } else { $title = SpecialPage::getTitleFor('LinkSubmit'); $wgOut->redirect($title->getFullURL()); } $wgOut->setPageTitle(wfMsg('linkfilter-edit-title', $link['title'])); $_SESSION['alreadysubmitted'] = false; $output = '<div class="lr-left"> <div class="link-home-navigation"> <a href="' . Link::getHomeLinkURL() . '">' . wfMsg('linkfilter-home-button') . '</a>'; if (Link::canAdmin()) { $output .= ' <a href="' . Link::getLinkAdminURL() . '">' . wfMsg('linkfilter-approve-links') . '</a>'; } $output .= '<div class="cleared"></div> </div> <form name="link" id="linksubmit" method="post" action=""> <div class="link-submit-title"> <label>' . wfMsg('linkfilter-url') . '</label> </div> <input tabindex="2" class="lr-input" type="text" name="lf_URL" id="lf_URL" value="' . $url . '"/> <div class="link-submit-title"> <label>' . wfMsg('linkfilter-description') . '</label> </div> <div class="link-characters-left">' . wfMsg('linkfilter-description-max') . ' - ' . wfMsg('linkfilter-description-left', '<span id="desc-remaining">300</span>') . '</div> <textarea tabindex="3" class="lr-input" rows="4" name="lf_desc" id="lf_desc">' . $description . '</textarea> <div class="link-submit-title"> <label>' . wfMsg('linkfilter-type') . '</label> </div> <select tabindex="4" name="lf_type" id="lf_type"> <option value="">-</option>'; $linkTypes = Link::getLinkTypes(); foreach ($linkTypes as $id => $type) { $selected = ''; if ($link['type'] == $id) { $selected = ' selected="selected"'; } $output .= "<option value=\"{$id}\"{$selected}>{$type}</option>"; } $output .= '</select> <div class="link-submit-button"> <input tabindex="5" class="site-button" type="button" id="link-submit-button" value="' . wfMsg('linkfilter-submit-button') . '" /> </div> </form> </div>'; $output .= '<div class="lr-right">' . wfMsgExt('linkfilter-instructions', 'parse') . '</div> <div class="cleared"></div>'; return $output; }
/** * @param $tpl * @return bool */ public static function addToolboxLink( &$tpl ) { global $wgOut, $wgShortUrlPrefix; if ( !is_string( $wgShortUrlPrefix ) ) { $urlPrefix = SpecialPage::getTitleFor( 'ShortUrl' )->getCanonicalUrl() . '/'; } else { $urlPrefix = $wgShortUrlPrefix; } $title = $wgOut->getTitle(); if ( ShortUrlUtils::needsShortUrl( $title ) ) { $shortId = ShortUrlUtils::encodeTitle( $title ); $shortURL = $urlPrefix . $shortId; $html = Html::rawElement( 'li', array( 'id' => 't-shorturl' ), Html::Element( 'a', array( 'href' => $shortURL, 'title' => wfMsg( 'shorturl-toolbox-title' ) ), wfMsg( 'shorturl-toolbox-text' ) ) ); echo $html; } return true; }
function doTagRow($tag, $hitcount) { static $doneTags = array(); if (in_array($tag, $doneTags)) { return ''; } $newRow = ''; $newRow .= Xml::tags('td', null, Xml::element('code', null, $tag)); $disp = ChangeTags::tagDescription($tag); $disp .= ' '; $editLink = Linker::link(Title::makeTitle(NS_MEDIAWIKI, "Tag-{$tag}"), $this->msg('tags-edit')->escaped()); $disp .= $this->msg('parentheses')->rawParams($editLink)->escaped(); $newRow .= Xml::tags('td', null, $disp); $msg = $this->msg("tag-{$tag}-description"); $desc = !$msg->exists() ? '' : $msg->parse(); $desc .= ' '; $editDescLink = Linker::link(Title::makeTitle(NS_MEDIAWIKI, "Tag-{$tag}-description"), $this->msg('tags-edit')->escaped()); $desc .= $this->msg('parentheses')->rawParams($editDescLink)->escaped(); $newRow .= Xml::tags('td', null, $desc); $hitcount = $this->msg('tags-hitcount')->numParams($hitcount)->escaped(); $hitcount = Linker::link(SpecialPage::getTitleFor('Recentchanges'), $hitcount, array(), array('tagfilter' => $tag)); $newRow .= Xml::tags('td', null, $hitcount); $doneTags[] = $tag; return Xml::tags('tr', null, $newRow) . "\n"; }
public function logFeedback($params, $itemId) { $title = SpecialPage::getTitleFor('FeedbackDashboard', $itemId); $reason = wfMessage('moodbar-log-reason')->params($params['type'], $params['comment'])->text(); $log = new LogPage('moodbar'); $log->addEntry('feedback', $title, $reason); }
public function getRedirectTarget() { if ($this->getTitle()->getPrefixedText() === 'Redirected') { return SpecialPage::getTitleFor('Blankpage'); } return null; }
function __construct() { // the second parameter in the following function call ensures that only // users who have the 'linktitles-batch' right get to see this page (by // default, this are all sysop users). parent::__construct('LinkTitles', 'linktitles-batch'); }
/** * Constructor */ public function __construct() { global $wgMessageCache; ///TODO: should these be messages? $wgMessageCache->addMessages(array('mvadmin' => 'Admin functions for MetavidWiki')); parent::__construct('MVAdmin', 'delete'); }
private function getPageGroups() { global $wgSortSpecialPages; $pages = SpecialPage::getUsablePages(); if (!count($pages)) { # Yeah, that was pointless. Thanks for coming. return false; } /** Put them into a sortable array */ $groups = array(); foreach ($pages as $page) { if ($page->isListed()) { $group = SpecialPage::getGroup($page); if (!isset($groups[$group])) { $groups[$group] = array(); } $groups[$group][$page->getDescription()] = array($page->getTitle(), $page->isRestricted()); } } /** Sort */ if ($wgSortSpecialPages) { foreach ($groups as $group => $sortedPages) { ksort($groups[$group]); } } /** Always move "other" to end */ if (array_key_exists('other', $groups)) { $other = $groups['other']; unset($groups['other']); $groups['other'] = $other; } return $groups; }
public static function notificator_Render($parser, $receiver = '', $receiverLabel = '') { global $wgScript, $wgTitle; if (!$receiverLabel) { $receiverLabel = $receiver; } // Check that the database table is in place if (!Notificator::checkDatabaseTableExists()) { $output = '<span class="error">' . htmlspecialchars(wfMsg('notificator-db-table-does-not-exist')) . '</span>'; return array($output, 'noparse' => true, 'isHTML' => true); } // The rendering is different, depending on whether a valid e-mail address // has been provided, or not - the differing part of the HTML form is being // built here if (Notificator::receiverIsValid($receiver)) { // Valid e-mail address available, so build a hidden input with that address // set, and a button $receiverInputAndSubmitButton = Html::hidden('receiver', $receiver) . Html::element('input', array('type' => 'submit', 'value' => wfMsg('notificator-notify-address-or-name', $receiverLabel))); } else { // No (valid) e-mail address available, build a text input and a button $receiverInputAndSubmitButton = Html::element('input', array('type' => 'text', 'name' => 'receiver', 'value' => wfMsg('notificator-e-mail-address'), 'onfocus' => 'if (this.value == \'' . wfMsg('notificator-e-mail-address') . '\') {this.value=\'\'}')) . Html::element('input', array('type' => 'submit', 'value' => wfMsg('notificator-notify'))); } // Now we assemble the form, consisting of two hidden inputs for page ID and rev ID, // as well as the $receiverInputAndSubmitButton built above $output = Html::rawElement('form', array('action' => SpecialPage::getTitleFor('Notificator')->getLocalURL(), 'method' => 'post', 'enctype' => 'multipart/form-data'), Html::hidden('pageId', $wgTitle->getArticleID()) . Html::hidden('revId', $wgTitle->getLatestRevID()) . $receiverInputAndSubmitButton); return $parser->insertStripItem($output, $parser->mStripState); }
function formatResult($skin, $result) { $title = Title::makeTitle(NS_TEMPLATE, $result->title); $pageLink = $skin->linkKnown($title, null, array(), array('redirect' => 'no')); $wlhLink = $skin->linkKnown(SpecialPage::getTitleFor('Whatlinkshere'), wfMsgHtml('unusedtemplateswlh'), array(), array('target' => $title->getPrefixedText())); return wfSpecialList($pageLink, $wlhLink); }
function setupMwRdf() { global $wgParser, $wgMessageCache, $wgRequest, $wgOut, $wgHooks; $wgMessageCache->addMessages(array('rdf' => 'Rdf', 'rdf-inpage' => "Embedded In-page Turtle", 'rdf-dcmes' => "Dublin Core Metadata Element Set", 'rdf-cc' => "Creative Commons", 'rdf-image' => "Embedded images", 'rdf-linksfrom' => "Links from the page", 'rdf-links' => "All links", 'rdf-linksto' => "Links to the page", 'rdf-history' => "Historical versions", 'rdf-interwiki' => "Interwiki links", 'rdf-categories' => "Categories", 'rdf-target' => "Target page", 'rdf-modelnames' => "Model(s)", 'rdf-format' => "Output format", 'rdf-output-rdfxml' => "RDFXML", 'rdf-output-turtle' => "Turtle", 'rdf-output-ntriples' => "NTriples", 'rdf-instructions' => "Select the target page and RDF models you're interested in.")); $wgParser->setHook('rdf', 'renderMwRdf'); SpecialPage::addPage(new SpecialPage('Rdf', '', true, 'wfRdfSpecialPage', 'extensions/Rdf/Rdf.php')); SpecialPage::addPage(new SpecialPage('RdfQuery', '', true, 'wfSpecialRdfQuery', 'extensions/Rdf/Rdf.php')); # next we set some hooks for saving and clearing RDF data. Each # hook is called on the same ModelingAgent object as it preserves # the list of pages we link to in its state $wgHooks['ArticleSave'][] = array('wfRdfOnArticleSave'); $wgHooks['ArticleSaveComplete'][] = array('wfRdfOnArticleSaveComplete'); $wgHooks['TitleMoveComplete'][] = array('wfRdfOnTitleMoveComplete'); $wgHooks['ArticleDeleteComplete'][] = array('wfRdfOnArticleDeleteComplete'); # Add an RDF metadata link if requested $action = $wgRequest->getText('action', 'view'); # Note: $wgTitle not yet set; have to get it from the request $title = $wgRequest->getText('title'); if (!isset($title) || strlen($title) == 0) { return true; } $nt = Title::newFromText($title); if (!isset($nt) || $nt->getNamespace() == NS_SPECIAL) { return true; } # finally *if* this is a page view we need to add the link if (!$action == 'view') { return true; } $rdft = Title::makeTitle(NS_SPECIAL, "Rdf"); $target = $nt->getPrefixedDBkey(); $linkdata = array('title' => 'RDF Metadata', 'type' => 'application/rdf+xml', 'href' => $rdft->getLocalURL("target={$target}")); $wgOut->addMetadataLink($linkdata); return true; }
public function execute() { global $wgUser, $wgTranslateWorkflowStates; if (!$wgTranslateWorkflowStates) { $this->dieUsage('Message group review not in use', 'disabled'); } if (!$wgUser->isallowed(self::$right)) { $this->dieUsage('Permission denied', 'permissiondenied'); } $requestParams = $this->extractRequestParams(); $group = MessageGroups::getGroup($requestParams['group']); if (!$group) { $this->dieUsageMsg(array('missingparam', 'group')); } $languages = Language::getLanguageNames(false); if (!isset($languages[$requestParams['language']])) { $this->dieUsageMsg(array('missingparam', 'language')); } $dbr = wfGetDB(DB_SLAVE); $groupid = $group->getId(); $currentState = $dbr->selectField('translate_groupreviews', 'tgr_state', array('tgr_group' => $groupid, 'tgr_lang' => $requestParams['language']), __METHOD__); if ($currentState == $requestParams['state']) { $this->dieUsage('The requested state is identical to the current state', 'sameworkflowstate'); } $dbw = wfGetDB(DB_MASTER); $table = 'translate_groupreviews'; $row = array('tgr_group' => $groupid, 'tgr_lang' => $requestParams['language'], 'tgr_state' => $requestParams['state']); $index = array('tgr_group', 'tgr_language'); $res = $dbw->replace($table, array($index), $row, __METHOD__); $logger = new LogPage('translationreview'); $logParams = array($requestParams['language'], $group->getLabel(), $currentState, $requestParams['state']); $logger->addEntry('group', SpecialPage::getTitleFor('Translate', $groupid), '', $logParams, $wgUser); $output = array('review' => array('group' => $group->getId(), 'language' => $requestParams['language'], 'state' => $requestParams['state'])); $this->getResult()->addValue(null, $this->getModuleName(), $output); }
public function execute() { $params = $this->extractRequestParams(); global $wgFeed, $wgFeedClasses, $wgSitename, $wgLanguageCode; if (!$wgFeed) { $this->dieUsage('Syndication feeds are not available', 'feed-unavailable'); } if (!isset($wgFeedClasses[$params['feedformat']])) { $this->dieUsage('Invalid subscription feed type', 'feed-invalid'); } global $wgMiserMode; if ($params['showsizediff'] && $wgMiserMode) { $this->dieUsage('Size difference is disabled in Miser Mode', 'sizediffdisabled'); } $msg = wfMessage('Contributions')->inContentLanguage()->text(); $feedTitle = $wgSitename . ' - ' . $msg . ' [' . $wgLanguageCode . ']'; $feedUrl = SpecialPage::getTitleFor('Contributions', $params['user'])->getFullURL(); $target = $params['user'] == 'newbies' ? 'newbies' : Title::makeTitleSafe(NS_USER, $params['user'])->getText(); $feed = new $wgFeedClasses[$params['feedformat']]($feedTitle, htmlspecialchars($msg), $feedUrl); $pager = new ContribsPager($this->getContext(), array('target' => $target, 'namespace' => $params['namespace'], 'year' => $params['year'], 'month' => $params['month'], 'tagFilter' => $params['tagfilter'], 'deletedOnly' => $params['deletedonly'], 'topOnly' => $params['toponly'], 'showSizeDiff' => $params['showsizediff'])); $feedItems = array(); if ($pager->getNumRows() > 0) { foreach ($pager->mResult as $row) { $feedItems[] = $this->feedItem($row); } } ApiFormatFeedWrapper::setResult($this->getResult(), $feed, $feedItems); }
function doTagRow($tag, $hitcount) { static $sk = null, $doneTags = array(); if (!$sk) { $sk = $this->getSkin(); } if (in_array($tag, $doneTags)) { return ''; } global $wgLang; $newRow = ''; $newRow .= Xml::tags('td', null, Xml::element('tt', null, $tag)); $disp = ChangeTags::tagDescription($tag); $disp .= ' (' . $sk->link(Title::makeTitle(NS_MEDIAWIKI, "Tag-{$tag}"), wfMsgHtml('tags-edit')) . ')'; $newRow .= Xml::tags('td', null, $disp); $msg = wfMessage("tag-{$tag}-description"); $desc = !$msg->exists() ? '' : $msg->parse(); $desc .= ' (' . $sk->link(Title::makeTitle(NS_MEDIAWIKI, "Tag-{$tag}-description"), wfMsgHtml('tags-edit')) . ')'; $newRow .= Xml::tags('td', null, $desc); $hitcount = wfMsgExt('tags-hitcount', array('parsemag'), $wgLang->formatNum($hitcount)); $hitcount = $sk->link(SpecialPage::getTitleFor('Recentchanges'), $hitcount, array(), array('tagfilter' => $tag)); $newRow .= Xml::tags('td', null, $hitcount); $doneTags[] = $tag; return Xml::tags('tr', null, $newRow) . "\n"; }
function wfCreatePageConfirmEdit(&$captcha, &$editPage, $newtext, $section, $merged, &$result) { global $wgTitle, $wgCreatePageCoverRedLinks; // Enable only if the configuration global is set to true, // only for Special:CreatePage and only when ConfirmEdit is installed $canonspname = SpecialPage::resolveAlias($wgTitle->getDBkey()); if (!$wgCreatePageCoverRedLinks) { return true; } if ($canonspname != 'CreatePage') { return true; } if (!class_exists('SimpleCaptcha')) { return true; } if ($captcha->shouldCheck($editPage, $newtext, $section, $merged)) { if ($captcha->passCaptcha()) { $result = true; return false; } else { // display CAP page $mainform = new CreatePageCreatePlateForm(); $mainform->showForm('', false, array(&$captcha, 'editCallback')); $editor = new CreatePageMultiEditor($_SESSION['article_createplate']); $editor->generateForm($newtext); $result = false; return false; } } else { return true; } }
public function onView() { $rc = RecentChange::newFromId($this->getRequest()->getInt('rcid')); if (is_null($rc)) { throw new ErrorPageError('markedaspatrollederror', 'markedaspatrollederrortext'); } $errors = $rc->doMarkPatrolled($this->getUser()); if (in_array(array('rcpatroldisabled'), $errors)) { throw new ErrorPageError('rcpatroldisabled', 'rcpatroldisabledtext'); } if (in_array(array('hookaborted'), $errors)) { // The hook itself has handled any output return; } # It would be nice to see where the user had actually come from, but for now just guess $returnto = $rc->getAttribute('rc_type') == RC_NEW ? 'Newpages' : 'Recentchanges'; $return = SpecialPage::getTitleFor($returnto); if (in_array(array('markedaspatrollederror-noautopatrol'), $errors)) { $this->getOutput()->setPageTitle(wfMsg('markedaspatrollederror')); $this->getOutput()->addWikiMsg('markedaspatrollederror-noautopatrol'); $this->getOutput()->returnToMain(null, $return); return; } if (!empty($errors)) { $this->getOutput()->showPermissionsErrorPage($errors); return; } # Inform the user $this->getOutput()->setPageTitle(wfMsg('markedaspatrolled')); $this->getOutput()->addWikiMsg('markedaspatrolledtext', $rc->getTitle()->getPrefixedText()); $this->getOutput()->returnToMain(null, $return); }
/** * Make a "what links here" link for a given title * * @param Title $title Title to make the link for * @param Skin $skin Skin to use * @param object $result Result row * @return string */ private function makeWlhLink($title, $skin, $result) { global $wgLang; $wlh = SpecialPage::getTitleFor('Whatlinkshere'); $label = wfMsgExt('nlinks', array('parsemag', 'escape'), $wgLang->formatNum($result->value)); return $skin->link($wlh, $label, array(), array('target' => $title->getPrefixedText())); }
function doTagRow($tag, $hitcount) { static $sk = null, $doneTags = array(); if (!$sk) { global $wgUser; $sk = $wgUser->getSkin(); } if (in_array($tag, $doneTags)) { return ''; } $newRow = ''; $newRow .= Xml::tags('td', null, Xml::element('tt', null, $tag)); $disp = ChangeTags::tagDescription($tag); $disp .= ' (' . $sk->link(Title::makeTitle(NS_MEDIAWIKI, "Tag-{$tag}"), wfMsg('tags-edit')) . ')'; $newRow .= Xml::tags('td', null, $disp); $desc = wfMsgExt("tag-{$tag}-description", 'parseinline'); $desc = wfEmptyMsg("tag-{$tag}-description", $desc) ? '' : $desc; $desc .= ' (' . $sk->link(Title::makeTitle(NS_MEDIAWIKI, "Tag-{$tag}-description"), wfMsg('tags-edit')) . ')'; $newRow .= Xml::tags('td', null, $desc); $hitcount = wfMsg('tags-hitcount', $hitcount); $hitcount = $sk->link(SpecialPage::getTitleFor('RecentChanges'), $hitcount, array(), array('tagfilter' => $tag)); $newRow .= Xml::tags('td', null, $hitcount); $doneTags[] = $tag; return Xml::tags('tr', null, $newRow) . "\n"; }
function doTagRow($tag, $hitcount) { $user = $this->getUser(); $newRow = ''; $newRow .= Xml::tags('td', null, Xml::element('code', null, $tag)); $disp = ChangeTags::tagDescription($tag); if ($user->isAllowed('editinterface')) { $disp .= ' '; $editLink = Linker::link(Title::makeTitle(NS_MEDIAWIKI, "Tag-{$tag}"), $this->msg('tags-edit')->escaped()); $disp .= $this->msg('parentheses')->rawParams($editLink)->escaped(); } $newRow .= Xml::tags('td', null, $disp); $msg = $this->msg("tag-{$tag}-description"); $desc = !$msg->exists() ? '' : $msg->parse(); if ($user->isAllowed('editinterface')) { $desc .= ' '; $editDescLink = Linker::link(Title::makeTitle(NS_MEDIAWIKI, "Tag-{$tag}-description"), $this->msg('tags-edit')->escaped()); $desc .= $this->msg('parentheses')->rawParams($editDescLink)->escaped(); } $newRow .= Xml::tags('td', null, $desc); $active = isset($this->definedTags[$tag]) ? 'tags-active-yes' : 'tags-active-no'; $active = $this->msg($active)->escaped(); $newRow .= Xml::tags('td', null, $active); $hitcountLabel = $this->msg('tags-hitcount')->numParams($hitcount)->escaped(); $hitcountLink = Linker::link(SpecialPage::getTitleFor('Recentchanges'), $hitcountLabel, array(), array('tagfilter' => $tag)); // add raw $hitcount for sorting, because tags-hitcount contains numbers and letters $newRow .= Xml::tags('td', array('data-sort-value' => $hitcount), $hitcountLink); return Xml::tags('tr', null, $newRow) . "\n"; }