X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=plugin.php;h=d922fc7886f1ddadd67348bba20d3d8a04a11e5f;hb=b07ffe29767b92c6711085c5623262391acf4f2b;hp=2bb1849a0209acddf586b99a1baa3cd0d06d8127;hpb=686561d8eb47507e1c895e7f66cc7b58b17416e5;p=pukiwiki%2Fpukiwiki.git diff --git a/plugin.php b/plugin.php index 2bb1849..d922fc7 100644 --- a/plugin.php +++ b/plugin.php @@ -1,96 +1,127 @@ -$val) { - global $$name; - if(!isset($$name)) { - $$name = $val; - } - } + foreach ($messages as $name=>$val) + { + global $$name; + + if(!isset($$name)) + { + $$name = $val; + } + } +} + +//¥×¥é¥°¥¤¥ó¤¬Â¸ºß¤¹¤ë¤« +function exist_plugin($name) +{ + if (preg_match('/^\w{1,64}$/',$name) + and file_exists(PLUGIN_DIR.$name.'.inc.php')) + { + require_once(PLUGIN_DIR.$name.'.inc.php'); + return TRUE; + } + return FALSE; } //¥×¥é¥°¥¤¥ó(action)¤¬Â¸ºß¤¹¤ë¤« -function exist_plugin_action($name) { - if(!file_exists(PLUGIN_DIR.$name.".inc.php")) - { - return false; - } - else - { - require_once(PLUGIN_DIR.$name.".inc.php"); - if(!function_exists("plugin_".$name."_action")) +function exist_plugin_action($name) +{ + if (!exist_plugin($name)) { - return false; + return FALSE; } - } - return true; + return function_exists('plugin_'.$name.'_action'); } //¥×¥é¥°¥¤¥ó(convert)¤¬Â¸ºß¤¹¤ë¤« -function exist_plugin_convert($name) { - if(!file_exists(PLUGIN_DIR.$name.".inc.php")) - { - return false; - } - else - { - require_once(PLUGIN_DIR.$name.".inc.php"); - if(!function_exists("plugin_".$name."_convert")) +function exist_plugin_convert($name) +{ + if (!exist_plugin($name)) { - return false; + return FALSE; } - } - return true; + return function_exists('plugin_'.$name.'_convert'); +} + +//¥×¥é¥°¥¤¥ó(inline)¤¬Â¸ºß¤¹¤ë¤« +function exist_plugin_inline($name) +{ + if (!exist_plugin($name)) + { + return FALSE; + } + return function_exists('plugin_'.$name.'_inline'); } //¥×¥é¥°¥¤¥ó¤Î½é´ü²½¤ò¼Â¹Ô -function do_plugin_init($name) { - $funcname = "plugin_".$name."_init"; - if(!function_exists($funcname)) - { - return false; - } - - $func_check = "_funccheck_".$funcname; - global $$func_check; - if($$func_check) - { - return false; - } - $$func_check = true; - return @call_user_func($funcname); +function do_plugin_init($name) +{ + $funcname = 'plugin_'.$name.'_init'; + if (!function_exists($funcname)) { + return FALSE; + } + + $func_check = '_funccheck_'.$funcname; + global $$func_check; + + if ($$func_check) + { + return TRUE; + } + $$func_check = TRUE; + return @call_user_func($funcname); } //¥×¥é¥°¥¤¥ó(action)¤ò¼Â¹Ô -function do_plugin_action($name) { - if(!exist_plugin_action($name)) { - return array(); - } - do_plugin_init($name); - return @call_user_func("plugin_".$name."_action"); +function do_plugin_action($name) +{ + if(!exist_plugin_action($name)) + { + return array(); + } + + do_plugin_init($name); + return @call_user_func('plugin_'.$name.'_action'); } //¥×¥é¥°¥¤¥ó(convert)¤ò¼Â¹Ô -function do_plugin_convert($plugin_name,$plugin_args) +function do_plugin_convert($name,$args) { - $invalid_return = "#${plugin_name}(${plugin_args})"; - - if($plugin_args !== "") - $aryargs = explode(",",$plugin_args); - else - $aryargs = array(); + $aryargs = ($args !== '') ? explode(',',$args) : array(); - do_plugin_init($plugin_name); - $retvar = call_user_func_array("plugin_${plugin_name}_convert",$aryargs); - - if($retvar === FALSE) return $invalid_return; - else return $retvar; + do_plugin_init($name); + $retvar = call_user_func_array('plugin_'.$name.'_convert',$aryargs); + + if($retvar === FALSE) + { + return htmlspecialchars('#'.$name.($args ? "($args)" : '')); + } + + return $retvar; } +//¥×¥é¥°¥¤¥ó(inline)¤ò¼Â¹Ô +function do_plugin_inline($name,$args,$body) +{ + $aryargs = ($args !== '') ? explode(',',$args) : array(); + $aryargs[] =& $body; -?> \ No newline at end of file + do_plugin_init($name); + $retvar = call_user_func_array('plugin_'.$name.'_inline',$aryargs); + + if($retvar === FALSE) + { + return htmlspecialchars("&${name}" . ($args ? "($args)" : '') . ';'); + } + + return $retvar; +} +?>