1 <?php rcs_id('$Id: interwiki.php,v 1.10 2001-12-07 05:27:20 carstenklapp Exp $');
3 function generate_interwikimap_and_regexp()
5 global $interwikimap_file, $InterWikiLinkRegexp, $interwikimap;
7 $intermap_data = file(INTERWIKI_MAP_FILE, 1);
9 for ($i=0; $i<count($intermap_data); $i++)
11 list( $wiki, $inter_url ) = split(' ', chop($intermap_data[$i]));
12 $interwikimap[$wiki] = $inter_url;
14 $wikiname_regexp .= "|";
15 $wikiname_regexp .= $wiki;
18 $InterWikiLinkRegexp = "($wikiname_regexp)";
21 generate_interwikimap_and_regexp();
23 function LinkInterWikiLink($link, $linktext='')
27 list( $wiki, $page ) = split( ":", $link, 2 );
29 $url = $interwikimap[$wiki];
31 // Urlencode page only if it's a query arg.
32 // FIXME: this is a somewhat broken heuristic.
33 $page_enc = strstr($url, '?') ? rawurlencode($page) : $page;
35 if (strstr($url, '%s'))
36 $url = sprintf($url, $page_enc);
41 $linktext = htmlspecialchars($linktext);
42 $class = 'named-interwiki';
45 $linktext = ( htmlspecialchars("$wiki:")
46 . QElement('span', array('class' => 'wikipage'), $page) );
50 $linkproto='interwiki';
51 $ICONS = &$GLOBALS['URL_LINK_ICONS'];
53 $linkimg = isset($ICONS[$linkproto]) ? $ICONS[$linkproto] : $ICONS['*'];
54 if (!empty($linkimg)) {
55 $imgtag = Element('img', array('src' => DataURL($linkimg),
57 'class' => 'linkicon'));
58 $linktext = $imgtag . $linktext;
61 return Element('a', array('href' => $url,
66 // Link InterWiki links
67 // These can be protected by a '!' like Wiki words.
68 function wtt_interwikilinks($match, &$trfrm)
71 return htmlspecialchars(substr($match,1));
72 return LinkInterWikiLink($match);
80 // c-hanging-comment-ender-p: nil
81 // indent-tabs-mode: nil