diff options
Diffstat (limited to '')
-rw-r--r-- | library/Icingadb/Hook/IcingadbSupportHook.php | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/library/Icingadb/Hook/IcingadbSupportHook.php b/library/Icingadb/Hook/IcingadbSupportHook.php new file mode 100644 index 0000000..96cdd19 --- /dev/null +++ b/library/Icingadb/Hook/IcingadbSupportHook.php @@ -0,0 +1,52 @@ +<?php + +/* Icinga DB Web | (c) 2021 Icinga GmbH | GPLv2 */ + +namespace Icinga\Module\Icingadb\Hook; + +use Icinga\Application\Icinga; +use Icinga\Authentication\Auth; +use Icinga\Module\Icingadb\Hook\Common\HookUtils; +use Icinga\Web\Session; + +abstract class IcingadbSupportHook +{ + use HookUtils; + + /** @var string key name of preference */ + const PREFERENCE_NAME = 'icingadb.as_backend'; + + /** + * Return whether your module supports IcingaDB or not + * + * @return bool + */ + public function supportsIcingaDb(): bool + { + return true; + } + + /** + * Whether icingadb is set as the preferred backend in preferences + * + * @return bool Return true if icingadb is set as backend, false otherwise + */ + final public static function isIcingaDbSetAsPreferredBackend(): bool + { + return (bool) Session::getSession() + ->getNamespace('icingadb') + ->get(self::PREFERENCE_NAME, false); + } + + /** + * Whether to use icingadb as the backend + * + * @return bool Returns true if monitoring module is accessible or icingadb is selected as backend, false otherwise. + */ + final public static function useIcingaDbAsBackend(): bool + { + return ! Icinga::app()->getModuleManager()->hasEnabled('monitoring') + || ! Auth::getInstance()->hasPermission('module/monitoring') + || self::isIcingaDbSetAsPreferredBackend(); + } +} |