2 /////////////////////////////////////////////////
3 // PukiWiki - Yet another WikiWikiWeb clone.
5 // $Id: plugin.php,v 1.8 2003/07/27 13:51:36 arino Exp $
8 // ¥×¥é¥°¥¤¥óÍѤË̤ÄêµÁ¤ÎÊÑ¿ô¤òÀßÄê
9 function set_plugin_messages($messages)
11 foreach ($messages as $name=>$val)
22 //¥×¥é¥°¥¤¥ó¤¬Â¸ºß¤¹¤ë¤«
23 function exist_plugin($name)
25 $name = strtolower($name); //Ryuji_edit(2003-03-18) add Âçʸ»ú¤È¾®Ê¸»ú¤ò¶èÊ̤·¤Ê¤¤¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥àÂкö
26 if (preg_match('/^\w{1,64}$/',$name)
27 and file_exists(PLUGIN_DIR.$name.'.inc.php'))
29 require_once(PLUGIN_DIR.$name.'.inc.php');
35 //¥×¥é¥°¥¤¥ó(action)¤¬Â¸ºß¤¹¤ë¤«
36 function exist_plugin_action($name)
38 if (!exist_plugin($name))
42 return function_exists('plugin_'.$name.'_action');
45 //¥×¥é¥°¥¤¥ó(convert)¤¬Â¸ºß¤¹¤ë¤«
46 function exist_plugin_convert($name)
48 if (!exist_plugin($name))
52 return function_exists('plugin_'.$name.'_convert');
55 //¥×¥é¥°¥¤¥ó(inline)¤¬Â¸ºß¤¹¤ë¤«
56 function exist_plugin_inline($name)
58 if (!exist_plugin($name))
62 return function_exists('plugin_'.$name.'_inline');
65 //¥×¥é¥°¥¤¥ó¤Î½é´ü²½¤ò¼Â¹Ô
66 function do_plugin_init($name)
68 static $check = array();
70 if (array_key_exists($name,$check))
75 $func = 'plugin_'.$name.'_init';
76 if ($check[$name] = function_exists($func))
78 @call_user_func($func);
84 //¥×¥é¥°¥¤¥ó(action)¤ò¼Â¹Ô
85 function do_plugin_action($name)
87 if (!exist_plugin_action($name))
92 do_plugin_init($name);
93 $retvar = call_user_func('plugin_'.$name.'_action');
95 // ʸ»ú¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¸¡½ÐÍÑ hidden ¥Õ¥£¡¼¥ë¥É¤òÁÞÆþ¤¹¤ë
96 return preg_replace('/(<form[^>]*>)/',"$1\n<div><input type=\"hidden\" name=\"encode_hint\" value=\"¤×\" /></div>",$retvar);
99 //¥×¥é¥°¥¤¥ó(convert)¤ò¼Â¹Ô
100 function do_plugin_convert($name,$args='')
102 $aryargs = ($args !== '') ? explode(',',$args) : array();
104 do_plugin_init($name);
105 $retvar = call_user_func_array('plugin_'.$name.'_convert',$aryargs);
107 if ($retvar === FALSE)
109 return htmlspecialchars('#'.$name.($args ? "($args)" : ''));
112 // ʸ»ú¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¸¡½ÐÍÑ hidden ¥Õ¥£¡¼¥ë¥É¤òÁÞÆþ¤¹¤ë
113 return preg_replace('/(<form[^>]*>)/',"$1\n<div><input type=\"hidden\" name=\"encode_hint\" value=\"¤×\" /></div>",$retvar);
116 //¥×¥é¥°¥¤¥ó(inline)¤ò¼Â¹Ô
117 function do_plugin_inline($name,$args,$body)
119 $aryargs = ($args !== '') ? explode(',',$args) : array();
122 do_plugin_init($name);
123 $retvar = call_user_func_array('plugin_'.$name.'_inline',$aryargs);
125 if($retvar === FALSE)
127 return htmlspecialchars("&${name}" . ($args ? "($args)" : '') . ';');