OSDN Git Service

BugTrack/2420 AutoTicketLink - Improve regex and JSON encode
[pukiwiki/pukiwiki.git] / plugin / lookup.inc.php
1 <?php
2 // PukiWiki - Yet another WikiWikiWeb clone.
3 // lookup.inc.php
4 // Copyright
5 //   2002-2017 PukiWiki Development Team
6 //   2001-2002 Originally written by yu-ji
7 // License: GPL v2 or (at your option) any later version
8 //
9 // InterWiki lookup plugin
10
11 define('PLUGIN_LOOKUP_USAGE', '#lookup(interwikiname[,button_name[,default]])');
12
13 function plugin_lookup_convert()
14 {
15         global $vars;
16         static $id = 0;
17
18         $num = func_num_args();
19         if ($num == 0 || $num > 3) return PLUGIN_LOOKUP_USAGE;
20
21         $args = func_get_args();
22         $interwiki = htmlsc(trim($args[0]));
23         $button    = isset($args[1]) ? trim($args[1])         : '';
24         $button    = ($button != '') ? htmlsc($button)        : 'lookup';
25         $default   = ($num > 2)      ? htmlsc(trim($args[2])) : '';
26         $s_page    = htmlsc($vars['page']);
27         ++$id;
28
29         $script = get_base_uri();
30         $ret = <<<EOD
31 <form action="$script" method="post">
32  <div>
33   <input type="hidden" name="plugin" value="lookup" />
34   <input type="hidden" name="refer"  value="$s_page" />
35   <input type="hidden" name="inter"  value="$interwiki" />
36   <label for="_p_lookup_$id">$interwiki:</label>
37   <input type="text" name="page" id="_p_lookup_$id" size="30" value="$default" />
38   <input type="submit" value="$button" />
39  </div>
40 </form>
41 EOD;
42         return $ret;
43 }
44
45 function plugin_lookup_action()
46 {
47         global $post; // Deny GET method to avlid GET loop
48
49         $page  = isset($post['page'])  ? $post['page']  : '';
50         $inter = isset($post['inter']) ? $post['inter'] : '';
51         if ($page == '') return FALSE; // Do nothing
52         if ($inter == '') return array('msg'=>'Invalid access', 'body'=>'');
53
54         $url = get_interwiki_url($inter, $page);
55         if ($url === FALSE) {
56                 $msg = sprintf('InterWikiName "%s" not found', $inter);
57                 $msg = htmlsc($msg);
58                 return array('msg'=>'Not found', 'body'=>$msg);
59         }
60
61         pkwk_headers_sent();
62         header('Location: ' . $url); // Publish as GET method
63         exit;
64 }