/**
  * Converts the content of the template according to the given type.
  * @param Title $title
  * @param sting $content
  * @param string $type One of types specified in the TemplateClassificationController
  * @return string
  * @throws MWException
  */
 public function createDraftContent(Title $title, $content, $type)
 {
     $newContent = '';
     if ($type === TemplateClassificationController::TEMPLATE_INFOBOX) {
         /**
          * While we're at it we can mark the base template as an infobox
          */
         $parentTitle = Title::newFromText($title->getBaseText(), $title->getNamespace());
         $tc = new TemplateClassificationController($parentTitle);
         $tc->classifyTemplate(TemplateClassificationController::TEMPLATE_INFOBOX, true);
         $templateConverter = new TemplateConverter($title);
         $newContent = $templateConverter->convertAsInfobox($content);
         $newContent .= $templateConverter->generatePreviewSection($content);
     }
     return $newContent;
 }
예제 #2
0
 /**
  * Return value of a magic variable (like PAGENAME)
  *
  * @private
  *
  * @param $index integer
  * @param bool|\PPFrame $frame
  *
  * @throws MWException
  * @return string
  */
 function getVariableValue($index, $frame = false)
 {
     global $wgContLang, $wgSitename, $wgServer;
     global $wgArticlePath, $wgScriptPath, $wgStylePath;
     if (is_null($this->mTitle)) {
         // If no title set, bad things are going to happen
         // later. Title should always be set since this
         // should only be called in the middle of a parse
         // operation (but the unit-tests do funky stuff)
         throw new MWException(__METHOD__ . ' Should only be ' . ' called while parsing (no title set)');
     }
     /**
      * Some of these require message or data lookups and can be
      * expensive to check many times.
      */
     if (wfRunHooks('ParserGetVariableValueVarCache', array(&$this, &$this->mVarCache))) {
         if (isset($this->mVarCache[$index])) {
             return $this->mVarCache[$index];
         }
     }
     $ts = wfTimestamp(TS_UNIX, $this->mOptions->getTimestamp());
     wfRunHooks('ParserGetVariableValueTs', array(&$this, &$ts));
     $pageLang = $this->getFunctionLang();
     switch ($index) {
         case 'currentmonth':
             $value = $pageLang->formatNum(MWTimestamp::getInstance($ts)->format('m'));
             break;
         case 'currentmonth1':
             $value = $pageLang->formatNum(MWTimestamp::getInstance($ts)->format('n'));
             break;
         case 'currentmonthname':
             $value = $pageLang->getMonthName(MWTimestamp::getInstance($ts)->format('n'));
             break;
         case 'currentmonthnamegen':
             $value = $pageLang->getMonthNameGen(MWTimestamp::getInstance($ts)->format('n'));
             break;
         case 'currentmonthabbrev':
             $value = $pageLang->getMonthAbbreviation(MWTimestamp::getInstance($ts)->format('n'));
             break;
         case 'currentday':
             $value = $pageLang->formatNum(MWTimestamp::getInstance($ts)->format('j'));
             break;
         case 'currentday2':
             $value = $pageLang->formatNum(MWTimestamp::getInstance($ts)->format('d'));
             break;
         case 'localmonth':
             $value = $pageLang->formatNum(MWTimestamp::getLocalInstance($ts)->format('m'));
             break;
         case 'localmonth1':
             $value = $pageLang->formatNum(MWTimestamp::getLocalInstance($ts)->format('n'));
             break;
         case 'localmonthname':
             $value = $pageLang->getMonthName(MWTimestamp::getLocalInstance($ts)->format('n'));
             break;
         case 'localmonthnamegen':
             $value = $pageLang->getMonthNameGen(MWTimestamp::getLocalInstance($ts)->format('n'));
             break;
         case 'localmonthabbrev':
             $value = $pageLang->getMonthAbbreviation(MWTimestamp::getLocalInstance($ts)->format('n'));
             break;
         case 'localday':
             $value = $pageLang->formatNum(MWTimestamp::getLocalInstance($ts)->format('j'));
             break;
         case 'localday2':
             $value = $pageLang->formatNum(MWTimestamp::getLocalInstance($ts)->format('d'));
             break;
         case 'pagename':
             $value = wfEscapeWikiText($this->mTitle->getText());
             break;
         case 'pagenamee':
             $value = wfEscapeWikiText($this->mTitle->getPartialURL());
             break;
         case 'fullpagename':
             $value = wfEscapeWikiText($this->mTitle->getPrefixedText());
             break;
         case 'fullpagenamee':
             $value = wfEscapeWikiText($this->mTitle->getPrefixedURL());
             break;
         case 'subpagename':
             $value = wfEscapeWikiText($this->mTitle->getSubpageText());
             break;
         case 'subpagenamee':
             $value = wfEscapeWikiText($this->mTitle->getSubpageUrlForm());
             break;
         case 'rootpagename':
             $value = wfEscapeWikiText($this->mTitle->getRootText());
             break;
         case 'rootpagenamee':
             $value = wfEscapeWikiText(wfUrlEncode(str_replace(' ', '_', $this->mTitle->getRootText())));
             break;
         case 'basepagename':
             $value = wfEscapeWikiText($this->mTitle->getBaseText());
             break;
         case 'basepagenamee':
             $value = wfEscapeWikiText(wfUrlEncode(str_replace(' ', '_', $this->mTitle->getBaseText())));
             break;
         case 'talkpagename':
             if ($this->mTitle->canTalk()) {
                 $talkPage = $this->mTitle->getTalkPage();
                 $value = wfEscapeWikiText($talkPage->getPrefixedText());
             } else {
                 $value = '';
             }
             break;
         case 'talkpagenamee':
             if ($this->mTitle->canTalk()) {
                 $talkPage = $this->mTitle->getTalkPage();
                 $value = wfEscapeWikiText($talkPage->getPrefixedURL());
             } else {
                 $value = '';
             }
             break;
         case 'subjectpagename':
             $subjPage = $this->mTitle->getSubjectPage();
             $value = wfEscapeWikiText($subjPage->getPrefixedText());
             break;
         case 'subjectpagenamee':
             $subjPage = $this->mTitle->getSubjectPage();
             $value = wfEscapeWikiText($subjPage->getPrefixedURL());
             break;
         case 'pageid':
             // requested in bug 23427
             $pageid = $this->getTitle()->getArticleID();
             if ($pageid == 0) {
                 # 0 means the page doesn't exist in the database,
                 # which means the user is previewing a new page.
                 # The vary-revision flag must be set, because the magic word
                 # will have a different value once the page is saved.
                 $this->mOutput->setFlag('vary-revision');
                 wfDebug(__METHOD__ . ": {{PAGEID}} used in a new page, setting vary-revision...\n");
             }
             $value = $pageid ? $pageid : null;
             break;
         case 'revisionid':
             # Let the edit saving system know we should parse the page
             # *after* a revision ID has been assigned.
             $this->mOutput->setFlag('vary-revision');
             wfDebug(__METHOD__ . ": {{REVISIONID}} used, setting vary-revision...\n");
             $value = $this->mRevisionId;
             break;
         case 'revisionday':
             # Let the edit saving system know we should parse the page
             # *after* a revision ID has been assigned. This is for null edits.
             $this->mOutput->setFlag('vary-revision');
             wfDebug(__METHOD__ . ": {{REVISIONDAY}} used, setting vary-revision...\n");
             $value = intval(substr($this->getRevisionTimestamp(), 6, 2));
             break;
         case 'revisionday2':
             # Let the edit saving system know we should parse the page
             # *after* a revision ID has been assigned. This is for null edits.
             $this->mOutput->setFlag('vary-revision');
             wfDebug(__METHOD__ . ": {{REVISIONDAY2}} used, setting vary-revision...\n");
             $value = substr($this->getRevisionTimestamp(), 6, 2);
             break;
         case 'revisionmonth':
             # Let the edit saving system know we should parse the page
             # *after* a revision ID has been assigned. This is for null edits.
             $this->mOutput->setFlag('vary-revision');
             wfDebug(__METHOD__ . ": {{REVISIONMONTH}} used, setting vary-revision...\n");
             $value = substr($this->getRevisionTimestamp(), 4, 2);
             break;
         case 'revisionmonth1':
             # Let the edit saving system know we should parse the page
             # *after* a revision ID has been assigned. This is for null edits.
             $this->mOutput->setFlag('vary-revision');
             wfDebug(__METHOD__ . ": {{REVISIONMONTH1}} used, setting vary-revision...\n");
             $value = intval(substr($this->getRevisionTimestamp(), 4, 2));
             break;
         case 'revisionyear':
             # Let the edit saving system know we should parse the page
             # *after* a revision ID has been assigned. This is for null edits.
             $this->mOutput->setFlag('vary-revision');
             wfDebug(__METHOD__ . ": {{REVISIONYEAR}} used, setting vary-revision...\n");
             $value = substr($this->getRevisionTimestamp(), 0, 4);
             break;
         case 'revisiontimestamp':
             # Let the edit saving system know we should parse the page
             # *after* a revision ID has been assigned. This is for null edits.
             $this->mOutput->setFlag('vary-revision');
             wfDebug(__METHOD__ . ": {{REVISIONTIMESTAMP}} used, setting vary-revision...\n");
             $value = $this->getRevisionTimestamp();
             break;
         case 'revisionuser':
             # Let the edit saving system know we should parse the page
             # *after* a revision ID has been assigned. This is for null edits.
             $this->mOutput->setFlag('vary-revision');
             wfDebug(__METHOD__ . ": {{REVISIONUSER}} used, setting vary-revision...\n");
             $value = $this->getRevisionUser();
             break;
         case 'revisionsize':
             # Let the edit saving system know we should parse the page
             # *after* a revision ID has been assigned. This is for null edits.
             $this->mOutput->setFlag('vary-revision');
             wfDebug(__METHOD__ . ": {{REVISIONSIZE}} used, setting vary-revision...\n");
             $value = $this->getRevisionSize();
             break;
         case 'namespace':
             $value = str_replace('_', ' ', $wgContLang->getNsText($this->mTitle->getNamespace()));
             break;
         case 'namespacee':
             $value = wfUrlencode($wgContLang->getNsText($this->mTitle->getNamespace()));
             break;
         case 'namespacenumber':
             $value = $this->mTitle->getNamespace();
             break;
         case 'talkspace':
             $value = $this->mTitle->canTalk() ? str_replace('_', ' ', $this->mTitle->getTalkNsText()) : '';
             break;
         case 'talkspacee':
             $value = $this->mTitle->canTalk() ? wfUrlencode($this->mTitle->getTalkNsText()) : '';
             break;
         case 'subjectspace':
             $value = str_replace('_', ' ', $this->mTitle->getSubjectNsText());
             break;
         case 'subjectspacee':
             $value = wfUrlencode($this->mTitle->getSubjectNsText());
             break;
         case 'currentdayname':
             $value = $pageLang->getWeekdayName((int) MWTimestamp::getInstance($ts)->format('w') + 1);
             break;
         case 'currentyear':
             $value = $pageLang->formatNum(MWTimestamp::getInstance($ts)->format('Y'), true);
             break;
         case 'currenttime':
             $value = $pageLang->time(wfTimestamp(TS_MW, $ts), false, false);
             break;
         case 'currenthour':
             $value = $pageLang->formatNum(MWTimestamp::getInstance($ts)->format('H'), true);
             break;
         case 'currentweek':
             # @bug 4594 PHP5 has it zero padded, PHP4 does not, cast to
             # int to remove the padding
             $value = $pageLang->formatNum((int) MWTimestamp::getInstance($ts)->format('W'));
             break;
         case 'currentdow':
             $value = $pageLang->formatNum(MWTimestamp::getInstance($ts)->format('w'));
             break;
         case 'localdayname':
             $value = $pageLang->getWeekdayName((int) MWTimestamp::getLocalInstance($ts)->format('w') + 1);
             break;
         case 'localyear':
             $value = $pageLang->formatNum(MWTimestamp::getLocalInstance($ts)->format('Y'), true);
             break;
         case 'localtime':
             $value = $pageLang->time(MWTimestamp::getLocalInstance($ts)->format('YmdHis'), false, false);
             break;
         case 'localhour':
             $value = $pageLang->formatNum(MWTimestamp::getLocalInstance($ts)->format('H'), true);
             break;
         case 'localweek':
             # @bug 4594 PHP5 has it zero padded, PHP4 does not, cast to
             # int to remove the padding
             $value = $pageLang->formatNum((int) MWTimestamp::getLocalInstance($ts)->format('W'));
             break;
         case 'localdow':
             $value = $pageLang->formatNum(MWTimestamp::getLocalInstance($ts)->format('w'));
             break;
         case 'numberofarticles':
             $value = $pageLang->formatNum(SiteStats::articles());
             break;
         case 'numberoffiles':
             $value = $pageLang->formatNum(SiteStats::images());
             break;
         case 'numberofusers':
             $value = $pageLang->formatNum(SiteStats::users());
             break;
         case 'numberofactiveusers':
             $value = $pageLang->formatNum(SiteStats::activeUsers());
             break;
         case 'numberofpages':
             $value = $pageLang->formatNum(SiteStats::pages());
             break;
         case 'numberofadmins':
             $value = $pageLang->formatNum(SiteStats::numberingroup('sysop'));
             break;
         case 'numberofedits':
             $value = $pageLang->formatNum(SiteStats::edits());
             break;
         case 'numberofviews':
             global $wgDisableCounters;
             $value = !$wgDisableCounters ? $pageLang->formatNum(SiteStats::views()) : '';
             break;
         case 'currenttimestamp':
             $value = wfTimestamp(TS_MW, $ts);
             break;
         case 'localtimestamp':
             $value = MWTimestamp::getLocalInstance($ts)->format('YmdHis');
             break;
         case 'currentversion':
             $value = SpecialVersion::getVersion();
             break;
         case 'articlepath':
             return $wgArticlePath;
         case 'sitename':
             return $wgSitename;
         case 'server':
             return $wgServer;
         case 'servername':
             $serverParts = wfParseUrl($wgServer);
             return $serverParts && isset($serverParts['host']) ? $serverParts['host'] : $wgServer;
         case 'scriptpath':
             return $wgScriptPath;
         case 'stylepath':
             return $wgStylePath;
         case 'directionmark':
             return $pageLang->getDirMark();
         case 'contentlanguage':
             global $wgLanguageCode;
             return $wgLanguageCode;
         case 'cascadingsources':
             $value = CoreParserFunctions::cascadingsources($this);
             break;
         default:
             $ret = null;
             wfRunHooks('ParserGetVariableValueSwitch', array(&$this, &$this->mVarCache, &$index, &$ret, &$frame));
             return $ret;
     }
     if ($index) {
         $this->mVarCache[$index] = $value;
     }
     return $value;
 }
