From 6786cc768fd405ea54be706c0ee0065605ee44a8 Mon Sep 17 00:00:00 2001 From: Thomas Gelf Date: Wed, 24 Nov 2021 11:56:18 +0100 Subject: [PATCH] Director: some fixes for PHP v8.1 refs #2435 --- library/Director/Core/CoreApi.php | 4 ++-- library/Director/Core/Json.php | 6 +++++- .../Director/CustomVariable/CustomVariableDictionary.php | 1 + library/Director/CustomVariable/CustomVariables.php | 6 ++++++ library/Director/Daemon/DaemonProcessState.php | 2 +- library/Director/Objects/IcingaObject.php | 2 +- library/Director/Objects/IcingaObjectGroups.php | 6 ++++++ library/Director/Objects/IcingaObjectImports.php | 6 ++++++ library/Director/Web/Controller/ActionController.php | 4 ++-- library/Director/Web/Form/QuickBaseForm.php | 4 ++++ library/Director/Web/Table/ActivityLogTable.php | 2 +- 11 files changed, 35 insertions(+), 8 deletions(-) diff --git a/library/Director/Core/CoreApi.php b/library/Director/Core/CoreApi.php index fbb8bea0..6b02a577 100644 --- a/library/Director/Core/CoreApi.php +++ b/library/Director/Core/CoreApi.php @@ -47,8 +47,8 @@ class CoreApi implements DeploymentApiInterface { $version = $this->getVersion(); - if (version_compare($version, '2.8.2', '>=') - && version_compare($version, '2.10.2', '<') + if ($version === null || (version_compare($version, '2.8.2', '>=') + && version_compare($version, '2.10.2', '<')) ) { $this->client->disconnect(); $this->client->setKeepAlive(false); diff --git a/library/Director/Core/Json.php b/library/Director/Core/Json.php index b1006c88..507349cf 100644 --- a/library/Director/Core/Json.php +++ b/library/Director/Core/Json.php @@ -8,7 +8,11 @@ class Json { public static function encode($mixed, $flags = null) { - $result = \json_encode($mixed, $flags); + if ($flags === null) { + $result = \json_encode($mixed); + } else { + $result = \json_encode($mixed, $flags); + } if ($result === false && json_last_error() !== JSON_ERROR_NONE) { throw JsonEncodeException::forLastJsonError(); diff --git a/library/Director/CustomVariable/CustomVariableDictionary.php b/library/Director/CustomVariable/CustomVariableDictionary.php index 45a29864..d84be4ff 100644 --- a/library/Director/CustomVariable/CustomVariableDictionary.php +++ b/library/Director/CustomVariable/CustomVariableDictionary.php @@ -89,6 +89,7 @@ class CustomVariableDictionary extends CustomVariable implements Countable return $keys; } + #[\ReturnTypeWillChange] public function count() { return count($this->value); diff --git a/library/Director/CustomVariable/CustomVariables.php b/library/Director/CustomVariable/CustomVariables.php index 848adb90..ca043aa0 100644 --- a/library/Director/CustomVariable/CustomVariables.php +++ b/library/Director/CustomVariable/CustomVariables.php @@ -69,6 +69,7 @@ class CustomVariables implements Iterator, Countable, IcingaConfigRenderer } } + #[\ReturnTypeWillChange] public function count() { $count = 0; @@ -81,11 +82,13 @@ class CustomVariables implements Iterator, Countable, IcingaConfigRenderer return $count; } + #[\ReturnTypeWillChange] public function rewind() { $this->position = 0; } + #[\ReturnTypeWillChange] public function current() { if (! $this->valid()) { @@ -95,16 +98,19 @@ class CustomVariables implements Iterator, Countable, IcingaConfigRenderer return $this->vars[$this->idx[$this->position]]; } + #[\ReturnTypeWillChange] public function key() { return $this->idx[$this->position]; } + #[\ReturnTypeWillChange] public function next() { ++$this->position; } + #[\ReturnTypeWillChange] public function valid() { return array_key_exists($this->position, $this->idx); diff --git a/library/Director/Daemon/DaemonProcessState.php b/library/Director/Daemon/DaemonProcessState.php index 8629c017..6ae3cd2e 100644 --- a/library/Director/Daemon/DaemonProcessState.php +++ b/library/Director/Daemon/DaemonProcessState.php @@ -60,7 +60,7 @@ class DaemonProcessState protected function refreshMessage() { $messageParts = []; - if (\strlen($this->state)) { + if ($this->state !== null && \strlen($this->state)) { $messageParts[] = $this->state; } foreach ($this->components as $component => $message) { diff --git a/library/Director/Objects/IcingaObject.php b/library/Director/Objects/IcingaObject.php index 18e212a5..f06c5516 100644 --- a/library/Director/Objects/IcingaObject.php +++ b/library/Director/Objects/IcingaObject.php @@ -782,7 +782,7 @@ abstract class IcingaObject extends DbObject implements IcingaConfigRenderer private function setUnresolvedRelation($key, $value) { - if (strlen($value) === 0) { + if ($value === null || strlen($value) === 0) { unset($this->unresolvedRelatedProperties[$key . '_id']); return parent::set($key . '_id', null); } diff --git a/library/Director/Objects/IcingaObjectGroups.php b/library/Director/Objects/IcingaObjectGroups.php index 76b98cec..8bef1b19 100644 --- a/library/Director/Objects/IcingaObjectGroups.php +++ b/library/Director/Objects/IcingaObjectGroups.php @@ -37,11 +37,13 @@ class IcingaObjectGroups implements Iterator, Countable, IcingaConfigRenderer } } + #[\ReturnTypeWillChange] public function count() { return count($this->groups); } + #[\ReturnTypeWillChange] public function rewind() { $this->position = 0; @@ -52,6 +54,7 @@ class IcingaObjectGroups implements Iterator, Countable, IcingaConfigRenderer return $this->modified; } + #[\ReturnTypeWillChange] public function current() { if (! $this->valid()) { @@ -61,16 +64,19 @@ class IcingaObjectGroups implements Iterator, Countable, IcingaConfigRenderer return $this->groups[$this->idx[$this->position]]; } + #[\ReturnTypeWillChange] public function key() { return $this->idx[$this->position]; } + #[\ReturnTypeWillChange] public function next() { ++$this->position; } + #[\ReturnTypeWillChange] public function valid() { return array_key_exists($this->position, $this->idx); diff --git a/library/Director/Objects/IcingaObjectImports.php b/library/Director/Objects/IcingaObjectImports.php index 75279683..334e8250 100644 --- a/library/Director/Objects/IcingaObjectImports.php +++ b/library/Director/Objects/IcingaObjectImports.php @@ -36,11 +36,13 @@ class IcingaObjectImports implements Iterator, Countable, IcingaConfigRenderer $this->object = $object; } + #[\ReturnTypeWillChange] public function count() { return count($this->imports); } + #[\ReturnTypeWillChange] public function rewind() { $this->position = 0; @@ -61,6 +63,7 @@ class IcingaObjectImports implements Iterator, Countable, IcingaConfigRenderer * @return IcingaObject|null * @throws \Icinga\Exception\NotFoundError */ + #[\ReturnTypeWillChange] public function current() { if (! $this->valid()) { @@ -72,16 +75,19 @@ class IcingaObjectImports implements Iterator, Countable, IcingaConfigRenderer ); } + #[\ReturnTypeWillChange] public function key() { return $this->idx[$this->position]; } + #[\ReturnTypeWillChange] public function next() { ++$this->position; } + #[\ReturnTypeWillChange] public function valid() { return array_key_exists($this->position, $this->idx); diff --git a/library/Director/Web/Controller/ActionController.php b/library/Director/Web/Controller/ActionController.php index 2cb1fbdf..6282a16c 100644 --- a/library/Director/Web/Controller/ActionController.php +++ b/library/Director/Web/Controller/ActionController.php @@ -2,6 +2,7 @@ namespace Icinga\Module\Director\Web\Controller; +use gipfl\Translation\StaticTranslator; use Icinga\Application\Benchmark; use Icinga\Data\Paginatable; use Icinga\Exception\NotFoundError; @@ -17,7 +18,6 @@ use Icinga\Web\UrlParams; use InvalidArgumentException; use gipfl\IcingaWeb2\Translator; use gipfl\IcingaWeb2\Link; -use gipfl\Translation\TranslationHelper; use gipfl\IcingaWeb2\Widget\ControlsAndContent; use gipfl\IcingaWeb2\Controller\Extension\ControlsAndContentHelper; use gipfl\IcingaWeb2\Zf1\SimpleViewRenderer; @@ -60,7 +60,7 @@ abstract class ActionController extends Controller implements ControlsAndContent protected function initializeTranslator() { - TranslationHelper::setTranslator(new Translator('director')); + StaticTranslator::set(new Translator('director')); } public function getAuth() diff --git a/library/Director/Web/Form/QuickBaseForm.php b/library/Director/Web/Form/QuickBaseForm.php index 4e7eb211..8d25ffba 100644 --- a/library/Director/Web/Form/QuickBaseForm.php +++ b/library/Director/Web/Form/QuickBaseForm.php @@ -155,6 +155,10 @@ abstract class QuickBaseForm extends Zend_Form implements ValidHtml protected function valueIsEmpty($value) { + if ($value === null) { + return true; + } + if (is_array($value)) { return empty($value); } diff --git a/library/Director/Web/Table/ActivityLogTable.php b/library/Director/Web/Table/ActivityLogTable.php index 90e85d9c..034a7aea 100644 --- a/library/Director/Web/Table/ActivityLogTable.php +++ b/library/Director/Web/Table/ActivityLogTable.php @@ -55,7 +55,7 @@ class ActivityLogTable extends ZfQueryBasedTable return $this::tr([ $this::td($this->makeLink($row))->setSeparator(' '), - $this::td(strftime('%H:%M:%S', $row->ts_change_time)) + $this::td(date('H:i:s', $row->ts_change_time)) ])->addAttributes(['class' => $action]); }