mirror of
https://github.com/slawkens/myaac.git
synced 2025-04-27 01:39:22 +02:00

* Remove unneeded escape * Fix guild back buttons (change logo & motd) * small adjustment in news.php * Fix create character when admin (any case is allowed now) * Fix forum table style (boards & thread view) * Small improvement to plugins.enabled check * [WIP] nikic/fast-route implementation I will describe it more in Pull Request * Optimisations & fixes. * Fix path - should not be absolute * Add PLUGINS to Twig path * Don't hide "Install Plugin" Box by default * Update package-lock.json * nothing important, just early exit & fixes Fix creature display * fix premium_ends_at for tfs 1.3+ * Move pages * Move pages tbc * $db->select: make $where parameter optional, allows to get all records * Add some error box to error * fix parse error * Rewriting the router v2 To be more flexible * small fixes * fix & add admin icons * Move mass_* pages to correct folder * fix logout hook 2 * Delete accountmanagement.php * This code wasn't used * Add missing var * Add redirect_from && redirect_to to router options + Also add * for all methods shortcut * Remove comments Not allowed in normal json * Allow admin pages included into plugins dir * block access to some files * Fix admin logout * Fix #178 * feature: mail confirmed reward Suggested by @EPuncker # Conflicts: # system/hooks.php * remove misleading comment * adjust required version according to composer.json * fix duplicated word * Adjustments & fixed to mass actions * Add password confirm, and change text type to password * Add list of Open Source Software MyAAC is using * Fix signature * Show First, Second instead of numbers * fix base dir detection * fix double ACTION define + undefined URI in template * new function> escapeHtml + fix css in admin menus * fix changelog add * fix news adding, rename const to NEWS_* * Add verify to pages, add messages, limits, fix add * fix "Please fill all input" * add required input to admin pages * shorten some expressions with ?? * shorten code + fix conversion (int) * Move account_types to config, account.web_flags to common.php * Update example.json * feature: router aliases * shorten some code + const convert * remove wrong char * fix signature on custom basedir * fix: mass teleport position validation (#214) * fix: mass teleport position validation * fix: max position * Fix execute in CLI * fix warning in reload cache in dev mode * Configurable admin panel folder * feature: plugin require more options with comma * $config_account_salt -> USE_ACCOUNT_SALT * fix forum show_thread * Update show_thread.php --------- Co-authored-by: Gabriel Pedro <gpedro@users.noreply.github.com>
127 lines
3.5 KiB
PHP
127 lines
3.5 KiB
PHP
<?php
|
|
/**
|
|
* Events system
|
|
*
|
|
* @package MyAAC
|
|
* @author Slawkens <slawkens@gmail.com>
|
|
* @copyright 2019 MyAAC
|
|
* @link https://my-aac.org
|
|
*/
|
|
defined('MYAAC') or die('Direct access not allowed!');
|
|
|
|
$i = 0;
|
|
define('HOOK_STARTUP', ++$i);
|
|
define('HOOK_BEFORE_PAGE', ++$i);
|
|
define('HOOK_AFTER_PAGE', ++$i);
|
|
define('HOOK_FINISH', ++$i);
|
|
define('HOOK_TIBIACOM_ARTICLE', ++$i);
|
|
define('HOOK_TIBIACOM_BORDER_3', ++$i);
|
|
define('HOOK_CHARACTERS_BEFORE_INFORMATIONS', ++$i);
|
|
define('HOOK_CHARACTERS_AFTER_INFORMATIONS', ++$i);
|
|
define('HOOK_CHARACTERS_BEFORE_SKILLS', ++$i);
|
|
define('HOOK_CHARACTERS_AFTER_SKILLS', ++$i);
|
|
define('HOOK_CHARACTERS_AFTER_QUESTS', ++$i);
|
|
define('HOOK_CHARACTERS_AFTER_EQUIPMENT', ++$i);
|
|
define('HOOK_CHARACTERS_BEFORE_DEATHS', ++$i);
|
|
define('HOOK_CHARACTERS_BEFORE_SIGNATURE', ++$i);
|
|
define('HOOK_CHARACTERS_AFTER_SIGNATURE', ++$i);
|
|
define('HOOK_CHARACTERS_AFTER_ACCOUNT', ++$i);
|
|
define('HOOK_CHARACTERS_AFTER_CHARACTERS', ++$i);
|
|
define('HOOK_LOGIN', ++$i);
|
|
define('HOOK_LOGIN_ATTEMPT', ++$i);
|
|
define('HOOK_LOGOUT', ++$i);
|
|
define('HOOK_ACCOUNT_CREATE_BEFORE_FORM', ++$i);
|
|
define('HOOK_ACCOUNT_CREATE_BEFORE_BOXES', ++$i);
|
|
define('HOOK_ACCOUNT_CREATE_BETWEEN_BOXES_1', ++$i);
|
|
define('HOOK_ACCOUNT_CREATE_BETWEEN_BOXES_2', ++$i);
|
|
define('HOOK_ACCOUNT_CREATE_AFTER_BOXES', ++$i);
|
|
define('HOOK_ACCOUNT_CREATE_BEFORE_ACCOUNT', ++$i);
|
|
define('HOOK_ACCOUNT_CREATE_AFTER_ACCOUNT', ++$i);
|
|
define('HOOK_ACCOUNT_CREATE_AFTER_EMAIL', ++$i);
|
|
define('HOOK_ACCOUNT_CREATE_AFTER_COUNTRY', ++$i);
|
|
define('HOOK_ACCOUNT_CREATE_AFTER_PASSWORDS', ++$i);
|
|
define('HOOK_ACCOUNT_CREATE_AFTER_RECAPTCHA', ++$i);
|
|
define('HOOK_ACCOUNT_CREATE_BEFORE_CHARACTER_NAME', ++$i);
|
|
define('HOOK_ACCOUNT_CREATE_AFTER_CHARACTER_NAME', ++$i);
|
|
define('HOOK_ACCOUNT_CREATE_AFTER_SEX', ++$i);
|
|
define('HOOK_ACCOUNT_CREATE_AFTER_VOCATION', ++$i);
|
|
define('HOOK_ACCOUNT_CREATE_AFTER_TOWNS', ++$i);
|
|
define('HOOK_ACCOUNT_CREATE_BEFORE_SUBMIT_BUTTON', ++$i);
|
|
define('HOOK_ACCOUNT_CREATE_AFTER_FORM', ++$i);
|
|
define('HOOK_ACCOUNT_CREATE_AFTER_SUBMIT', ++$i);
|
|
define('HOOK_ADMIN_MENU', ++$i);
|
|
define('HOOK_EMAIL_CONFIRMED', ++$i);
|
|
define('HOOK_FIRST', HOOK_STARTUP);
|
|
define('HOOK_LAST', HOOK_EMAIL_CONFIRMED);
|
|
|
|
require_once LIBS . 'plugins.php';
|
|
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)
|
|
{
|
|
extract($params);
|
|
/*if(is_callable($this->_callback))
|
|
{
|
|
$tmp = $this->_callback;
|
|
$ret = $tmp($params);
|
|
}*/
|
|
|
|
global $db, $config, $template_path, $ots, $content, $twig;
|
|
$ret = include BASE . $this->_file;
|
|
|
|
return !isset($ret) || $ret == 1 || $ret;
|
|
}
|
|
|
|
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) {
|
|
/** @var $hook Hook */
|
|
if (!$hook->execute($params)) {
|
|
$ret = false;
|
|
}
|
|
}
|
|
}
|
|
|
|
return $ret;
|
|
}
|
|
|
|
public function exist($type) {
|
|
return isset(self::$_hooks[$type]);
|
|
}
|
|
|
|
public function load()
|
|
{
|
|
foreach(Plugins::getHooks() as $hook) {
|
|
$this->register($hook['name'], $hook['type'], $hook['file']);
|
|
}
|
|
|
|
Plugins::clearWarnings();
|
|
}
|
|
}
|