예제 #3
0
 /**
  * Return value of a magic variable (like PAGENAME)
  *
  * @private
  *
  * @param $index integer
  * @param $frame PPFrame
  */
 function getVariableValue($index, $frame = false)
 {
     global $wgContLang, $wgSitename, $wgServer;
     global $wgArticlePath, $wgScriptPath, $wgStylePath;
     /**
      * Some of these require message or data lookups and can be
      * expensive to check many times.
      */
     if (wfRunHooks('ParserGetVariableValueVarCache', array(&$this, &$this->mVarCache))) {
         if (isset($this->mVarCache[$index])) {
             return $this->mVarCache[$index];
         }
     }
     $ts = wfTimestamp(TS_UNIX, $this->mOptions->getTimestamp());
     wfRunHooks('ParserGetVariableValueTs', array(&$this, &$ts));
     # Use the time zone
     global $wgLocaltimezone;
     if (isset($wgLocaltimezone)) {
         $oldtz = date_default_timezone_get();
         date_default_timezone_set($wgLocaltimezone);
     }
     $localTimestamp = date('YmdHis', $ts);
     $localMonth = date('m', $ts);
     $localMonth1 = date('n', $ts);
     $localMonthName = date('n', $ts);
     $localDay = date('j', $ts);
     $localDay2 = date('d', $ts);
     $localDayOfWeek = date('w', $ts);
     $localWeek = date('W', $ts);
     $localYear = date('Y', $ts);
     $localHour = date('H', $ts);
     if (isset($wgLocaltimezone)) {
         date_default_timezone_set($oldtz);
     }
     switch ($index) {
         case 'currentmonth':
             $value = $wgContLang->formatNum(gmdate('m', $ts));
             break;
         case 'currentmonth1':
             $value = $wgContLang->formatNum(gmdate('n', $ts));
             break;
         case 'currentmonthname':
             $value = $wgContLang->getMonthName(gmdate('n', $ts));
             break;
         case 'currentmonthnamegen':
             $value = $wgContLang->getMonthNameGen(gmdate('n', $ts));
             break;
         case 'currentmonthabbrev':
             $value = $wgContLang->getMonthAbbreviation(gmdate('n', $ts));
             break;
         case 'currentday':
             $value = $wgContLang->formatNum(gmdate('j', $ts));
             break;
         case 'currentday2':
             $value = $wgContLang->formatNum(gmdate('d', $ts));
             break;
         case 'localmonth':
             $value = $wgContLang->formatNum($localMonth);
             break;
         case 'localmonth1':
             $value = $wgContLang->formatNum($localMonth1);
             break;
         case 'localmonthname':
             $value = $wgContLang->getMonthName($localMonthName);
             break;
         case 'localmonthnamegen':
             $value = $wgContLang->getMonthNameGen($localMonthName);
             break;
         case 'localmonthabbrev':
             $value = $wgContLang->getMonthAbbreviation($localMonthName);
             break;
         case 'localday':
             $value = $wgContLang->formatNum($localDay);
             break;
         case 'localday2':
             $value = $wgContLang->formatNum($localDay2);
             break;
         case 'pagename':
             $value = wfEscapeWikiText($this->mTitle->getText());
             break;
         case 'pagenamee':
             $value = wfEscapeWikiText($this->mTitle->getPartialURL());
             break;
         case 'fullpagename':
             $value = wfEscapeWikiText($this->mTitle->getPrefixedText());
             break;
         case 'fullpagenamee':
             $value = wfEscapeWikiText($this->mTitle->getPrefixedURL());
             break;
         case 'subpagename':
             $value = wfEscapeWikiText($this->mTitle->getSubpageText());
             break;
         case 'subpagenamee':
             $value = wfEscapeWikiText($this->mTitle->getSubpageUrlForm());
             break;
         case 'basepagename':
             $value = wfEscapeWikiText($this->mTitle->getBaseText());
             break;
         case 'basepagenamee':
             $value = wfEscapeWikiText(wfUrlEncode(str_replace(' ', '_', $this->mTitle->getBaseText())));
             break;
         case 'talkpagename':
             if ($this->mTitle->canTalk()) {
                 $talkPage = $this->mTitle->getTalkPage();
                 $value = wfEscapeWikiText($talkPage->getPrefixedText());
             } else {
                 $value = '';
             }
             break;
         case 'talkpagenamee':
             if ($this->mTitle->canTalk()) {
                 $talkPage = $this->mTitle->getTalkPage();
                 $value = wfEscapeWikiText($talkPage->getPrefixedUrl());
             } else {
                 $value = '';
             }
             break;
         case 'subjectpagename':
             $subjPage = $this->mTitle->getSubjectPage();
             $value = wfEscapeWikiText($subjPage->getPrefixedText());
             break;
         case 'subjectpagenamee':
             $subjPage = $this->mTitle->getSubjectPage();
             $value = wfEscapeWikiText($subjPage->getPrefixedUrl());
             break;
         case 'revisionid':
             # Let the edit saving system know we should parse the page
             # *after* a revision ID has been assigned.
             $this->mOutput->setFlag('vary-revision');
             wfDebug(__METHOD__ . ": {{REVISIONID}} used, setting vary-revision...\n");
             $value = $this->mRevisionId;
             break;
         case 'revisionday':
             # Let the edit saving system know we should parse the page
             # *after* a revision ID has been assigned. This is for null edits.
             $this->mOutput->setFlag('vary-revision');
             wfDebug(__METHOD__ . ": {{REVISIONDAY}} used, setting vary-revision...\n");
             $value = intval(substr($this->getRevisionTimestamp(), 6, 2));
             break;
         case 'revisionday2':
             # Let the edit saving system know we should parse the page
             # *after* a revision ID has been assigned. This is for null edits.
             $this->mOutput->setFlag('vary-revision');
             wfDebug(__METHOD__ . ": {{REVISIONDAY2}} used, setting vary-revision...\n");
             $value = substr($this->getRevisionTimestamp(), 6, 2);
             break;
         case 'revisionmonth':
             # Let the edit saving system know we should parse the page
             # *after* a revision ID has been assigned. This is for null edits.
             $this->mOutput->setFlag('vary-revision');
             wfDebug(__METHOD__ . ": {{REVISIONMONTH}} used, setting vary-revision...\n");
             $value = substr($this->getRevisionTimestamp(), 4, 2);
             break;
         case 'revisionmonth1':
             # Let the edit saving system know we should parse the page
             # *after* a revision ID has been assigned. This is for null edits.
             $this->mOutput->setFlag('vary-revision');
             wfDebug(__METHOD__ . ": {{REVISIONMONTH1}} used, setting vary-revision...\n");
             $value = intval(substr($this->getRevisionTimestamp(), 4, 2));
             break;
         case 'revisionyear':
             # Let the edit saving system know we should parse the page
             # *after* a revision ID has been assigned. This is for null edits.
             $this->mOutput->setFlag('vary-revision');
             wfDebug(__METHOD__ . ": {{REVISIONYEAR}} used, setting vary-revision...\n");
             $value = substr($this->getRevisionTimestamp(), 0, 4);
             break;
         case 'revisiontimestamp':
             # Let the edit saving system know we should parse the page
             # *after* a revision ID has been assigned. This is for null edits.
             $this->mOutput->setFlag('vary-revision');
             wfDebug(__METHOD__ . ": {{REVISIONTIMESTAMP}} used, setting vary-revision...\n");
             $value = $this->getRevisionTimestamp();
             break;
         case 'revisionuser':
             # Let the edit saving system know we should parse the page
             # *after* a revision ID has been assigned. This is for null edits.
             $this->mOutput->setFlag('vary-revision');
             wfDebug(__METHOD__ . ": {{REVISIONUSER}} used, setting vary-revision...\n");
             $value = $this->getRevisionUser();
             break;
         case 'namespace':
             $value = str_replace('_', ' ', $wgContLang->getNsText($this->mTitle->getNamespace()));
             break;
         case 'namespacee':
             $value = wfUrlencode($wgContLang->getNsText($this->mTitle->getNamespace()));
             break;
         case 'talkspace':
             $value = $this->mTitle->canTalk() ? str_replace('_', ' ', $this->mTitle->getTalkNsText()) : '';
             break;
         case 'talkspacee':
             $value = $this->mTitle->canTalk() ? wfUrlencode($this->mTitle->getTalkNsText()) : '';
             break;
         case 'subjectspace':
             $value = $this->mTitle->getSubjectNsText();
             break;
         case 'subjectspacee':
             $value = wfUrlencode($this->mTitle->getSubjectNsText());
             break;
         case 'currentdayname':
             $value = $wgContLang->getWeekdayName(gmdate('w', $ts) + 1);
             break;
         case 'currentyear':
             $value = $wgContLang->formatNum(gmdate('Y', $ts), true);
             break;
         case 'currenttime':
             $value = $wgContLang->time(wfTimestamp(TS_MW, $ts), false, false);
             break;
         case 'currenthour':
             $value = $wgContLang->formatNum(gmdate('H', $ts), true);
             break;
         case 'currentweek':
             # @bug 4594 PHP5 has it zero padded, PHP4 does not, cast to
             # int to remove the padding
             $value = $wgContLang->formatNum((int) gmdate('W', $ts));
             break;
         case 'currentdow':
             $value = $wgContLang->formatNum(gmdate('w', $ts));
             break;
         case 'localdayname':
             $value = $wgContLang->getWeekdayName($localDayOfWeek + 1);
             break;
         case 'localyear':
             $value = $wgContLang->formatNum($localYear, true);
             break;
         case 'localtime':
             $value = $wgContLang->time($localTimestamp, false, false);
             break;
         case 'localhour':
             $value = $wgContLang->formatNum($localHour, true);
             break;
         case 'localweek':
             # @bug 4594 PHP5 has it zero padded, PHP4 does not, cast to
             # int to remove the padding
             $value = $wgContLang->formatNum((int) $localWeek);
             break;
         case 'localdow':
             $value = $wgContLang->formatNum($localDayOfWeek);
             break;
         case 'numberofarticles':
             $value = $wgContLang->formatNum(SiteStats::articles());
             break;
         case 'numberoffiles':
             $value = $wgContLang->formatNum(SiteStats::images());
             break;
         case 'numberofusers':
             $value = $wgContLang->formatNum(SiteStats::users());
             break;
         case 'numberofactiveusers':
             $value = $wgContLang->formatNum(SiteStats::activeUsers());
             break;
         case 'numberofpages':
             $value = $wgContLang->formatNum(SiteStats::pages());
             break;
         case 'numberofadmins':
             $value = $wgContLang->formatNum(SiteStats::numberingroup('sysop'));
             break;
         case 'numberofedits':
             $value = $wgContLang->formatNum(SiteStats::edits());
             break;
         case 'numberofviews':
             $value = $wgContLang->formatNum(SiteStats::views());
             break;
         case 'currenttimestamp':
             $value = wfTimestamp(TS_MW, $ts);
             break;
         case 'localtimestamp':
             $value = $localTimestamp;
             break;
         case 'currentversion':
             $value = SpecialVersion::getVersion();
             break;
         case 'articlepath':
             return $wgArticlePath;
         case 'sitename':
             return $wgSitename;
         case 'server':
             return $wgServer;
         case 'servername':
             $serverParts = wfParseUrl($wgServer);
             return $serverParts && isset($serverParts['host']) ? $serverParts['host'] : $wgServer;
         case 'scriptpath':
             return $wgScriptPath;
         case 'stylepath':
             return $wgStylePath;
         case 'directionmark':
             return $wgContLang->getDirMark();
         case 'contentlanguage':
             global $wgLanguageCode;
             return $wgLanguageCode;
         default:
             $ret = null;
             if (wfRunHooks('ParserGetVariableValueSwitch', array(&$this, &$this->mVarCache, &$index, &$ret, &$frame))) {
                 return $ret;
             } else {
                 return null;
             }
     }
     if ($index) {
         $this->mVarCache[$index] = $value;
     }
     return $value;
 }
