mirror of
https://github.com/slawkens/myaac.git
synced 2025-04-26 01:09:21 +02:00
93 lines
1.9 KiB
PHP
93 lines
1.9 KiB
PHP
<?php
|
|
/**
|
|
* Events system
|
|
*
|
|
* @package MyAAC
|
|
* @author Slawkens <slawkens@gmail.com>
|
|
* @copyright 2017 MyAAC
|
|
* @version 0.2.0
|
|
* @link http://my-aac.org
|
|
*/
|
|
defined('MYAAC') or die('Direct access not allowed!');
|
|
|
|
define('HOOK_STARTUP', 1);
|
|
define('HOOK_BEFORE_PAGE', 2);
|
|
define('HOOK_AFTER_PAGE', 3);
|
|
define('HOOK_FINISH', 4);
|
|
define('HOOK_TIBIACOM_ARTICLE', 5);
|
|
define('HOOK_TIBIACOM_BORDER_3', 6);
|
|
define('HOOK_FIRST', HOOK_STARTUP);
|
|
define('HOOK_LAST', HOOK_TIBIACOM_BORDER_3);
|
|
|
|
$hook_types = array(
|
|
'STARTUP' => HOOK_STARTUP,
|
|
'BEFORE_PAGE' => HOOK_BEFORE_PAGE,
|
|
'AFTER_PAGE' => HOOK_AFTER_PAGE,
|
|
'FINISH' => HOOK_FINISH,
|
|
'TIBIACOM_ARTICLE' => HOOK_TIBIACOM_ARTICLE,
|
|
'TIBIACOM_BORDER_3' => HOOK_TIBIACOM_BORDER_3
|
|
);
|
|
|
|
class Hook
|
|
{
|
|
private $_name, $_type, $_file;
|
|
|
|
public function __construct($name, $type, $file) {
|
|
$this->_name = $name;
|
|
$this->_type = $type;
|
|
$this->_file = $file;
|
|
}
|
|
|
|
public function execute($params)
|
|
{
|
|
/*if(is_callable($this->_callback))
|
|
{
|
|
$tmp = $this->_callback;
|
|
$ret = $tmp($params);
|
|
}*/
|
|
|
|
global $db, $config, $template_path, $ots;
|
|
if(file_exists(BASE . $this->_file)) {
|
|
require(BASE . $this->_file);
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
public function name() {return $this->_name;}
|
|
public function type() {return $this->_type;}
|
|
}
|
|
|
|
class Hooks
|
|
{
|
|
private static $_hooks = array();
|
|
|
|
public function register($hook, $type = '', $file = null) {
|
|
if(!($hook instanceof Hook))
|
|
$hook = new Hook($hook, $type, $file);
|
|
|
|
self::$_hooks[$hook->type()][] = $hook;
|
|
}
|
|
|
|
public function trigger($type, $params = array())
|
|
{
|
|
$ret = true;
|
|
if(isset(self::$_hooks[$type]))
|
|
{
|
|
foreach(self::$_hooks[$type] as $name => $hook)
|
|
$ret = $hook->execute($params);
|
|
}
|
|
|
|
return $ret;
|
|
}
|
|
|
|
public function load()
|
|
{
|
|
global $db;
|
|
$hooks = $db->query('SELECT `name`, `type`, `file` FROM `' . TABLE_PREFIX . 'hooks`;');
|
|
foreach($hooks as $hook)
|
|
$this->register($hook['name'], $hook['type'], $hook['file']);
|
|
}
|
|
}
|
|
?>
|