/**
  * @brief This returns the HTML output of any SpecialPage::execute function
  * @details
  * 	SpecialPage::capturePath will skip SpecialPages which are not "includable"
  *	(which is all the interesting ones)  So we need to force it.
  *
  * @requestParam string page the name of the Special page to invoke
  * @responseParam string output the HTML output of the special page
  */
 public function GetSpecialPage()
 {
     if (!$this->wg->User->isAllowed('admindashboard')) {
         $this->displayRestrictionError();
         return false;
         // skip rendering
     }
     // Construct title object from request params
     $pageName = $this->getVal("page");
     $title = SpecialPage::getTitleFor($pageName);
     // Save global variables and initialize context for special page
     global $wgOut, $wgTitle;
     $oldTitle = $wgTitle;
     $oldOut = $wgOut;
     $wgOut = new OutputPage();
     $wgOut->setTitle($title);
     $wgTitle = $title;
     // Construct special page object
     try {
         $basePages = array("Categories", "Recentchanges", "Specialpages");
         if (in_array($pageName, $basePages)) {
             $sp = SpecialPageFactory::getPage($pageName);
         } else {
             $sp = new $pageName();
         }
     } catch (Exception $e) {
         print_pre("Could not construct special page object");
     }
     if ($sp instanceof SpecialPage) {
         $ret = $sp->execute(false);
     } else {
         print_pre("Object is not a special page.");
     }
     // TODO: check retval of special page call?
     $this->output = $wgOut->getHTML();
     // Restore global variables
     $wgTitle = $oldTitle;
     $wgOut = $oldOut;
 }
Esempio n. 2
0
 /**
  * Just like executePath() except it returns the HTML instead of outputting it
  * Returns false if there was no such special page, or a title object if it was
  * a redirect.
  * @static
  */
 static function capturePath(&$title)
 {
     global $wgOut, $wgTitle;
     $oldTitle = $wgTitle;
     $oldOut = $wgOut;
     $wgOut = new OutputPage();
     $wgOut->setTitle($title);
     $ret = SpecialPage::executePath($title, true);
     if ($ret === true) {
         $ret = $wgOut->getHTML();
     }
     $wgTitle = $oldTitle;
     $wgOut = $oldOut;
     return $ret;
 }