diff --git a/AvocadoEdition_Light/addons/sample/sample.addon.php b/AvocadoEdition_Light/addons/sample/sample.addon.php new file mode 100644 index 0000000..1bc3fd3 --- /dev/null +++ b/AvocadoEdition_Light/addons/sample/sample.addon.php @@ -0,0 +1,3 @@ +callbacks[$tag][$priority][] = array( + $that->callbacks[$tag][$priority][] = [ 'function' => $func, 'arguments' => $args, - ); + ]; return true; } @@ -143,7 +143,7 @@ class Hook public static function addActions($actions) { foreach ($actions as $arguments) { - call_user_func_array(array(__CLASS__, 'addAction'), $arguments); + call_user_func_array([__CLASS__, 'addAction'], $arguments); } return true; @@ -164,9 +164,9 @@ class Hook * @param mixed $args → optional arguments * @param bool $remove → delete hook after executing actions * - * @return returns the output of the last action or false + * @return bool returns the output of the last action or false */ - public static function doAction($tag, $args = array(), $remove = true) + public static function doAction($tag, $args = [], $remove = true) { $that = self::getInstance(self::$id); @@ -252,24 +252,24 @@ class Hook $function = $action['function']; $argsNumber = $action['arguments']; - $class = (isset($function[0])) ? $function[0] : false; - $method = (isset($function[1])) ? $function[1] : false; + $class = isset($function[0]) ? $function[0] : false; + $method = isset($function[1]) ? $function[1] : false; $args = $this->getArguments($argsNumber, $args); if (!($class && $method) && function_exists($function)) { return call_user_func($function, $args); - } elseif ($obj = call_user_func(array($class, $this->singleton))) { + } elseif ($obj = call_user_func([$class, $this->singleton])) { if ($obj !== false) { - return call_user_func_array(array($obj, $method), $args); + return call_user_func_array([$obj, $method], $args); } } elseif (class_exists($class)) { $instance = new $class; - return call_user_func_array(array($instance, $method), $args); + return call_user_func_array([$instance, $method], $args); } - return null; + return false; } /** @@ -291,7 +291,7 @@ class Hook } } - return (isset($actions)) ? $actions : array(); + return isset($actions) ? $actions : []; } /** @@ -307,7 +307,7 @@ class Hook protected function getArguments($argsNumber, $arguments) { if ($argsNumber == 1 && is_string($arguments)) { - return array($arguments); + return [$arguments]; } elseif ($argsNumber === count($arguments)) { return $arguments; } @@ -321,6 +321,6 @@ class Hook return $args; } - return array(); + return []; } } diff --git a/AvocadoEdition_Light/lib/Hook/hook.extends.class.php b/AvocadoEdition_Light/lib/Hook/hook.extends.class.php index 95ab392..341cfa4 100644 --- a/AvocadoEdition_Light/lib/Hook/hook.extends.class.php +++ b/AvocadoEdition_Light/lib/Hook/hook.extends.class.php @@ -4,11 +4,8 @@ if (!defined('_GNUBOARD_')) class GML_Hook extends Hook { - - protected $filters = array('count' => 0); - - protected $callback_filters = array(); - + protected $filters = ['count' => 0]; + protected $callback_filters = []; protected static $current_filter = false; protected function runAction($action, $args) @@ -16,77 +13,68 @@ class GML_Hook extends Hook $function = $action['function']; $argsNumber = $action['arguments']; - $class = (is_array($function) && isset($function[0])) ? $function[0] : false; - $method = (is_array($function) && isset($function[1])) ? $function[1] : false; - $args = $this->getArguments($argsNumber, $args); - if (!($class && $method) && is_callable($function)) { + if (is_callable($function)) { return call_user_func_array($function, $args); - } elseif ($obj = call_user_func(array($class, $this->singleton))) { - if ($obj !== false) { - return call_user_func_array(array($obj, $method), $args); - } - } elseif (class_exists($class)) { - $instance = new $class; + } elseif (is_array($function) && isset($function[0], $function[1])) { + $class = $function[0]; + $method = $function[1]; - return call_user_func_array(array($instance, $method), $args); + if ($obj = call_user_func([$class, $this->singleton])) { + return $obj !== false ? call_user_func_array([$obj, $method], $args) : false; + } elseif (class_exists($class)) { + $instance = new $class(); + return call_user_func_array([$instance, $method], $args); + } } + + return false; } protected function getFilters($tag, $remove) { - if (isset($this->callback_filters[$tag])) { - $filters = $this->callback_filters[$tag]; - if ($remove) { - unset($this->callback_filters[$tag]); - } + $filters = isset($this->callback_filters[$tag]) ? $this->callback_filters[$tag] : []; + if ($remove) { + unset($this->callback_filters[$tag]); } - - return (isset($filters)) ? $filters : array(); + return $filters; } public static function get_properties($type, $is_callback = false) { - $that = self::getInstance(self::$id); - if ($type === 'event') { return $is_callback ? $that->callbacks : $that->actions; } - return $is_callback ? $that->callback_filters : $that->filters; } public static function addFilter($tag, $func, $priority = 8, $args = 0) { $that = self::getInstance(self::$id); - - $that->callback_filters[$tag][$priority][] = array( + $that->callback_filters[$tag][$priority][] = [ 'function' => $func, 'arguments' => $args, - ); - + ]; return true; } - public static function apply_filters($tag, $args = array(), $remove = true) + public static function apply_filters($tag, $args = [], $remove = true) { $that = self::getInstance(self::$id); - self::$current_filter = $tag; - $that->filters['count']++; - if (!array_key_exists($tag, $that->filters)) { + if (!isset($that->filters[$tag])) { $that->filters[$tag] = 0; } - $that->filters[$tag]++; + $filters = $that->getFilters($tag, $remove); ksort($filters); - $value = $args[0]; + $value = isset($args[0]) ? $args[0] : null; foreach ($filters as $priority) { foreach ($priority as $filter) { @@ -94,74 +82,54 @@ class GML_Hook extends Hook $args[0] = $value; } $replace = $that->runAction($filter, $args); - - if (!is_null($replace)) { + if ($replace !== false) { $value = $replace; } } } self::$current_filter = false; - return $value; } protected function getArguments($argsNumber, $arguments) { - if ($argsNumber == 1 && is_string($arguments)) { - return array($arguments); - } elseif ($argsNumber === count($arguments)) { + if ($argsNumber === 1 && is_string($arguments)) { + return [$arguments]; + } + + if (is_array($arguments) && $argsNumber === count($arguments)) { return $arguments; } - $args = array(); - - for ($i = 0; $i < $argsNumber; $i++) { - if (is_array($arguments) && array_key_exists($i, $arguments)) { - $args[] = $arguments[$i]; - } - } - - return $args; + return array_slice((array) $arguments, 0, $argsNumber); } public static function remove_filter($tag, $func, $priority) { $that = self::getInstance(self::$id); - - $is_remove = false; - - if (isset($that->callback_filters[$tag]) && isset($that->callback_filters[$tag][$priority])) { - - foreach ((array) $that->callback_filters[$tag][$priority] as $key => $value) { - if (isset($value['function']) && $value['function'] === $func) { - unset($that->callback_filters[$tag][$priority][$key]); - $is_remove = true; - } - } - } - - return $is_remove; + return self::remove_callback($that->callback_filters, $tag, $func, $priority); } public static function remove_action($tag, $func, $priority) { $that = self::getInstance(self::$id); + return self::remove_callback($that->callbacks, $tag, $func, $priority); + } - $is_remove = false; + private static function remove_callback(&$array, $tag, $func, $priority) + { + if (!isset($array[$tag][$priority])) { + return false; + } - if (isset($that->callbacks[$tag]) && isset($that->callbacks[$tag][$priority])) { - - foreach ((array) $that->callbacks[$tag][$priority] as $key => $value) { - if (isset($value['function']) && $value['function'] === $func) { - unset($that->callbacks[$tag][$priority][$key]); - $is_remove = true; - } + foreach ($array[$tag][$priority] as $key => $value) { + if (isset($value['function']) && $value['function'] === $func) { + unset($array[$tag][$priority][$key]); + return true; } } - return $is_remove; + return false; } } - -// end Hook Class;