2024-09-19 20:57:55 +09:00
|
|
|
<?php
|
|
|
|
|
if (!defined('_GNUBOARD_'))
|
|
|
|
|
exit;
|
|
|
|
|
|
|
|
|
|
define('G5_HOOK_DEFAULT_PRIORITY', 8);
|
|
|
|
|
|
|
|
|
|
if (!function_exists('get_called_class')) {
|
|
|
|
|
function get_called_class()
|
|
|
|
|
{
|
|
|
|
|
$bt = debug_backtrace();
|
|
|
|
|
$lines = file($bt[1]['file']);
|
|
|
|
|
preg_match(
|
|
|
|
|
'/([a-zA-Z0-9\_]+)::' . $bt[1]['function'] . '/',
|
|
|
|
|
$lines[$bt[1]['line'] - 1],
|
|
|
|
|
$matches
|
|
|
|
|
);
|
|
|
|
|
return $matches[1];
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
include_once(dirname(__FILE__) . '/Hook/hook.class.php');
|
|
|
|
|
include_once(dirname(__FILE__) . '/Hook/hook.extends.class.php');
|
|
|
|
|
|
|
|
|
|
function get_hook_class()
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
if (class_exists('GML_Hook')) {
|
|
|
|
|
return GML_Hook::getInstance();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function add_event($tag, $func, $priority = G5_HOOK_DEFAULT_PRIORITY, $args = 0)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
if ($hook = get_hook_class()) {
|
|
|
|
|
$hook->addAction($tag, $func, $priority, $args);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function run_event($tag, $arg = '')
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
if ($hook = get_hook_class()) {
|
|
|
|
|
|
2024-09-23 09:37:13 +09:00
|
|
|
$args = [];
|
2024-09-19 20:57:55 +09:00
|
|
|
|
|
|
|
|
if (
|
|
|
|
|
is_array($arg)
|
|
|
|
|
&&
|
|
|
|
|
isset($arg[0])
|
|
|
|
|
&&
|
|
|
|
|
is_object($arg[0])
|
|
|
|
|
&&
|
|
|
|
|
1 == count($arg)
|
|
|
|
|
) {
|
|
|
|
|
$args[] =& $arg[0];
|
|
|
|
|
} else {
|
|
|
|
|
$args[] = $arg;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$numArgs = func_num_args();
|
|
|
|
|
|
|
|
|
|
for ($a = 2; $a < $numArgs; $a++) {
|
|
|
|
|
$args[] = func_get_arg($a);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$hook->doAction($tag, $args, false);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function add_replace($tag, $func, $priority = G5_HOOK_DEFAULT_PRIORITY, $args = 1)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
if ($hook = get_hook_class()) {
|
|
|
|
|
return $hook->addFilter($tag, $func, $priority, $args);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function run_replace($tag, $arg = '')
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
if ($hook = get_hook_class()) {
|
|
|
|
|
|
2024-09-23 09:37:13 +09:00
|
|
|
$args = [];
|
2024-09-19 20:57:55 +09:00
|
|
|
|
|
|
|
|
if (
|
|
|
|
|
is_array($arg)
|
|
|
|
|
&&
|
|
|
|
|
isset($arg[0])
|
|
|
|
|
&&
|
|
|
|
|
is_object($arg[0])
|
|
|
|
|
&&
|
|
|
|
|
1 == count($arg)
|
|
|
|
|
) {
|
|
|
|
|
$args[] =& $arg[0];
|
|
|
|
|
} else {
|
|
|
|
|
$args[] = $arg;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$numArgs = func_num_args();
|
|
|
|
|
|
|
|
|
|
for ($a = 2; $a < $numArgs; $a++) {
|
|
|
|
|
$args[] = func_get_arg($a);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return $hook->apply_filters($tag, $args, false);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function delete_event($tag, $func, $priority = G5_HOOK_DEFAULT_PRIORITY)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
if ($hook = get_hook_class()) {
|
|
|
|
|
return $hook->remove_action($tag, $func, $priority);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function delete_replace($tag, $func, $priority = G5_HOOK_DEFAULT_PRIORITY)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
if ($hook = get_hook_class()) {
|
|
|
|
|
return $hook->remove_filter($tag, $func, $priority);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function get_hook_datas($type = '', $is_callback = '')
|
|
|
|
|
{
|
|
|
|
|
if ($hook = get_hook_class()) {
|
|
|
|
|
return $hook->get_properties($type, $is_callback);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return null;
|
|
|
|
|
}
|