示例#1
0
 /**
  * Make output to be returned from the references() function
  *
  * @param $group
  *
  * @return string XHTML ready for output
  */
 function referencesFormat($group)
 {
     if (count($this->mRefs) == 0 || empty($this->mRefs[$group])) {
         return '';
     }
     wfProfileIn(__METHOD__);
     wfProfileIn(__METHOD__ . '-entries');
     $ent = array();
     foreach ($this->mRefs[$group] as $k => $v) {
         $ent[] = $this->referencesFormatEntry($k, $v);
     }
     $prefix = wfMessage('cite_references_prefix')->inContentLanguage()->plain();
     $suffix = wfMessage('cite_references_suffix')->inContentLanguage()->plain();
     $content = implode("\n", $ent);
     // Prepare the parser input. We add new lines between the pieces to avoid a confused tidy (bug 13073)
     $parserInput = $prefix . "\n" . $content . "\n" . $suffix;
     // Let's try to cache it.
     global $wgMemc;
     $cacheKey = wfMemcKey('citeref', md5($parserInput), $this->mParser->Title()->getArticleID());
     wfProfileOut(__METHOD__ . '-entries');
     global $wgCiteCacheReferences;
     $data = false;
     if ($wgCiteCacheReferences) {
         wfProfileIn(__METHOD__ . '-cache-get');
         $data = $wgMemc->get($cacheKey);
         wfProfileOut(__METHOD__ . '-cache-get');
     }
     if (!$data || !$this->mParser->isValidHalfParsedText($data)) {
         wfProfileIn(__METHOD__ . '-parse');
         // Live hack: parse() adds two newlines on WM, can't reproduce it locally -ævar
         $ret = rtrim($this->parse($parserInput), "\n");
         if ($wgCiteCacheReferences) {
             $serData = $this->mParser->serializeHalfParsedText($ret);
             $wgMemc->set($cacheKey, $serData, 86400);
         }
         wfProfileOut(__METHOD__ . '-parse');
     } else {
         $ret = $this->mParser->unserializeHalfParsedText($data);
     }
     wfProfileOut(__METHOD__);
     // done, clean up so we can reuse the group
     unset($this->mRefs[$group]);
     unset($this->mGroupCnt[$group]);
     return $ret;
 }
示例#2
0
 public function execute()
 {
     global $wgUser, $egMapsDefaultGeoService, $egMapsDistanceDecimals, $egMapsDistanceUnit;
     $params = $this->extractRequestParams();
     $geoCoordinateParser = new DataValues\Geo\Parsers\GeoCoordinateParser();
     $results = array();
     if (Maps\Geocoders::canGeocode()) {
         $location = Maps\Geocoders::attemptToGeocode($params['location'], $egMapsDefaultGeoService);
     } else {
         $location = $geoCoordinateParser->parse($params['location']);
     }
     $query = "{{#ask:[[Bundesland::+]][[aktiv::wahr]][[Lage::+]]|?Lage|?=Name|mainlabel=-|format=array|link=none|headers=plain|headersep==|sep=<BV>}}";
     $mainpage = Title::newMainPage();
     $options = new ParserOptions();
     $localparser = new Parser();
     $localparser->Title($mainpage);
     $localparser->Options($options);
     $localparser->clearState();
     $bedarfsverkehre = $localparser->RecursiveTagParse($query);
     $bedarfsverkehre = explode('&lt;BV&gt;', $bedarfsverkehre);
     foreach ($bedarfsverkehre as $key => $props) {
         $props = explode('&lt;PROP&gt;', $props);
         $bedarfsverkehre[$key] = array();
         foreach ($props as $prop) {
             $prop = explode('=', $prop);
             $bedarfsverkehre[$key][$prop[0]] = $prop[1];
         }
         $bvlocation = $geoCoordinateParser->parse($bedarfsverkehre[$key]['Lage']);
         if ($location && $bvlocation) {
             $bedarfsverkehre[$key]['Distanz'] = MapsGeoFunctions::calculateDistance($location, $bvlocation);
         } else {
             // The locations should be valid when this method gets called.
             throw new MWException('Attempt to find the distance between locations of at least one is invalid' . $bedarfsverkehre[$key]['Name']);
         }
     }
     usort($bedarfsverkehre, array("ApiBVdistances", "distanceSort"));
     $results = array_slice($bedarfsverkehre, 0, 10);
     $this->getResult()->addValue(null, 'results', $results);
 }
示例#3
0
 function parseArticleText($text)
 {
     if ($text === '') {
         return '';
     } else {
         if ($this->mExpandTemplates) {
             global $wgTitle;
             $parser = new Parser();
             $parser->Options(new ParserOptions());
             // We don't want this to be user-specific
             $parser->Title($wgTitle);
             $parser->OutputType(OT_HTML);
             return $parser->replaceVariables($text);
         } else {
             return $text;
         }
     }
 }
示例#4
0
 /**
  * Render navigations elements that renderNavigation hasn't dealt with
  *
  * @param $buttons array
  * @param $customItems array
  */
 private function renderCustomNavigation(&$buttons, &$customItems)
 {
     /* TODO: check for unintended consequences, there are probably more elegant ways to do this... */
     $options = new ParserOptions();
     $localParser = new Parser();
     $localParser->Title($this->getSkin()->getTitle());
     $localParser->Options($options);
     $localParser->clearState();
     if (count($customItems) !== 0) {
         $newButtons = TweekiHooks::parseButtons(implode(chr(10), $customItems), $localParser, false);
         $buttons = array_merge($buttons, $newButtons);
         $customItems = array();
     }
 }