OSDN Git Service

mb_string関数の存在チェックを削除
[pukiwiki/pukiwiki.git] / plugin / interwiki.inc.php
1 <?php
2 /////////////////////////////////////////////////
3 // PukiWiki - Yet another WikiWikiWeb clone.
4 //
5 // $Id: interwiki.inc.php,v 1.5 2003/05/16 05:53:38 arino Exp $
6 //
7 // InterWikiName¤ÎȽÊ̤ȥڡ¼¥¸¤Îɽ¼¨
8
9 function plugin_interwiki_action()
10 {
11         global $script,$vars,$interwiki,$WikiName,$InterWikiName;
12         global $_title_invalidiwn,$_msg_invalidiwn;
13         
14         $retvars = array();
15         
16         if (!preg_match("/^$InterWikiName$/",$vars['page'],$match))
17         {
18                 $retvars['msg'] = $_title_invalidiwn;
19                 $retvars['body'] = str_replace(
20                         array('$1','$2'),
21                         array(htmlspecialchars($name),make_pagelink('InterWikiName')),
22                         $_msg_invalidiwn
23                 );
24                 return $retvars;
25         }
26         $name = $match[2];
27         $param = $match[3];
28         
29         $url = $opt = '';
30         foreach (get_source($interwiki) as $line)
31         {
32                 if (preg_match('/\[((?:(?:https?|ftp|news):\/\/|\.\.?\/)[!~*\'();\/?:\@&=+\$,%#\w.-]*)\s([^\]]+)\]\s?([^\s]*)/',$line,$match)
33                         and $match[2] == $name)
34                 {
35                         $url = $match[1];
36                         $opt = $match[3];
37                         
38                         if (!is_url($url))
39                         {
40 //                              $url = substr($script,0,strrpos($script,'/')).substr($url,strspn($url,'.'));
41                                 $q_name = preg_quote(basename($_SERVER['SCRIPT_NAME']));
42                                 $url = preg_replace("/$q_name$/",'',$script).$match[1];
43                         }
44                         break;
45                 }
46         }
47         
48         if ($url == '')
49         {
50                 $retvars['msg'] = $_title_invalidiwn;
51                 $retvars['body'] = str_replace(
52                         array('$1','$2'),
53                         array(htmlspecialchars($name),make_pagelink('InterWikiName')),
54                         $_msg_invalidiwn
55                 );
56                 return $retvars;
57         }
58         
59         // Ê¸»ú¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°
60         if ($opt == 'yw')
61         {
62                 // YukiWiki·Ï
63                 if (!preg_match("/$WikiName/",$param))
64                 {
65                         $param = '[['.mb_convert_encoding($param,'SJIS',SOURCE_ENCODING).']]';
66                 }
67         }
68         else if ($opt == 'moin')
69         {
70                 // moin·Ï
71                 $param = str_replace('%','_',rawurlencode($param));
72         }
73         else if ($opt == '' or $opt == 'std')
74         {
75                 // ÆâÉôʸ»ú¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤Î¤Þ¤ÞURL¥¨¥ó¥³¡¼¥É
76                 $param = rawurlencode($param);
77         }
78         else if ($opt == 'asis' or $opt == 'raw')
79         {
80                 // URL¥¨¥ó¥³¡¼¥É¤·¤Ê¤¤
81                 // $match[3] = $match[3];
82         }
83         else if ($opt != '')
84         {
85                 // ¥¨¥¤¥ê¥¢¥¹¤ÎÊÑ´¹
86                 if ($opt == 'sjis')
87                 {
88                         $opt = 'SJIS';
89                 }
90                 else if ($opt == 'euc')
91                 {
92                         $opt = 'EUC-JP';
93                 }
94                 else if ($opt == 'utf8')
95                 {
96                         $opt = 'UTF-8';
97                 }
98
99                 // »ØÄꤵ¤ì¤¿Ê¸»ú¥³¡¼¥É¤Ø¥¨¥ó¥³¡¼¥É¤·¤ÆURL¥¨¥ó¥³¡¼¥É
100                 $param = rawurlencode(mb_convert_encoding($param,$opt,'auto'));
101         }
102         
103         if (strpos($url,'$1') !== FALSE)
104         {
105                 $url = str_replace('$1',$param,$url);
106         }
107         else
108         {
109                 $url .= $param;
110         }
111         
112         header("Location: $url");
113         die();
114 }
115 ?>