예제 #4
0
	/**
	 * Adds a single image to the gallery.
	 * Takes care of automatically adding a caption when none is provided and parsing it's wikitext.
	 *
	 * @since 1.5.3
	 *
	 * @param ImageGallery $ig The gallery to add the image to
	 * @param Title $imgTitle The title object of the page of the image
	 * @param string $imgCaption An optional caption for the image
	 */
	protected function addImageToGallery( ImageGallery &$ig, Title $imgTitle, $imgCaption ) {
		global $wgParser;

		if ( empty( $imgCaption ) ) {
			if ( $this->m_params['autocaptions'] ) {
				$imgCaption = $imgTitle->getBaseText();
				
				if ( !$this->m_params['fileextensions'] ) {
					$imgCaption = preg_replace( '#\.[^.]+$#', '', $imgCaption );
				}
			}
			else {
				$imgCaption = '';
			}
		}
		else {
			$imgCaption = $wgParser->recursiveTagParse( $imgCaption );
		}

		$ig->add( $imgTitle, $imgCaption );

		// Only add real images (bug #5586)
		if ( $imgTitle->getNamespace() == NS_IMAGE ) {
			$wgParser->mOutput->addImage( $imgTitle->getDBkey() );
		}
	}
예제 #5
0
 /**
  * Adds a single image to the gallery.
  * Takes care of automatically adding a caption when none is provided and parsing it's wikitext.
  *
  * @since 1.5.3
  *
  * @param ImageGallery $ig The gallery to add the image to
  * @param Title $imgTitle The title object of the page of the image
  * @param string $imgCaption An optional caption for the image
  */
 protected function addImageToGallery(ImageGallery &$ig, Title $imgTitle, $imgCaption, $imgRedirect = '')
 {
     if (empty($imgCaption)) {
         if ($this->m_params['autocaptions']) {
             $imgCaption = $imgTitle->getBaseText();
             if (!$this->m_params['fileextensions']) {
                 $imgCaption = preg_replace('#\\.[^.]+$#', '', $imgCaption);
             }
         } else {
             $imgCaption = '';
         }
     } else {
         if ($imgTitle instanceof Title && $imgTitle->getNamespace() == NS_FILE && !$this->isSpecialPage()) {
             $imgCaption = $GLOBALS['wgParser']->recursiveTagParse($imgCaption);
         }
     }
     // Use image alt as helper for either text
     $imgAlt = $this->params['redirects'] === '' ? $imgCaption : $imgRedirect !== '' ? $imgRedirect : '';
     $ig->add($imgTitle, $imgCaption, $imgAlt);
 }
