/////////////////////////////////////////////////
// PukiWiki - Yet another WikiWikiWeb clone.
//
-// $Id: plugin.php,v 1.1 2004/08/01 01:54:35 henoheno Exp $
+// $Id: plugin.php,v 1.2 2004/08/09 13:57:41 henoheno Exp $
//
-// ¥×¥é¥°¥¤¥óÍѤË̤ÄêµÁ¤ÎÊÑ¿ô¤òÀßÄê
+// ¥×¥é¥°¥¤¥óÍѤË̤ÄêµÁ¤Î¥°¥í¡¼¥Ð¥ëÊÑ¿ô¤òÀßÄê
function set_plugin_messages($messages)
{
- foreach ($messages as $name=>$val)
- {
- global $$name;
-
- if (!isset($$name))
- {
- $$name = $val;
- }
+ foreach ($messages as $name=>$val) {
+ if (! isset($GLOBALS[$name])) $GLOBALS[$name] = $val;
}
}
//¥×¥é¥°¥¤¥ó¤¬Â¸ºß¤¹¤ë¤«
function exist_plugin($name)
{
- $name = strtolower($name); //Ryuji_edit(2003-03-18) add Âçʸ»ú¤È¾®Ê¸»ú¤ò¶èÊ̤·¤Ê¤¤¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥àÂкö
- if (preg_match('/^\w{1,64}$/', $name)
- and file_exists(PLUGIN_DIR . $name . '.inc.php'))
- {
+ $name = strtolower($name); // Âçʸ»ú¤È¾®Ê¸»ú¤ò¶èÊ̤·¤Ê¤¤¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥àÂкö
+ if (preg_match('/^\w{1,64}$/', $name) &&
+ file_exists(PLUGIN_DIR . $name . '.inc.php')) {
require_once(PLUGIN_DIR . $name . '.inc.php');
return TRUE;
+ } else {
+ return FALSE;
}
- return FALSE;
}
//¥×¥é¥°¥¤¥ó´Ø¿ô(action)¤¬Â¸ºß¤¹¤ë¤«
//¥×¥é¥°¥¤¥ó¤Î½é´ü²½¤ò¼Â¹Ô
function do_plugin_init($name)
{
- static $check = array();
-
- if (array_key_exists($name,$check))
- {
- return $check[$name];
- }
-
- $func = 'plugin_'.$name.'_init';
- if ($check[$name] = function_exists($func))
- {
- @call_user_func($func);
- return TRUE;
+ static $checked = array();
+
+ if (! isset($checked[$name])) {
+ $func = 'plugin_' . $name . '_init';
+ if (function_exists($func)) {
+ // TRUE or FALSE or NULL (return nothing)
+ $checked[$name] = call_user_func($func);
+ } else {
+ // Not exists
+ $checked[$name] = null;
+ }
}
- return FALSE;
+ return $checked[$name];
}
//¥×¥é¥°¥¤¥ó(action)¤ò¼Â¹Ô
function do_plugin_action($name)
{
- if (!exist_plugin_action($name))
- {
- return array();
- }
+ if (! exist_plugin_action($name)) return array();
- do_plugin_init($name);
- $retvar = call_user_func('plugin_'.$name.'_action');
+ if(do_plugin_init($name) === FALSE)
+ die_message("Plugin init failed: $name");
- // ʸ»ú¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¸¡½ÐÍÑ hidden ¥Õ¥£¡¼¥ë¥É¤òÁÞÆþ¤¹¤ë
- return preg_replace('/(<form[^>]*>)/',"$1\n<div><input type=\"hidden\" name=\"encode_hint\" value=\"¤×\" /></div>",$retvar);
+ $retvar = call_user_func('plugin_' . $name . '_action');
+
+ // ʸ»ú¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¸¡½ÐÍÑ hidden ¥Õ¥£¡¼¥ë¥É¤òÁÞÆþ
+ return preg_replace('/(<form[^>]*>)/',
+ "$1\n" . '<div><input type="hidden" name="encode_hint" value="¤×" /></div>',
+ $retvar);
}
//¥×¥é¥°¥¤¥ó(convert)¤ò¼Â¹Ô
-function do_plugin_convert($name,$args='')
+function do_plugin_convert($name, $args = '')
{
global $digest;
- // digest¤òÂàÈò
- $_digest = $digest;
-
- $aryargs = ($args !== '') ? csv_explode(',', $args) : array();
-
- do_plugin_init($name);
- $retvar = call_user_func_array('plugin_'.$name.'_convert',$aryargs);
-
- // digest¤òÉü¸µ
- $digest = $_digest;
+ if(do_plugin_init($name) === FALSE)
+ die_message("Plugin init failed: $name");
- if ($retvar === FALSE)
- {
- return htmlspecialchars('#'.$name.($args ? "($args)" : ''));
+ if ($args !== '') {
+ $aryargs = csv_explode(',', $args);
+ } else {
+ $aryargs = array();
}
- // ʸ»ú¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¸¡½ÐÍÑ hidden ¥Õ¥£¡¼¥ë¥É¤òÁÞÆþ¤¹¤ë
- return preg_replace('/(<form[^>]*>)/',"$1\n<div><input type=\"hidden\" name=\"encode_hint\" value=\"¤×\" /></div>",$retvar);
+ $_digest = $digest; // ÂàÈò
+ $retvar = call_user_func_array('plugin_' . $name . '_convert', $aryargs);
+ $digest = $_digest; // Éü¸µ
+
+ if ($retvar === FALSE) {
+ return htmlspecialchars('#' . $name . ($args ? "($args)" : ''));
+ } else {
+ // ʸ»ú¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¸¡½ÐÍÑ hidden ¥Õ¥£¡¼¥ë¥É¤òÁÞÆþ
+ return preg_replace('/(<form[^>]*>)/',
+ "$1\n" . '<div><input type="hidden" name="encode_hint" value="¤×" /></div>',
+ $retvar);
+ }
}
//¥×¥é¥°¥¤¥ó(inline)¤ò¼Â¹Ô
-function do_plugin_inline($name,$args,$body)
+function do_plugin_inline($name, $args, & $body)
{
global $digest;
- // digest¤òÂàÈò
- $_digest = $digest;
-
- $aryargs = ($args !== '') ? csv_explode(',',$args) : array();
- $aryargs[] =& $body;
+ if(do_plugin_init($name) === FALSE)
+ die_message("Plugin init failed: $name");
- do_plugin_init($name);
- $retvar = call_user_func_array('plugin_'.$name.'_inline',$aryargs);
+ if ($args !== '') {
+ $aryargs = csv_explode(',', $args);
+ } else {
+ $aryargs = array();
+ }
+ $aryargs[] = & $body; // Added reference of $body
- // digest¤òÉü¸µ
- $digest = $_digest;
+ $_digest = $digest; // ÂàÈò
+ $retvar = call_user_func_array('plugin_' . $name . '_inline', $aryargs);
+ $digest = $_digest; // Éü¸µ
- if($retvar === FALSE)
- {
+ if($retvar === FALSE) {
return htmlspecialchars("&${name}" . ($args ? "($args)" : '') . ';');
+ } else {
+ return $retvar;
}
-
- return $retvar;
}
?>