<?php
require_once(WCF_DIR.'lib/data/message/bbcode/BBCodeParser.class.php');
require_once(WCF_DIR.'lib/data/message/bbcode/BBCode.class.php');

/**
 * BBCode for [wikipedia] Tag
 *
 * @author      Torben Brodt
 * @package     com.woltlab.wcf.data.message.bbcode.wikipedia
 * @license	GNU Lesser General Public License <http://opensource.org/licenses/lgpl-3.0.html>
 */
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 '<a href="'.$url.'" style="background-image:url(\''.RELATIVE_WCF_DIR.'icon/wysiwyg/wikipediaM.png\');background-repeat:no-repeat;background-position:left;padding-left:25px">'.$text.'</a>';
                }
                else if ($parser->getOutputType() == 'text/plain') {
                        return $url;
                }
        }
}
?>
