public function testHandle()
 {
     $parser = new Parser();
     $parser->startExternalParse(null, new ParserOptions(), Parser::OT_HTML);
     NoLangLinkHandler::handle($parser, '*');
     $actual = NoLangLinkHandler::getNoExternalLangLinks($parser->getOutput());
     $this->assertEquals(array('*'), $actual);
 }
 protected function makeParserOutput(array $langLinks, array $noExternalLangLinks = array())
 {
     $out = new ParserOutput();
     NoLangLinkHandler::setNoExternalLangLinks($out, $noExternalLangLinks);
     foreach ($langLinks as $lang => $link) {
         $out->addLanguageLink("{$lang}:{$link}");
     }
     return $out;
 }
 /**
  * Add output page property if repo links are suppressed, and property for item id
  *
  * @param OutputPage &$out
  * @param ParserOutput $parserOutput
  *
  * @return bool
  */
 public function doOutputPageParserOutput(OutputPage &$out, ParserOutput $parserOutput)
 {
     if (!$this->namespaceChecker->isWikibaseEnabled($out->getTitle()->getNamespace())) {
         // shorten out
         return true;
     }
     $noExternalLangLinks = NoLangLinkHandler::getNoExternalLangLinks($parserOutput);
     if (!empty($noExternalLangLinks)) {
         $out->setProperty('noexternallanglinks', $noExternalLangLinks);
     }
     $itemId = $parserOutput->getProperty('wikibase_item');
     if ($itemId !== false) {
         $out->setProperty('wikibase_item', $itemId);
     }
     $otherProjects = $parserOutput->getExtensionData('wikibase-otherprojects-sidebar');
     if ($otherProjects !== null) {
         $out->setProperty('wikibase-otherprojects-sidebar', $otherProjects);
     }
     $badges = $parserOutput->getExtensionData('wikibase_badges');
     if ($badges !== null) {
         $out->setProperty('wikibase_badges', $badges);
     }
     return true;
 }
 /**
  * Get the noexternallanglinks page property from the ParserOutput,
  * which is set by the {{#noexternallanglinks}} parser function.
  *
  * @see NoLangLinkHandler::getNoExternalLangLinks
  *
  * @param ParserOutput $out
  *
  * @return string[] A list of language codes, identifying which repository links to ignore.
  *         Empty if {{#noexternallanglinks}} was not used on the page.
  */
 public function getNoExternalLangLinks(ParserOutput $out)
 {
     return NoLangLinkHandler::getNoExternalLangLinks($out);
 }
 /**
  * Apply the magic word.
  */
 public static function onParserGetVariableValueSwitch(Parser &$parser, &$cache, &$magicWordId, &$ret)
 {
     if ($magicWordId === 'noexternallanglinks') {
         NoLangLinkHandler::handle($parser, '*');
     } elseif ($magicWordId === 'wbreponame') {
         // @todo factor out, with tests
         $wikibaseClient = WikibaseClient::getDefaultInstance();
         $settings = $wikibaseClient->getSettings();
         $repoSiteName = $settings->getSetting('repoSiteName');
         $message = new Message($repoSiteName);
         if ($message->exists()) {
             $lang = $parser->getTargetLanguage();
             $ret = $message->inLanguage($lang)->parse();
         } else {
             $ret = $repoSiteName;
         }
     }
     return true;
 }