예제 #6
0
 /**
  * Hook
  *
  * @param $catView
  * @param Title $title
  * @param $row
  * @param $sortkey
  *
  * @return bool
  * @internal param $CategoryViewer
  */
 public static function addCategoryPage(&$catView, &$title, &$row, $sortkey)
 {
     if (in_array($row->page_namespace, array(NS_BLOG_ARTICLE, NS_BLOG_LISTING))) {
         /**
          * initialize CategoryView->blogs array
          */
         if (!isset($catView->blogs)) {
             $catView->blogs = array();
         }
         if (F::app()->checkSkin('wikiamobile')) {
             $catView->blogs[] = ['name' => $title->getText(), 'url' => $title->getLocalUrl()];
             return false;
         }
         /**
          * initialize CategoryView->blogs_start_char array
          */
         if (!isset($catView->blogs_start_char)) {
             $catView->blogs_start_char = array();
         }
         // remove user blog:foo from displayed titles (requested by Angie)
         // "User blog:Homersimpson89/Best Simpsons episode..." -> "Best Simpsons episode..."
         $text = $title->getSubpageText();
         $userName = $title->getBaseText();
         $link = $catView->getSkin()->link($title, $userName . " - " . $text);
         $catView->blogs[] = $row->page_is_redirect ? '<span class="redirect-in-category">' . $link . '</span>' : $link;
         // The blog entries should be sorted on the category page
         // just like other pages
         $catView->blogs_start_char[] = $catView->collation->getFirstLetter($sortkey);
         /**
          * when we return false it won't be displayed as normal category but
          * in "other" categories
          */
         return false;
     }
     return true;
 }
 /**
  * Hook-Handler for 'userCan', prevents foreign access to a users sidebar settings
  * @param Title $oTitle Title object being checked against
  * @param User $oUser Current user object
  * @param string $sAction Action being checked
  * @param bool $bResult Pointer to result returned if hook returns false. If null is returned,	userCan checks are continued by internal code.
  * @return bool false if the user accesses a UserSidebar Title of another user, true in all other cases.
  */
 public function onUserCan($oTitle, $oUser, $sAction, $bResult)
 {
     if ($sAction != 'edit') {
         return true;
     }
     if ($oTitle->getNamespace() != NS_USER || !$oTitle->isSubpage()) {
         return true;
     }
     if (strcasecmp($oTitle->getSubpageText(), 'Sidebar') == 0) {
         $oBasePage = Title::newFromText($oTitle->getBaseText(), NS_USER);
         if (!$oBasePage->equals($oUser->getUserPage())) {
             $bResult = false;
             return false;
         }
     }
     return true;
 }
