diff --git a/register-hooks.php b/register-hooks.php new file mode 100644 index 00000000..4411f8f4 --- /dev/null +++ b/register-hooks.php @@ -0,0 +1,112 @@ +provideHook('monitoring/HostActions'); +$this->provideHook('monitoring/ServiceActions'); +$this->provideHook('cube/Actions', CubeLinks::class); + +$directorHooks = [ + 'director/DataType' => [ + DataTypeArray::class, + DataTypeBoolean::class, + DataTypeDatalist::class, + DataTypeNumber::class, + DataTypeDirectorObject::class, + DataTypeSqlQuery::class, + DataTypeString::class + ], + 'director/ImportSource' => [ + ImportSourceSql::class, + ImportSourceLdap::class, + ImportSourceCoreApi::class, + ImportSourceRestApi::class + ], + 'director/Job' => [ + ConfigJob::class, + HousekeepingJob::class, + ImportJob::class, + SyncJob::class, + ], + 'director/PropertyModifier' => [ + PropertyModifierArrayElementByPosition::class, + PropertyModifierArrayFilter::class, + PropertyModifierBitmask::class, + PropertyModifierCombine::class, + PropertyModifierDnsRecords::class, + PropertyModifierExtractFromDN::class, + PropertyModifierFromAdSid::class, + PropertyModifierFromLatin1::class, + PropertyModifierGetHostByName::class, + PropertyModifierJoin::class, + PropertyModifierJsonDecode::class, + PropertyModifierLConfCustomVar::class, + PropertyModifierLowercase::class, + PropertyModifierMakeBoolean::class, + PropertyModifierMap::class, + PropertyModifierParseURL::class, + PropertyModifierRegexReplace::class, + PropertyModifierRegexSplit::class, + PropertyModifierRejectOrSelect::class, + PropertyModifierReplace::class, + PropertyModifierSplit::class, + PropertyModifierStripDomain::class, + PropertyModifierSubstring::class, + PropertyModifierToInt::class, + PropertyModifierUppercase::class, + PropertyModifierUpperCaseFirst::class, + PropertyModifierURLEncode::class, + PropertyModifierXlsNumericIp::class, + ] +]; + +foreach ($directorHooks as $type => $classNames) { + foreach ($classNames as $className) { + $this->provideHook($type, $className); + } +} diff --git a/run-php5.3.php b/run-php5.3.php index bc992a41..f79cec57 100644 --- a/run-php5.3.php +++ b/run-php5.3.php @@ -7,7 +7,7 @@ use Icinga\Web\Url; if (Icinga::app()->isCli()) { throw new IcingaException( - "PHP version 5.4.x is required for Director >= 1.4.0, you're running %s." + "PHP version 5.6.x is required for Director >= 1.7.0, you're running %s." . ' Please either upgrade PHP or downgrade Icinga Director', PHP_VERSION ); diff --git a/run.php b/run.php index 370b6319..698f61ec 100644 --- a/run.php +++ b/run.php @@ -3,78 +3,25 @@ use Icinga\Application\Modules\Module; use dipl\Loader\CompatLoader; -if (version_compare(PHP_VERSION, '5.4.0') < 0) { +if (version_compare(PHP_VERSION, '5.6.0') < 0) { include __DIR__ . '/run-php5.3.php'; return; } -$prefix = '\\Icinga\\Module\\Director\\'; - -/** @var Module $this */ -$this->provideHook('monitoring/HostActions'); -$this->provideHook('monitoring/ServiceActions'); - -$this->provideHook('director/ImportSource', $prefix . 'Import\\ImportSourceSql'); -$this->provideHook('director/ImportSource', $prefix . 'Import\\ImportSourceLdap'); -$this->provideHook('director/ImportSource', $prefix . 'Import\\ImportSourceCoreApi'); -$this->provideHook('director/ImportSource', $prefix . 'Import\\ImportSourceRestApi'); - -$this->provideHook('director/DataType', $prefix . 'DataType\\DataTypeArray'); -$this->provideHook('director/DataType', $prefix . 'DataType\\DataTypeBoolean'); -$this->provideHook('director/DataType', $prefix . 'DataType\\DataTypeDatalist'); -$this->provideHook('director/DataType', $prefix . 'DataType\\DataTypeNumber'); -$this->provideHook('director/DataType', $prefix . 'DataType\\DataTypeDirectorObject'); -$this->provideHook('director/DataType', $prefix . 'DataType\\DataTypeSqlQuery'); -$this->provideHook('director/DataType', $prefix . 'DataType\\DataTypeString'); - -$this->provideHook('director/PropertyModifier', $prefix . 'PropertyModifier\\PropertyModifierLowercase'); -$this->provideHook('director/PropertyModifier', $prefix . 'PropertyModifier\\PropertyModifierRegexReplace'); -$this->provideHook('director/PropertyModifier', $prefix . 'PropertyModifier\\PropertyModifierRegexSplit'); -$this->provideHook('director/PropertyModifier', $prefix . 'PropertyModifier\\PropertyModifierReplace'); -$this->provideHook('director/PropertyModifier', $prefix . 'PropertyModifier\\PropertyModifierStripDomain'); -$this->provideHook('director/PropertyModifier', $prefix . 'PropertyModifier\\PropertyModifierSubstring'); -$this->provideHook('director/PropertyModifier', $prefix . 'PropertyModifier\\PropertyModifierUppercase'); -$this->provideHook('director/PropertyModifier', $prefix . 'PropertyModifier\\PropertyModifierMap'); -$this->provideHook('director/PropertyModifier', $prefix . 'PropertyModifier\\PropertyModifierSplit'); -$this->provideHook('director/PropertyModifier', $prefix . 'PropertyModifier\\PropertyModifierJoin'); -$this->provideHook('director/PropertyModifier', $prefix . 'PropertyModifier\\PropertyModifierGetHostByName'); -$this->provideHook('director/PropertyModifier', $prefix . 'PropertyModifier\\PropertyModifierDnsRecords'); -$this->provideHook('director/PropertyModifier', $prefix . 'PropertyModifier\\PropertyModifierExtractFromDN'); -$this->provideHook('director/PropertyModifier', $prefix . 'PropertyModifier\\PropertyModifierFromAdSid'); -$this->provideHook('director/PropertyModifier', $prefix . 'PropertyModifier\\PropertyModifierFromLatin1'); -$this->provideHook('director/PropertyModifier', $prefix . 'PropertyModifier\\PropertyModifierBitmask'); -$this->provideHook('director/PropertyModifier', $prefix . 'PropertyModifier\\PropertyModifierMakeBoolean'); -$this->provideHook('director/PropertyModifier', $prefix . 'PropertyModifier\\PropertyModifierJsonDecode'); -$this->provideHook('director/PropertyModifier', $prefix . 'PropertyModifier\\PropertyModifierToInt'); -$this->provideHook('director/PropertyModifier', $prefix . 'PropertyModifier\\PropertyModifierLConfCustomVar'); -$this->provideHook('director/PropertyModifier', $prefix . 'PropertyModifier\\PropertyModifierArrayFilter'); -$this->provideHook('director/PropertyModifier', $prefix . 'PropertyModifier\\PropertyModifierCombine'); -$this->provideHook('director/PropertyModifier', $prefix . 'PropertyModifier\\PropertyModifierXlsNumericIp'); -$this->provideHook('director/PropertyModifier', $prefix . 'PropertyModifier\\PropertyModifierURLEncode'); -$this->provideHook('director/PropertyModifier', $prefix . 'PropertyModifier\\PropertyModifierUpperCaseFirst'); -$this->provideHook('director/PropertyModifier', $prefix . 'PropertyModifier\\PropertyModifierRejectOrSelect'); -$this->provideHook('director/PropertyModifier', $prefix . 'PropertyModifier\\PropertyModifierArrayElementByPosition'); -$this->provideHook('director/PropertyModifier', $prefix . 'PropertyModifier\\PropertyModifierParseURL'); - -$this->provideHook('director/Job', $prefix . 'Job\\HousekeepingJob'); -$this->provideHook('director/Job', $prefix . 'Job\\ConfigJob'); -$this->provideHook('director/Job', $prefix . 'Job\\ImportJob'); -$this->provideHook('director/Job', $prefix . 'Job\\SyncJob'); - -$this->provideHook('cube/Actions', 'CubeLinks'); - +// TODO: this is going to be removed in v1.8.0 require_once __DIR__ . '/library/vendor/ipl/Loader/CompatLoader.php'; CompatLoader::delegateLoadingToIcingaWeb($this->app); +/** @var Module $this */ $modules = $this->app->getModuleManager(); foreach ($this->getDependencies() as $module => $required) { if ($modules->hasEnabled($module)) { $installed = $modules->getModule($module, false)->getVersion(); - $installed = \ltrim($installed, 'v'); // v0.6.0 VS 0.6.0 + $installed = ltrim($installed, 'v'); // v0.6.0 VS 0.6.0 if (preg_match('/^([<>=]+)\s*v?(\d+\.\d+\.\d+)$/', $required, $match)) { $operator = $match[1]; $vRequired = $match[2]; - if (\version_compare($installed, $vRequired, $operator)) { + if (version_compare($installed, $vRequired, $operator)) { continue; } } @@ -83,3 +30,5 @@ foreach ($this->getDependencies() as $module => $required) { include __DIR__ . '/run-missingdeps.php'; return; } + +include __DIR__ . '/register-hooks.php';