mirror of
https://github.com/Icinga/icingadb-web.git
synced 2026-04-10 19:36:16 -04:00
For compatibility reasons, Icinga DB Web also applies hooks provided for the monitoring module, so existing modules do not need to implement new hook interfaces. The code paths that consume these hooks are already guarded by installation checks, so no hook is applied if the `monitoring` module is not installed. Previously, when the `monitoring` module was not enabled, Icinga DB Web would search module directories manually to register its autoloader, logging an error if the module could not be located. This produced noise in setups where the `monitoring` module is simply not installed. The autoloader registration now uses the module manager directly and is skipped entirely if the `monitoring` module is not installed.
33 lines
1.5 KiB
PHP
33 lines
1.5 KiB
PHP
<?php
|
|
|
|
// SPDX-FileCopyrightText: 2019 Icinga GmbH <https://icinga.com>
|
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
|
|
/** @var $this \Icinga\Application\Modules\Module */
|
|
|
|
$this->provideHook('ApplicationState');
|
|
$this->provideHook('X509/Sni');
|
|
$this->provideHook('health', 'IcingaHealth');
|
|
$this->provideHook('health', 'RedisHealth');
|
|
$this->provideHook('Reporting/Report', 'Reporting/HostSlaReport');
|
|
$this->provideHook('Reporting/Report', 'Reporting/TotalHostSlaReport');
|
|
$this->provideHook('Reporting/Report', 'Reporting/ServiceSlaReport');
|
|
$this->provideHook('Reporting/Report', 'Reporting/TotalServiceSlaReport');
|
|
|
|
if ($this::exists('notifications')) {
|
|
$this->provideHook('Notifications/v1/Source');
|
|
}
|
|
|
|
if ($this::exists('reporting')) {
|
|
$this->provideHook('Icingadb/HostActions', 'CreateHostSlaReport');
|
|
$this->provideHook('Icingadb/ServiceActions', 'CreateServiceSlaReport');
|
|
$this->provideHook('Icingadb/HostsDetailExtension', 'CreateHostsSlaReport');
|
|
$this->provideHook('Icingadb/ServicesDetailExtension', 'CreateServicesSlaReport');
|
|
}
|
|
|
|
if (! $this::exists('monitoring') && $this->app->getModuleManager()->hasInstalled('monitoring')) {
|
|
// For compatibility reasons, Icinga DB Web also supports hooks originally written for the monitoring module.
|
|
// This requires the monitoring module to be either enabled or installed.
|
|
// If it is only installed, its autoloader must be registered manually to resolve monitoring module hook classes.
|
|
$this->app->getModuleManager()->getModule('monitoring', assertLoaded: false)->registerAutoloader();
|
|
}
|