Fix broken UI when trying to resolve an undefined `$macro$` (#5201)

fixes https://github.com/Icinga/icingaweb2/issues/5168
This commit is contained in:
Johannes Meyer 2024-08-07 11:50:22 +02:00 committed by GitHub
commit b370d9bd9f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 55 additions and 37 deletions

View File

@ -62,22 +62,35 @@ class Macro
*/
public static function resolveMacro($macro, $object)
{
if (isset(self::$icingaMacros[$macro]) && isset($object->{self::$icingaMacros[$macro]})) {
if (isset(self::$icingaMacros[$macro], $object->{self::$icingaMacros[$macro]})) {
return $object->{self::$icingaMacros[$macro]};
}
try {
$value = $object->$macro;
} catch (Exception $e) {
$objectName = $object->getName();
if ($object instanceof Service) {
$objectName = $object->getHost()->getName() . '!' . $objectName;
if ($object instanceof MonitoredObject) {
$objectName = $object instanceof Service
? $object->getHost()->getName() . '!' . $object->getName()
: $object->getName();
} else {
$host = 'host_name';
$service = 'service_description';
$objectName = isset($object->$service)
? $object->$service . '!' . $object->$host
: $object->$host;
}
$value = null;
Logger::debug('Unable to resolve macro "%s" on object "%s". An error occured: %s', $macro, $objectName, $e);
Logger::debug(
'Unable to resolve macro "%s" on object "%s". An error occurred: %s',
$macro,
$objectName,
$e
);
}
return $value !== null ? $value : $macro;
return $value ?? $macro;
}
}

View File

@ -400,11 +400,6 @@ parameters:
count: 2
path: library/Icinga/Web/Session/PhpSession.php
-
message: "#^Parameter \\#2 \\$timestamp of function date expects int, int\\|false given\\.$#"
count: 1
path: library/Icinga/Web/Widget/Chart/HistoryColorGrid.php
-
message: "#^Parameter \\#1 \\$str of function strtolower expects string, mixed given\\.$#"
count: 1

View File

@ -620,11 +620,6 @@ parameters:
count: 1
path: modules/setup/library/Setup/Web/Form/Validator/TokenValidator.php
-
message: "#^Parameter \\#1 \\$filename of function file_exists expects string, string\\|false given\\.$#"
count: 1
path: modules/test/application/clicommands/PhpCommand.php
-
message: "#^Parameter \\#1 \\$callback of function ob_start expects callable\\(\\)\\: mixed, null given\\.$#"
count: 1

View File

@ -430,6 +430,11 @@ parameters:
count: 1
path: application/controllers/ConfigController.php
-
message: "#^Parameter \\#1 \\$query of method Icinga\\\\Web\\\\Controller\\:\\:setupPaginationControl\\(\\) expects Icinga\\\\Data\\\\QueryInterface, null given\\.$#"
count: 1
path: application/controllers/ConfigController.php
-
message: "#^Parameter \\#2 \\$name of class Icinga\\\\Application\\\\Modules\\\\Module constructor expects string, mixed given\\.$#"
count: 1
@ -730,6 +735,11 @@ parameters:
count: 1
path: application/controllers/ListController.php
-
message: "#^Parameter \\#1 \\$query of method Icinga\\\\Web\\\\Controller\\:\\:setupPaginationControl\\(\\) expects Icinga\\\\Data\\\\QueryInterface, null given\\.$#"
count: 1
path: application/controllers/ListController.php
-
message: "#^Method Icinga\\\\Controllers\\\\ManageUserDevicesController\\:\\:deleteAction\\(\\) has no return type specified\\.$#"
count: 1
@ -950,6 +960,11 @@ parameters:
count: 1
path: application/controllers/RoleController.php
-
message: "#^Parameter \\#1 \\$query of method Icinga\\\\Web\\\\Controller\\:\\:setupPaginationControl\\(\\) expects Icinga\\\\Data\\\\QueryInterface, null given\\.$#"
count: 1
path: application/controllers/RoleController.php
-
message: "#^Parameter \\#1 \\$username of class Icinga\\\\User constructor expects string, mixed given\\.$#"
count: 1
@ -2552,6 +2567,11 @@ parameters:
-
message: "#^Access to an undefined property object\\:\\:\\$permissions\\.$#"
count: 2
path: application/forms/Security/RoleForm.php
-
message: "#^Access to an undefined property object\\:\\:\\$refusals\\.$#"
count: 1
path: application/forms/Security/RoleForm.php
@ -2565,16 +2585,6 @@ parameters:
count: 1
path: application/forms/Security/RoleForm.php
-
message: "#^Access to an undefined property object\\|object\\:\\:\\$permissions\\.$#"
count: 1
path: application/forms/Security/RoleForm.php
-
message: "#^Access to an undefined property object\\|object\\:\\:\\$refusals\\.$#"
count: 1
path: application/forms/Security/RoleForm.php
-
message: "#^Call to an undefined method Icinga\\\\Repository\\\\Repository\\:\\:update\\(\\)\\.$#"
count: 1
@ -9046,7 +9056,7 @@ parameters:
path: library/Icinga/File/Pdf.php
-
message: "#^Cannot access offset 0 on array\\<mixed, mixed\\>\\|false\\.$#"
message: "#^Cannot access offset 0 on array\\<mixed\\>\\|false\\.$#"
count: 1
path: library/Icinga/File/Storage/LocalFileStorage.php
@ -11405,11 +11415,6 @@ parameters:
count: 1
path: library/Icinga/Util/DirectoryIterator.php
-
message: "#^Parameter \\#1 \\$array of class ArrayIterator constructor expects array\\<int, string\\>, array\\<int, string\\>\\|false given\\.$#"
count: 1
path: library/Icinga/Util/DirectoryIterator.php
-
message: "#^Parameter \\#1 \\$path of static method Icinga\\\\Util\\\\DirectoryIterator\\:\\:isReadable\\(\\) expects string, string\\|false given\\.$#"
count: 1
@ -16855,11 +16860,6 @@ parameters:
count: 3
path: modules/migrate/library/Migrate/Config/UserDomainMigration.php
-
message: "#^Parameter \\#2 \\$filter of static method Icinga\\\\Data\\\\Filter\\\\Filter\\:\\:where\\(\\) expects string, int\\|string given\\.$#"
count: 3
path: modules/migrate/library/Migrate/Config/UserDomainMigration.php
-
message: "#^Property Icinga\\\\Module\\\\Migrate\\\\Config\\\\UserDomainMigration\\:\\:\\$fromDomain has no type specified\\.$#"
count: 1
@ -17665,6 +17665,11 @@ parameters:
count: 1
path: modules/monitoring/application/controllers/ShowController.php
-
message: "#^Parameter \\#1 \\$query of method Icinga\\\\Web\\\\Controller\\:\\:setupPaginationControl\\(\\) expects Icinga\\\\Data\\\\QueryInterface, null given\\.$#"
count: 1
path: modules/monitoring/application/controllers/ShowController.php
-
message: "#^Call to an undefined method Icinga\\\\Web\\\\View\\:\\:filteredUrl\\(\\)\\.$#"
count: 2
@ -23915,6 +23920,11 @@ parameters:
count: 1
path: modules/monitoring/library/Monitoring/Web/Controller/MonitoredObjectController.php
-
message: "#^Parameter \\#1 \\$query of method Icinga\\\\Web\\\\Controller\\:\\:setupPaginationControl\\(\\) expects Icinga\\\\Data\\\\QueryInterface, null given\\.$#"
count: 1
path: modules/monitoring/library/Monitoring/Web/Controller/MonitoredObjectController.php
-
message: "#^Parameter \\#2 \\.\\.\\.\\$values of function sprintf expects bool\\|float\\|int\\|string\\|null, mixed given\\.$#"
count: 1
@ -25545,6 +25555,11 @@ parameters:
count: 1
path: modules/test/application/clicommands/PhpCommand.php
-
message: "#^Parameter \\#1 \\$filename of function file_exists expects string, string\\|false given\\.$#"
count: 1
path: modules/test/application/clicommands/PhpCommand.php
-
message: "#^Parameter \\#1 \\$path of function realpath expects string, mixed given\\.$#"
count: 1