function wfAjaxQueryPagesAddJS($out) { global $wgExtensionAssetsPath; if ($out->getTitle()->getNamespace() == NS_SPECIAL && SpecialPage::getPageByAlias($out->getTitle()->getDBkey())) { $out->addScriptFile("{$wgExtensionAssetsPath}/AjaxQueryPages/AjaxQueryPages.js"); } return true; }
/** * Ajax responder entry point */ function wfAjaxQueryPages($specialpagename, $offset, $limit, $dir = false) { global $wgRequest, $wgOut; // Make sure we requested an existing special page if (!($spObj = SpecialPage::getPageByAlias($specialpagename))) { return null; } // Alter the GET request. $wgRequest->setVal('offset', $offset); $wgRequest->setVal('limit', $limit); if ($dir == 'prev' || $dir == 'next') { $wgRequest->setVal('dir', $dir); } $spObj->execute(null); return $wgOut->getHTML(); }
/** * Execute a special page path. * The path may contain parameters, e.g. Special:Name/Params * Extracts the special page name and call the execute method, passing the parameters * * Returns a title object if the page is redirected, false if there was no such special * page, and true if it was successful. * * @param $title a title object * @param $including output is being captured for use in {{special:whatever}} */ static function executePath(&$title, $including = false) { global $wgOut, $wgTitle, $wgRequest; wfProfileIn(__METHOD__); # FIXME: redirects broken due to this call $bits = explode('/', $title->getDBkey(), 2); $name = $bits[0]; if (!isset($bits[1])) { // bug 2087 $par = NULL; } else { $par = $bits[1]; } $page = SpecialPage::getPageByAlias($name); # Nonexistent? if (!$page) { if (!$including) { $wgOut->setArticleRelated(false); $wgOut->setRobotpolicy('noindex,nofollow'); $wgOut->setStatusCode(404); $wgOut->showErrorPage('nosuchspecialpage', 'nospecialpagetext'); } wfProfileOut(__METHOD__); return false; } # Check for redirect if (!$including) { $redirect = $page->getRedirect($par); if ($redirect) { $query = $page->getRedirectQuery(); $url = $redirect->getFullUrl($query); $wgOut->redirect($url); wfProfileOut(__METHOD__); return $redirect; } } # Redirect to canonical alias for GET commands # Not for POST, we'd lose the post data, so it's best to just distribute # the request. Such POST requests are possible for old extensions that # generate self-links without being aware that their default name has # changed. if (!$including && $name != $page->getLocalName() && !$wgRequest->wasPosted()) { $query = $_GET; unset($query['title']); $query = wfArrayToCGI($query); $title = $page->getTitle($par); $url = $title->getFullUrl($query); $wgOut->redirect($url); wfProfileOut(__METHOD__); return $redirect; } if ($including && !$page->includable()) { wfProfileOut(__METHOD__); return false; } elseif (!$including) { $wgTitle = $page->getTitle(); } $page->including($including); // Execute special page $profName = 'Special:' . $page->getName(); wfProfileIn($profName); $page->execute($par); wfProfileOut($profName); wfProfileOut(__METHOD__); return true; }