diff --git a/application/controllers/ConfigController.php b/application/controllers/ConfigController.php index 8e6febef..8a5e702d 100644 --- a/application/controllers/ConfigController.php +++ b/application/controllers/ConfigController.php @@ -370,7 +370,7 @@ class ConfigController extends ActionController $configs = $db->enumDeployedConfigs(); foreach (array($leftSum, $rightSum) as $sum) { - if (! array_key_exists($sum, $configs)) { + if ($sum && ! array_key_exists($sum, $configs)) { $configs[$sum] = substr($sum, 0, 7); } } diff --git a/application/controllers/SelfServiceController.php b/application/controllers/SelfServiceController.php index 6479a298..c3c9bb5a 100644 --- a/application/controllers/SelfServiceController.php +++ b/application/controllers/SelfServiceController.php @@ -275,7 +275,7 @@ class SelfServiceController extends ActionController // PluginsUrl => framework_plugins_url ]; $username = $settings->get('self-service/icinga_service_user'); - if ($username !== null && strlen($username) > 0) { + if ($username) { $params['icinga_service_user'] = $username; } @@ -404,7 +404,7 @@ class SelfServiceController extends ActionController { foreach ($keys as $key) { $value = $settings->get("self-service/$key"); - if (strlen($value)) { + if ($value) { $params[$key] = $value; } } diff --git a/application/forms/SyncCheckForm.php b/application/forms/SyncCheckForm.php index 8fb3bd0c..b180d3d3 100644 --- a/application/forms/SyncCheckForm.php +++ b/application/forms/SyncCheckForm.php @@ -55,7 +55,7 @@ class SyncCheckForm extends DirectorForm } elseif ($sum['modify'] > 1) { } */ - $html = '
' . print_r($sum, 1) . '
'; + $html = '
' . print_r($sum, true) . '
'; $this->addHtml($html); } elseif ($this->rule->get('sync_state') === 'in-sync') { diff --git a/application/views/helpers/FormDataFilter.php b/application/views/helpers/FormDataFilter.php index f4924d06..a62b906d 100644 --- a/application/views/helpers/FormDataFilter.php +++ b/application/views/helpers/FormDataFilter.php @@ -44,14 +44,16 @@ class Zend_View_Helper_FormDataFilter extends Zend_View_Helper_FormElement { $info = $this->_getInfo($name, $value, $attribs); extract($info); // id, name, value, attribs, options, listsep, disable - if (array_key_exists('columns', $attribs)) { - $this->setColumns($attribs['columns']); - unset($attribs['columns']); - } + if ($attribs) { + if (array_key_exists('columns', $attribs)) { + $this->setColumns($attribs['columns']); + unset($attribs['columns']); + } - if (array_key_exists('suggestionContext', $attribs)) { - $this->setSuggestionContext($attribs['suggestionContext']); - unset($attribs['suggestionContext']); + if (array_key_exists('suggestionContext', $attribs)) { + $this->setSuggestionContext($attribs['suggestionContext']); + unset($attribs['suggestionContext']); + } } // TODO: check for columns in attribs, preserve & remove them from the diff --git a/library/Director/Cli/ObjectCommand.php b/library/Director/Cli/ObjectCommand.php index ca68213d..ed99c149 100644 --- a/library/Director/Cli/ObjectCommand.php +++ b/library/Director/Cli/ObjectCommand.php @@ -428,7 +428,7 @@ class ObjectCommand extends Command } $stdin = file_get_contents('php://stdin'); - if (strlen($stdin) === 0) { + if (! $stdin) { return null; } diff --git a/library/Director/Core/CoreApi.php b/library/Director/Core/CoreApi.php index c1229665..73588c20 100644 --- a/library/Director/Core/CoreApi.php +++ b/library/Director/Core/CoreApi.php @@ -569,7 +569,7 @@ constants 'icon_image_alt' => 'icon_image_alt', ]; - if (version_compare($this->getVersion(), '2.8.0', '>=')) { + if (version_compare($this->getVersion() ?? '', '2.8.0', '>=')) { $params['flapping_threshold_high'] = 'flapping_threshold_high'; $params['flapping_threshold_low'] = 'flapping_threshold_low'; } diff --git a/library/Director/Core/LegacyDeploymentApi.php b/library/Director/Core/LegacyDeploymentApi.php index 7287c4a7..0ab77e03 100644 --- a/library/Director/Core/LegacyDeploymentApi.php +++ b/library/Director/Core/LegacyDeploymentApi.php @@ -128,6 +128,10 @@ class LegacyDeploymentApi implements DeploymentApiInterface if (file_exists($path)) { if (is_link($path)) { $linkTarget = readlink($path); + if (! $linkTarget) { + throw new IcingaException('Failed to read symlink'); + } + $linkTargetDir = dirname($linkTarget); $linkTargetName = basename($linkTarget); @@ -165,7 +169,7 @@ class LegacyDeploymentApi implements DeploymentApiInterface $this->assertDeploymentPath(); $dh = @opendir($this->deploymentPath); - if ($dh === null) { + if ($dh === false) { throw new IcingaException('Can not list contents of %s', $this->deploymentPath); } @@ -279,7 +283,7 @@ class LegacyDeploymentApi implements DeploymentApiInterface $this->mkdir(dirname($fullPath), true); $fh = @fopen($fullPath, 'w'); - if ($fh === null) { + if ($fh === false) { throw new IcingaException('Could not open file "%s" for writing.', $fullPath); } chmod($fullPath, $this->file_mode); @@ -334,7 +338,7 @@ class LegacyDeploymentApi implements DeploymentApiInterface protected function listDirectoryContents($path, $depth = 0) { $dh = @opendir($path); - if ($dh === null) { + if ($dh === false) { throw new IcingaException('Can not list contents of %s', $path); } diff --git a/library/Director/Daemon/BackgroundDaemon.php b/library/Director/Daemon/BackgroundDaemon.php index 34cc28b7..2d8a29c5 100644 --- a/library/Director/Daemon/BackgroundDaemon.php +++ b/library/Director/Daemon/BackgroundDaemon.php @@ -104,7 +104,7 @@ class BackgroundDaemon try { $uuid = \bin2hex(Uuid::uuid4()->getBytes()); } catch (Exception $e) { - $uuid = 'deadc0de' . \substr(\md5(\getmypid()), 0, 24); + $uuid = 'deadc0de' . substr(md5((string) getmypid()), 0, 24); } } $processDetails = new DaemonProcessDetails($uuid); diff --git a/library/Director/DirectorObject/ObjectPurgeHelper.php b/library/Director/DirectorObject/ObjectPurgeHelper.php index a043965d..5e507271 100644 --- a/library/Director/DirectorObject/ObjectPurgeHelper.php +++ b/library/Director/DirectorObject/ObjectPurgeHelper.php @@ -44,11 +44,11 @@ class ObjectPurgeHelper // TODO: this is object-specific and to be found in the ::import() function! unset($properties['fields']); $object = $class::fromPlainObject($properties); - } elseif (\get_class($object) !== $class) { + } elseif (get_class($object) !== $class) { throw new InvalidArgumentException( 'Can keep only matching objects, expected "%s", got "%s', $class, - \get_class($keep) + get_class($object) ); } $key = []; diff --git a/library/Director/Import/ImportSourceRestApi.php b/library/Director/Import/ImportSourceRestApi.php index dc772e1e..45f7351a 100644 --- a/library/Director/Import/ImportSourceRestApi.php +++ b/library/Director/Import/ImportSourceRestApi.php @@ -69,6 +69,7 @@ class ImportSourceRestApi extends ImportSourceHook $data = $result; foreach ($parts as $part) { // un-escape any dots + /** @var string $part */ $part = preg_replace('~\\\\.~', '.', $part); if (property_exists($data, $part)) { diff --git a/library/Director/Objects/IcingaCommand.php b/library/Director/Objects/IcingaCommand.php index 81cac9ed..8c5aed0e 100644 --- a/library/Director/Objects/IcingaCommand.php +++ b/library/Director/Objects/IcingaCommand.php @@ -127,10 +127,8 @@ class IcingaCommand extends IcingaObject implements ObjectWithArguments, ExportI // return $value; } - if (self::$pluginDir !== null) { - if (($pos = strpos($value, self::$pluginDir)) === 0) { - $value = substr($value, strlen(self::$pluginDir) + 1); - } + if (isset($value, self::$pluginDir) && strpos($value, self::$pluginDir) === 0) { + $value = substr($value, strlen(self::$pluginDir) + 1); } return $value; diff --git a/library/Director/PropertyModifier/PropertyModifierGetHostByName.php b/library/Director/PropertyModifier/PropertyModifierGetHostByName.php index 36884e85..d7921dea 100644 --- a/library/Director/PropertyModifier/PropertyModifierGetHostByName.php +++ b/library/Director/PropertyModifier/PropertyModifierGetHostByName.php @@ -34,7 +34,8 @@ class PropertyModifierGetHostByName extends PropertyModifierHook } $host = gethostbyname($value); - if (strlen(@inet_pton($host)) !== 4) { + $inAddr = inet_pton($host); + if (! $inAddr || strlen($inAddr) !== 4) { switch ($this->getSetting('on_failure')) { case 'null': return null; diff --git a/library/Director/ProvidedHook/IcingaDbCubeLinks.php b/library/Director/ProvidedHook/IcingaDbCubeLinks.php index 234f61fb..f3fe4029 100644 --- a/library/Director/ProvidedHook/IcingaDbCubeLinks.php +++ b/library/Director/ProvidedHook/IcingaDbCubeLinks.php @@ -7,6 +7,7 @@ use Icinga\Exception\ProgrammingError; use Icinga\Module\Cube\Hook\IcingaDbActionsHook; use Icinga\Module\Cube\IcingaDb\IcingaDbCube; use Icinga\Module\Cube\IcingaDb\IcingaDbHostStatusCube; +use ipl\Stdlib\Filter\Condition; class IcingaDbCubeLinks extends IcingaDbActionsHook { @@ -25,17 +26,19 @@ class IcingaDbCubeLinks extends IcingaDbActionsHook if ($filterChain->count() === 1) { $url = 'director/host/edit?'; - $params = ['name' => $filterChain->getIterator()->current()->getValue()]; + /** @var Condition $rule */ + $rule = $filterChain->getIterator()->current(); + /** @var string $name */ + $name = $rule->getValue(); + $params = ['name' => $name]; $title = t('Modify a host'); - $description = sprintf( - t('This allows you to modify properties for "%s"'), - $filterChain->getIterator()->current()->getValue() - ); + $description = sprintf(t('This allows you to modify properties for "%s"'), $name); } else { $params = null; $urlFilter = Filter::matchAny(); + /** @var Condition $filter */ foreach ($filterChain as $filter) { $urlFilter->addFilter( Filter::matchAny( diff --git a/library/Director/RestApi/RestApiParams.php b/library/Director/RestApi/RestApiParams.php index c237ac51..741eeed1 100644 --- a/library/Director/RestApi/RestApiParams.php +++ b/library/Director/RestApi/RestApiParams.php @@ -19,8 +19,9 @@ class RestApiParams } $exporter->enableHostServices(); } + /** @var ?string $properties */ $properties = $params->shift('properties'); - if ($properties !== null && strlen($properties)) { + if ($properties) { $exporter->filterProperties(preg_split('/\s*,\s*/', $properties, -1, PREG_SPLIT_NO_EMPTY)); } $exporter->resolveObjects($resolved); diff --git a/library/Director/StartupLogRenderer.php b/library/Director/StartupLogRenderer.php index d9b532a7..9d5810fe 100644 --- a/library/Director/StartupLogRenderer.php +++ b/library/Director/StartupLogRenderer.php @@ -33,7 +33,9 @@ class StartupLogRenderer implements ValidHtml // len [stage] + 1 $markReplace = ' ^'; - foreach (preg_split('/\n/', $log) as $line) { + /** @var string[] $logLines */ + $logLines = preg_split('/\n/', $log); + foreach ($logLines as $line) { if (preg_match('/^\[([\d\s\:\+\-]+)\]\s/', $line, $m)) { $time = $m[1]; // TODO: we might use new DateTime($time) and show a special "timeAgo" diff --git a/library/Director/Web/Controller/ObjectsController.php b/library/Director/Web/Controller/ObjectsController.php index c45ef021..c4c96c5b 100644 --- a/library/Director/Web/Controller/ObjectsController.php +++ b/library/Director/Web/Controller/ObjectsController.php @@ -85,8 +85,9 @@ abstract class ObjectsController extends ActionController } elseif ($request->getActionName() === 'applyrules') { $table->filterObjectType('apply'); } + /** @var ?string $search */ $search = $this->params->get('q'); - if ($search !== null && \strlen($search) > 0) { + if ($search) { $table->search($search); } diff --git a/library/Director/Web/Form/CsrfToken.php b/library/Director/Web/Form/CsrfToken.php index 24edf88f..f6c29ec9 100644 --- a/library/Director/Web/Form/CsrfToken.php +++ b/library/Director/Web/Form/CsrfToken.php @@ -17,7 +17,7 @@ class CsrfToken return false; } - list($seed, $token) = explode('|', $elementValue); + list($seed, $token) = explode('|', $token); if (!is_numeric($seed)) { return false; diff --git a/library/Director/Web/Form/DbSelectorForm.php b/library/Director/Web/Form/DbSelectorForm.php index 52fe5ea3..8b4f4323 100644 --- a/library/Director/Web/Form/DbSelectorForm.php +++ b/library/Director/Web/Form/DbSelectorForm.php @@ -69,7 +69,7 @@ class DbSelectorForm extends Form $params = []; } - if (array_key_exists($name, $params)) { + if (is_array($params) && array_key_exists($name, $params)) { return $params[$name]; } diff --git a/library/Director/Web/Form/DirectorObjectForm.php b/library/Director/Web/Form/DirectorObjectForm.php index 85562468..abbd4f09 100644 --- a/library/Director/Web/Form/DirectorObjectForm.php +++ b/library/Director/Web/Form/DirectorObjectForm.php @@ -791,7 +791,9 @@ abstract class DirectorObjectForm extends DirectorForm return; } - $post = $values = $this->getRequest()->getPost(); + /** @var array $post */ + $post = $this->getRequest()->getPost(); + $values = $post; foreach ($post as $key => $value) { if (preg_match('/^(.+?)_(\d+)__(MOVE_DOWN|MOVE_UP|REMOVE)$/', $key, $m)) { @@ -1519,6 +1521,7 @@ abstract class DirectorObjectForm extends DirectorForm return []; } + /** @var int|string $id */ $id = $object->get('id'); if (array_key_exists($id, $tpl)) { diff --git a/library/Director/Web/Widget/IcingaObjectInspection.php b/library/Director/Web/Widget/IcingaObjectInspection.php index 61f35671..d9cf69dd 100644 --- a/library/Director/Web/Widget/IcingaObjectInspection.php +++ b/library/Director/Web/Widget/IcingaObjectInspection.php @@ -205,7 +205,7 @@ class IcingaObjectInspection extends BaseHtmlElement $this->add(Html::tag('p')->add(Html::sprintf( 'The configuration for this object has been rendered by Icinga' . ' Director %s to %s', - DateFormatter::timeAgo(strtotime($deployment->start_time, false)), + DateFormatter::timeAgo(strtotime($deployment->start_time)), $this->linkToSourceLocation($deployment, $source) ))); }