Remove event handlers and custom namespaces no longer defined by module.xml

This commit is contained in:
Kijin Sung 2023-08-11 00:34:44 +09:00
parent acc1117d26
commit 68ddac96e7
2 changed files with 60 additions and 0 deletions

View file

@ -1633,13 +1633,36 @@ class ModuleModel extends Module
}
// Check if all event handlers are registered.
$registered_event_handlers = [];
foreach ($module_action_info->event_handlers ?? [] as $ev)
{
$key = implode(':', [$ev->event_name, $module_name, $ev->class_name, $ev->method, $ev->position]);
$registered_event_handlers[$key] = true;
if(!ModuleModel::getTrigger($ev->event_name, $module_name, $ev->class_name, $ev->method, $ev->position))
{
$info->need_update = true;
}
}
if (count($registered_event_handlers))
{
foreach ($GLOBALS['__triggers__'] as $trigger_name => $val1)
{
foreach ($val1 as $called_position => $val2)
{
foreach ($val2 as $item)
{
if ($item->module === $module_name)
{
$key = implode(':', [$trigger_name, $item->module, $item->type, $item->called_method, $called_position]);
if (!isset($registered_event_handlers[$key]))
{
$info->need_update = true;
}
}
}
}
}
}
// Check if all namespaces are registered.
$namespaces = config('namespaces') ?? [];