mirror of
https://github.com/slawkens/myaac.git
synced 2025-10-14 09:44:55 +02:00

committed by
slawkens

parent
73a5829974
commit
99997eb57d
@@ -37,6 +37,11 @@ class Hook
|
||||
return !isset($ret) || $ret == 1 || $ret;
|
||||
}
|
||||
|
||||
public function executeFilter(...$args) {
|
||||
return include BASE . $this->_file;
|
||||
}
|
||||
|
||||
public function name() {return $this->_name;}
|
||||
public function type() {return $this->_type;}
|
||||
public function file() {return $this->_file;}
|
||||
}
|
||||
|
@@ -4,22 +4,23 @@ namespace MyAAC;
|
||||
|
||||
class Hooks
|
||||
{
|
||||
private static $_hooks = array();
|
||||
private static array $_hooks = [];
|
||||
|
||||
public function register($hook, $type = '', $file = null) {
|
||||
public function register($hook, $type = '', $file = null): void
|
||||
{
|
||||
if(!($hook instanceof Hook))
|
||||
$hook = new Hook($hook, $type, $file);
|
||||
|
||||
self::$_hooks[$hook->type()][] = $hook;
|
||||
}
|
||||
|
||||
public function trigger($type, $params = array())
|
||||
public function trigger($type, $params = []): bool
|
||||
{
|
||||
$ret = true;
|
||||
if(isset(self::$_hooks[$type]))
|
||||
{
|
||||
|
||||
if(isset(self::$_hooks[$type])) {
|
||||
foreach(self::$_hooks[$type] as $name => $hook) {
|
||||
/** @var $hook Hook */
|
||||
/** @var Hook $hook */
|
||||
if (!$hook->execute($params)) {
|
||||
$ret = false;
|
||||
}
|
||||
@@ -29,11 +30,23 @@ class Hooks
|
||||
return $ret;
|
||||
}
|
||||
|
||||
public function exist($type) {
|
||||
public function triggerFilter($type, $args = [])
|
||||
{
|
||||
if(isset(self::$_hooks[$type])) {
|
||||
foreach(self::$_hooks[$type] as $hook) {
|
||||
/** @var Hook $hook */
|
||||
$args = $hook->executeFilter(...$args);
|
||||
}
|
||||
}
|
||||
|
||||
return $args;
|
||||
}
|
||||
|
||||
public function exist($type): bool {
|
||||
return isset(self::$_hooks[$type]);
|
||||
}
|
||||
|
||||
public function load()
|
||||
public function load(): void
|
||||
{
|
||||
foreach(Plugins::getHooks() as $hook) {
|
||||
$this->register($hook['name'], $hook['type'], $hook['file']);
|
||||
|
28
system/src/Twig/EnvironmentBridge.php
Normal file
28
system/src/Twig/EnvironmentBridge.php
Normal file
@@ -0,0 +1,28 @@
|
||||
<?php
|
||||
|
||||
namespace MyAAC\Twig;
|
||||
|
||||
use Twig\Environment;
|
||||
|
||||
class EnvironmentBridge extends Environment
|
||||
{
|
||||
public function display($name, array $context = []): void
|
||||
{
|
||||
global $hooks;
|
||||
|
||||
$context['viewName'] = $name;
|
||||
$context = $hooks->triggerFilter(HOOK_FILTER_TWIG_DISPLAY, $context);
|
||||
|
||||
parent::display($name, $context);
|
||||
}
|
||||
|
||||
public function render($name, array $context = []): string
|
||||
{
|
||||
global $hooks;
|
||||
|
||||
$context['viewName'] = $name;
|
||||
$context = $hooks->triggerFilter(HOOK_FILTER_TWIG_RENDER, $context);
|
||||
|
||||
return parent::render($name, $context);
|
||||
}
|
||||
}
|
@@ -97,6 +97,11 @@ define('HOOK_CACHE_CLEAR', ++$i);
|
||||
define('HOOK_INSTALL_FINISH', ++$i);
|
||||
define('HOOK_INSTALL_FINISH_END', ++$i);
|
||||
|
||||
// hook filters
|
||||
define('HOOK_FILTER_TWIG_DISPLAY', ++$i);
|
||||
define('HOOK_FILTER_TWIG_RENDER', ++$i);
|
||||
define('HOOK_FILTER_THEME_FOOTER', ++$i);
|
||||
|
||||
const HOOK_FIRST = HOOK_INIT;
|
||||
define('HOOK_LAST', $i);
|
||||
|
||||
|
Reference in New Issue
Block a user