OSDN Git Service

add error check and messages.
[pukiwiki/pukiwiki.git] / plugin.php
index 2bb1849..d922fc7 100644 (file)
-<?
-// 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)
 {
 
 // ¥×¥é¥°¥¤¥óÍѤË̤ÄêµÁ¤ÎÊÑ¿ô¤òÀßÄê
 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)¤¬Â¸ºß¤¹¤ë¤«
 }
 
 //¥×¥é¥°¥¤¥ó(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)¤¬Â¸ºß¤¹¤ë¤«
 }
 
 //¥×¥é¥°¥¤¥ó(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)¤ò¼Â¹Ô
 }
 
 //¥×¥é¥°¥¤¥ó(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)¤ò¼Â¹Ô
 }
 
 //¥×¥é¥°¥¤¥ó(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;
+}
+?>