OSDN Git Service

1.4.5_1
[pukiwiki/pukiwiki.git] / plugin / lookup.inc.php
1 <?php
2 // PukiWiki - Yet another WikiWikiWeb clone.
3 // $Id: lookup.inc.php,v 1.16 2005/01/30 10:55:53 henoheno Exp $
4 //
5 // InterWiki lookup plugin
6
7 define('PLUGIN_LOOKUP_USAGE', '#lookup(interwikiname[,button_name[,default]])');
8 function plugin_lookup_convert()
9 {
10         global $script, $vars;
11
12         $num = func_num_args();
13         if ($num == 0 || $num > 3) return PLUGIN_LOOKUP_USAGE;
14
15         $args = func_get_args();
16         $interwiki = htmlspecialchars(trim($args[0]));
17         $button    = isset($args[1]) ? trim($args[1]) : '';
18         $button    = ($button != '') ? htmlspecialchars($button) : 'lookup';
19         $default   = ($num > 2) ? htmlspecialchars(trim($args[2])) : '';
20         $s_page    = htmlspecialchars($vars['page']);
21
22         $ret = <<<EOD
23 <form action="$script" method="post">
24  <div>
25   <input type="hidden" name="plugin" value="lookup" />
26   <input type="hidden" name="refer"  value="$s_page" />
27   <input type="hidden" name="inter"  value="$interwiki" />
28   $interwiki:
29   <input type="text" name="page" size="30" value="$default" />
30   <input type="submit" value="$button" />
31  </div>
32 </form>
33 EOD;
34         return $ret;
35 }
36
37 function plugin_lookup_action()
38 {
39         global $post; // Deny GET method to avlid GET loop
40
41         $page  = isset($post['page'])  ? $post['page']  : '';
42         $inter = isset($post['inter']) ? $post['inter'] : '';
43         if ($page == '') return FALSE; // Do nothing
44         if ($inter == '') return array(msg=>'Invalid access', body=>'');
45
46         $url = get_interwiki_url($inter, $page);
47         if ($url === FALSE) {
48                 $msg = sprintf('InterWikiName "%s" not found', $inter);
49                 $msg = htmlspecialchars($msg);
50                 return array(msg=>'Not found', body=>$msg);
51         }
52
53         pkwk_headers_sent();
54         header('Location: ' . $url); // Publish as GET method
55         exit;
56 }
57 ?>