| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- <?php
- namespace ModulesGarden\Servers\ProxmoxCloudVps\Core\Hook;
- class HookManager
- {
- protected $hookRegister = [];
- protected static $currentName = "";
- protected $files = [];
- /**
- * @var Config
- */
- protected $config;
- public function __construct($dir)
- {
- $this->config = new Config();
- $path = $dir . DS . "app" . DS . "Hooks";
- $files = scandir($path, 1);
-
- if (count($files) != 0)
- {
- foreach ($files as $key => &$value)
- {
- if ($value === "." || $value === ".." || is_dir($path . DIRECTORY_SEPARATOR . $value))
- {
- unset($files[$key]);
- }
- }
- }
-
- $this->files = $files;
- }
- public static function create($dir)
- {
- $hookManager = new HookManager($dir);
- foreach ($hookManager->getFiles() as $file)
- {
- $path = $dir . DS . "app" . DS . "Hooks" . DS . $file;
- try
- {
- HookManager::$currentName = explode(".", $file)[0];
- require $path;
- }
- catch (\Exception $e)
- {
- ServiceLocator::call('errorManager')->addError(self::class, $e->getMessage() . " ||||HookPath: {$path}", $e->getTrace());
- }
- }
- $hookManager->start();
- return $hookManager;
- }
- public function getFiles()
- {
- return $this->files;
- }
- public function register($callback, $sort = 1)
- {
- $this->hookRegister[] = [
- "name" => HookManager::$currentName,
- "function" => $callback,
- "sort" => $sort
- ];
- }
- protected function start()
- {
- foreach ($this->hookRegister as $hook)
- {
- if ($this->config->checkHook($hook['name']))
- {
- add_hook(
- $hook['name'], $hook['sort'], $hook['function']
- );
- }
- }
- }
- }
|