OSDN Git Service

database operation cleanup. (tested on MySQL3.23.55/Windows2000 and PostgreSQL7.2...
[pukiwiki/pukiwiki.git] / plugin.php
1 <?php
2 /////////////////////////////////////////////////
3 // PukiWiki - Yet another WikiWikiWeb clone.
4 //
5 // $Id: plugin.php,v 1.5 2003/02/28 06:18:39 panda Exp $
6 //
7
8 // ¥×¥é¥°¥¤¥óÍѤË̤ÄêµÁ¤ÎÊÑ¿ô¤òÀßÄê
9 function set_plugin_messages($messages)
10 {
11         foreach ($messages as $name=>$val)
12         {
13                 global $$name;
14                 
15                 if(!isset($$name))
16                 {
17                         $$name = $val;
18                 }
19         }
20 }
21
22 //¥×¥é¥°¥¤¥ó¤¬Â¸ºß¤¹¤ë¤«
23 function exist_plugin($name)
24 {
25         if (preg_match('/^\w{1,64}$/',$name)
26                 and file_exists(PLUGIN_DIR.$name.'.inc.php'))
27         {
28                 require_once(PLUGIN_DIR.$name.'.inc.php');
29                 return TRUE;
30         }
31         return FALSE;
32 }
33
34 //¥×¥é¥°¥¤¥ó(action)¤¬Â¸ºß¤¹¤ë¤«
35 function exist_plugin_action($name)
36 {
37         if (!exist_plugin($name))
38         {
39                 return FALSE;
40         }
41         return function_exists('plugin_'.$name.'_action');
42 }
43
44 //¥×¥é¥°¥¤¥ó(convert)¤¬Â¸ºß¤¹¤ë¤«
45 function exist_plugin_convert($name)
46 {
47         if (!exist_plugin($name))
48         {
49                 return FALSE;
50         }
51         return function_exists('plugin_'.$name.'_convert');
52 }
53
54 //¥×¥é¥°¥¤¥ó(inline)¤¬Â¸ºß¤¹¤ë¤«
55 function exist_plugin_inline($name)
56 {
57         if (!exist_plugin($name))
58         {
59                 return FALSE;
60         }
61         return function_exists('plugin_'.$name.'_inline');
62 }
63
64 //¥×¥é¥°¥¤¥ó¤Î½é´ü²½¤ò¼Â¹Ô
65 function do_plugin_init($name)
66 {
67         $funcname = 'plugin_'.$name.'_init';
68         if (!function_exists($funcname)) {
69                 return FALSE;
70         }
71         
72         $func_check = '_funccheck_'.$funcname;
73         global $$func_check;
74         
75         if ($$func_check)
76         {
77                 return TRUE;
78         }
79         $$func_check = TRUE;
80         return @call_user_func($funcname);
81 }
82
83 //¥×¥é¥°¥¤¥ó(action)¤ò¼Â¹Ô
84 function do_plugin_action($name)
85 {
86         if(!exist_plugin_action($name))
87         {
88                 return array();
89         }
90         
91         do_plugin_init($name);
92         return @call_user_func('plugin_'.$name.'_action');
93 }
94
95 //¥×¥é¥°¥¤¥ó(convert)¤ò¼Â¹Ô
96 function do_plugin_convert($name,$args)
97 {
98         $aryargs = ($args !== '') ? explode(',',$args) : array();
99
100         do_plugin_init($name);
101         $retvar = call_user_func_array('plugin_'.$name.'_convert',$aryargs);
102         
103         if($retvar === FALSE)
104         {
105                 return htmlspecialchars('#'.$name.($args ? "($args)" : ''));
106         }
107         
108         return $retvar;
109 }
110
111 //¥×¥é¥°¥¤¥ó(inline)¤ò¼Â¹Ô
112 function do_plugin_inline($name,$args,$body)
113 {
114         $aryargs = ($args !== '') ? explode(',',$args) : array();
115         $aryargs[] =& $body;
116
117         do_plugin_init($name);
118         $retvar = call_user_func_array('plugin_'.$name.'_inline',$aryargs);
119         
120         if($retvar === FALSE)
121         {
122                 return htmlspecialchars("&${name}" . ($args ? "($args)" : '') . ';');
123         }
124         
125         return $retvar;
126 }
127 ?>