*/ class WikipediaBBCode implements BBCode { protected $url = 'http://%s.wikipedia.org/wiki/%s'; protected $defaultlang = 'en'; /** * @see BBCode::getParsedTag() */ public function getParsedTag($openingTag, $content, $closingTag, BBCodeParser $parser) { $lang = WCF::getLanguage()->get('wcf.bbcode.wikipedia.prefix'); $lang = $lang == 'wcf.bbcode.wikipedia.prefix' ? $this->defaultlang : $lang; $lang = isset($openingTag['attributes'][0]) ? $openingTag['attributes'][0] : $lang; $url = $content; // remove base if(preg_match('/.+\.wikipedia\.org\/wiki\/(.+)$/', $content, $hits)) { $text = $hits[1]; $text = urldecode($text); } else { $text = $url; $url = str_replace(' ', '_', $url); $url = urlencode($url); $url = ucfirst($url); $url = sprintf($this->url, $lang, $url); } $text = str_replace('_', ' ', $text); if ($parser->getOutputType() == 'text/html') { return ''.$text.''; } else if ($parser->getOutputType() == 'text/plain') { return $url; } } } ?>