예제 #8
0
 /**
  * Adds a single image to the gallery.
  * Takes care of automatically adding a caption when none is provided and parsing it's wikitext.
  *
  * @since 1.5.3
  *
  * @param ImageGallery $ig The gallery to add the image to
  * @param Title $imgTitle The title object of the page of the image
  * @param string $imgCaption An optional caption for the image
  */
 protected function addImageToGallery(ImageGallery &$ig, Title $imgTitle, $imgCaption)
 {
     global $wgParser;
     if (empty($imgCaption)) {
         if ($this->m_params['autocaptions']) {
             $imgCaption = $imgTitle->getBaseText();
             if (!$this->m_params['fileextensions']) {
                 $imgCaption = preg_replace('#\\.[^.]+$#', '', $imgCaption);
             }
         } else {
             $imgCaption = '';
         }
     } else {
         $imgCaption = $wgParser->recursiveTagParse($imgCaption);
         // the above call creates getMaxIncludeSize() fatal error on Special Pages
         // below might fix this
         // $imgCaption = $wgParser->transformMsg( $imgCaption, ParserOptions::newFromUser( null ) );
     }
     $ig->add($imgTitle, $imgCaption);
     // Only add real images (bug #5586)
     if ($imgTitle->getNamespace() == NS_IMAGE && !is_null($imgTitle->getDBkey())) {
         $wgParser->mOutput->addImage($imgTitle->getDBkey());
     }
 }
 /**
  * Retrieves parent Title object from provided $title
  * If $title is already a top parent page it returns the same title.
  * @param Title $title
  * @return Title Parent Title
  * @throws MWException
  */
 public function getParentTitle(Title $title)
 {
     return Title::newFromText($title->getBaseText(), NS_TEMPLATE);
 }
	/**
	 * @param $title Title
	 * @return array
	 */
	public static function getUserInfoFromTitle( Title $title ) {
		$user = User::newFromName( $title->getBaseText() );
		// check
		if (!($user instanceof User)) {
			return false;
		}
		if ( !self::isValid($user)) {
			return false;
		}

		return $user;
	}
