]> CyberLeo.Net >> Repos - SourceForge/phpwiki.git/blob - lib/interwiki.php
Jeff's hacks II.
[SourceForge/phpwiki.git] / lib / interwiki.php
1 <?php rcs_id('$Id: interwiki.php,v 1.6 2001-09-18 19:16:23 dairiki Exp $');
2
3 function generate_interwikimap_and_regexp()
4 {
5    global $interwikimap_file, $InterWikiLinkRegexp, $interwikimap;
6
7    $intermap_data = file(INTERWIKI_MAP_FILE, 1);
8    $wikiname_regexp = "";
9    for ($i=0; $i<count($intermap_data); $i++)
10    {
11       list( $wiki, $inter_url ) = split(' ', chop($intermap_data[$i]));
12       $interwikimap[$wiki] = $inter_url;
13       if ($wikiname_regexp)
14          $wikiname_regexp .= "|";
15       $wikiname_regexp .= $wiki;
16    }
17
18    $InterWikiLinkRegexp = "($wikiname_regexp)";
19 }
20
21 generate_interwikimap_and_regexp();
22
23 function LinkInterWikiLink($link, $linktext='')
24 {
25    global $interwikimap;
26
27    list( $wiki, $page ) = split( ":", $link, 2 );
28
29    $url = $interwikimap[$wiki];
30
31    // Urlencode page only if it's a query arg.
32    if (strstr($url, '?'))
33       $url .= rawurlencode($page);
34    else
35       $url .= $page;
36
37    if ($linktext) {
38       $linktext = htmlspecialchars($linktext);
39       $class = 'named-interwiki';
40    }
41    else {
42       $linktext = ( htmlspecialchars("$wiki:")
43                     . QElement('span', array('class' => 'wikipage'), $page) );
44       $class = 'interwiki';
45    }
46    
47    return Element('a', array('href' => $url,
48                              'class' => $class),
49                   $linktext);
50 }
51
52 // Link InterWiki links
53 // These can be protected by a '!' like Wiki words.
54 function wtt_interwikilinks($match, &$trfrm)
55 {
56    if ($match[0] == "!")
57       return htmlspecialchars(substr($match,1));
58    return LinkInterWikiLink($match);
59 }
60
61 // For emacs users
62 // Local Variables:
63 // mode: php
64 // c-file-style: "ellemtel"
65 // End:   
66 ?>