-<?
-// PukiWiki - Yet another WikiWikiWeb clone.
-// $Id: plugin.php,v 1.1 2002/06/21 05:21:46 masui Exp $
+<?php
/////////////////////////////////////////////////
+// PukiWiki - Yet another WikiWikiWeb clone.
+//
+// $Id: plugin.php,v 1.5 2003/02/28 06:18:39 panda Exp $
+//
// ¥×¥é¥°¥¤¥óÍѤË̤ÄêµÁ¤ÎÊÑ¿ô¤òÀßÄê
function set_plugin_messages($messages)
{
- foreach ($messages as $name=>$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;
+}
+?>