예제 #11
0
 /**
  * Hook to cook the personal menu Seizam style.
  * 
  * @param Array $personal_urls
  * @param Title $title
  * @return Boolean True (=continue hook)
  * 
  */
 public static function PersonalUrls(&$personal_urls, &$title)
 {
     // Remove Preferences
     /* if (isset($personal_urls['preferences']))
        unset ($personal_urls['preferences']); */
     // Remove Contributions
     if (isset($personal_urls['mycontris'])) {
         unset($personal_urls['mycontris']);
     }
     $beginning = array();
     if (isset($personal_urls['userpage'])) {
         $beginning['userpage'] = $personal_urls['userpage'];
         unset($personal_urls['userpage']);
     }
     if (isset($personal_urls['mytalk'])) {
         $beginning['mytalk'] = $personal_urls['mytalk'];
         unset($personal_urls['mytalk']);
     }
     if (isset($personal_urls['logout'])) {
         // Add MySeizam
         $href = Title::makeTitle(NS_SPECIAL, SpecialMySeizam::TITLE_NAME)->getCanonicalURL();
         $middle['myseizam'] = array('text' => wfMsg('sz-myseizam'), 'href' => $href, 'active' => $title->getBaseText() == SpecialMySeizam::TITLE_NAME);
         // Add MyWikiPlaces
         $href = Title::makeTitle(NS_SPECIAL, SpecialWikiplaces::TITLE_NAME)->getCanonicalURL();
         $middle['wikiplaces'] = array('text' => wfMsg('wikiplaces'), 'href' => $href, 'active' => $title->getBaseText() == SpecialWikiplaces::TITLE_NAME);
         $personal_urls = array_merge($middle, $personal_urls);
     }
     $personal_urls = array_merge($beginning, $personal_urls);
     if (isset($personal_urls['logout'])) {
         unset($personal_urls['logout']);
     }
     return true;
 }