예제 #1
0
function wfAjaxQueryPagesAddJS($out)
{
    global $wgExtensionAssetsPath;
    if ($out->getTitle()->getNamespace() == NS_SPECIAL && SpecialPage::getPageByAlias($out->getTitle()->getDBkey())) {
        $out->addScriptFile("{$wgExtensionAssetsPath}/AjaxQueryPages/AjaxQueryPages.js");
    }
    return true;
}
예제 #2
0
/**
 * 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();
}
예제 #3
0
 /**
  * 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;
 }