From b7554a5fc9ec29f59d006549ea9ae703fd28aa89 Mon Sep 17 00:00:00 2001 From: Steve Boyd Date: Wed, 13 Apr 2022 10:29:17 +1200 Subject: [PATCH] ENH PHP 8.1 compatibility --- src/Checks/CacheHeadersCheck.php | 22 +++++++++---------- src/Checks/ExternalURLCheck.php | 4 ++-- .../FileAccessibilityAndValidationCheck.php | 10 ++++----- src/Checks/FileAgeCheck.php | 8 +++---- src/Checks/FileWriteableCheck.php | 18 +++++++-------- src/Checks/HasClassCheck.php | 2 +- src/Checks/HasFunctionCheck.php | 2 +- src/Checks/SMTPConnectCheck.php | 4 ++-- src/Checks/SessionCheck.php | 2 +- src/Checks/SolrIndexCheck.php | 2 +- src/Checks/URLCheck.php | 2 +- src/EnvironmentChecker.php | 2 +- 12 files changed, 39 insertions(+), 39 deletions(-) diff --git a/src/Checks/CacheHeadersCheck.php b/src/Checks/CacheHeadersCheck.php index f42f174..371dff7 100644 --- a/src/Checks/CacheHeadersCheck.php +++ b/src/Checks/CacheHeadersCheck.php @@ -109,9 +109,9 @@ class CacheHeadersCheck implements EnvironmentCheck // Filter good messages $goodTypes = [ValidationResult::TYPE_GOOD, ValidationResult::TYPE_INFO]; $good = array_filter( - $this->result->getMessages(), + $this->result->getMessages() ?? [], function ($val, $key) use ($goodTypes) { - if (in_array($val['messageType'], $goodTypes)) { + if (in_array($val['messageType'], $goodTypes ?? [])) { return true; } return false; @@ -119,15 +119,15 @@ class CacheHeadersCheck implements EnvironmentCheck ARRAY_FILTER_USE_BOTH ); if (!empty($good)) { - $ret .= "GOOD: " . implode('; ', array_column($good, 'message')) . " "; + $ret .= "GOOD: " . implode('; ', array_column($good ?? [], 'message')) . " "; } // Filter bad messages $badTypes = [ValidationResult::TYPE_ERROR, ValidationResult::TYPE_WARNING]; $bad = array_filter( - $this->result->getMessages(), + $this->result->getMessages() ?? [], function ($val, $key) use ($badTypes) { - if (in_array($val['messageType'], $badTypes)) { + if (in_array($val['messageType'], $badTypes ?? [])) { return true; } return false; @@ -135,7 +135,7 @@ class CacheHeadersCheck implements EnvironmentCheck ARRAY_FILTER_USE_BOTH ); if (!empty($bad)) { - $ret .= "BAD: " . implode('; ', array_column($bad, 'message')); + $ret .= "BAD: " . implode('; ', array_column($bad ?? [], 'message')); } return $ret; } @@ -173,32 +173,32 @@ class CacheHeadersCheck implements EnvironmentCheck private function checkCacheControl(ResponseInterface $response) { $cacheControl = $response->getHeaderLine('Cache-Control'); - $vals = array_map('trim', explode(',', $cacheControl)); + $vals = array_map('trim', explode(',', $cacheControl ?? '')); $fullURL = Controller::join_links(Director::absoluteBaseURL(), $this->url); // All entries from must contain should be present - if ($this->mustInclude == array_intersect($this->mustInclude, $vals)) { + if ($this->mustInclude == array_intersect($this->mustInclude ?? [], $vals)) { $matched = implode(",", $this->mustInclude); $this->result->addMessage( "$fullURL includes all settings: {$matched}", ValidationResult::TYPE_GOOD ); } else { - $missing = implode(",", array_diff($this->mustInclude, $vals)); + $missing = implode(",", array_diff($this->mustInclude ?? [], $vals)); $this->result->addError( "$fullURL is excluding some settings: {$missing}" ); } // All entries from must exclude should not be present - if (empty(array_intersect($this->mustExclude, $vals))) { + if (empty(array_intersect($this->mustExclude ?? [], $vals))) { $missing = implode(",", $this->mustExclude); $this->result->addMessage( "$fullURL excludes all settings: {$missing}", ValidationResult::TYPE_GOOD ); } else { - $matched = implode(",", array_intersect($this->mustExclude, $vals)); + $matched = implode(",", array_intersect($this->mustExclude ?? [], $vals)); $this->result->addError( "$fullURL is including some settings: {$matched}" ); diff --git a/src/Checks/ExternalURLCheck.php b/src/Checks/ExternalURLCheck.php index 429cd46..443d4bc 100644 --- a/src/Checks/ExternalURLCheck.php +++ b/src/Checks/ExternalURLCheck.php @@ -37,7 +37,7 @@ class ExternalURLCheck implements EnvironmentCheck public function __construct($urls, $timeout = 15) { if ($urls) { - $this->urls = explode(' ', $urls); + $this->urls = explode(' ', $urls ?? ''); } $this->timeout = $timeout; } @@ -55,7 +55,7 @@ class ExternalURLCheck implements EnvironmentCheck foreach ($urls as $url) { $ch = curl_init(); $chs[] = $ch; - curl_setopt_array($ch, $this->getCurlOpts($url)); + curl_setopt_array($ch, $this->getCurlOpts($url) ?? []); } // Parallel execution for faster performance $mh = curl_multi_init(); diff --git a/src/Checks/FileAccessibilityAndValidationCheck.php b/src/Checks/FileAccessibilityAndValidationCheck.php index e86558f..abff14b 100644 --- a/src/Checks/FileAccessibilityAndValidationCheck.php +++ b/src/Checks/FileAccessibilityAndValidationCheck.php @@ -96,7 +96,7 @@ class FileAccessibilityAndValidationCheck implements EnvironmentCheck $files = $this->getFiles(); if ($files) { $fileTypeValidateFunc = $this->fileTypeValidateFunc; - if (method_exists($this, $fileTypeValidateFunc)) { + if (method_exists($this, $fileTypeValidateFunc ?? '')) { $invalidFiles = []; $validFiles = []; @@ -109,7 +109,7 @@ class FileAccessibilityAndValidationCheck implements EnvironmentCheck } // If at least one file was valid, count as passed - if ($this->checkType == self::CHECK_SINGLE && count($invalidFiles) < count($files)) { + if ($this->checkType == self::CHECK_SINGLE && count($invalidFiles ?? []) < count($files ?? [])) { $validFileList = PHP_EOL; foreach ($validFiles as $vf) { $validFileList .= $vf . PHP_EOL; @@ -130,7 +130,7 @@ class FileAccessibilityAndValidationCheck implements EnvironmentCheck ]; } } else { - if (count($invalidFiles) == 0) { + if (count($invalidFiles ?? []) == 0) { $checkReturn = [EnvironmentCheck::OK, 'All files valideted']; } else { $invalidFileList = PHP_EOL; @@ -180,7 +180,7 @@ class FileAccessibilityAndValidationCheck implements EnvironmentCheck */ private function jsonValidate($file) { - $json = json_decode(file_get_contents($file)); + $json = json_decode(file_get_contents($file ?? '') ?? ''); if (!$json) { return false; } @@ -204,6 +204,6 @@ class FileAccessibilityAndValidationCheck implements EnvironmentCheck */ protected function getFiles() { - return glob($this->path); + return glob($this->path ?? ''); } } diff --git a/src/Checks/FileAgeCheck.php b/src/Checks/FileAgeCheck.php index a1af3e2..ff7dea3 100644 --- a/src/Checks/FileAgeCheck.php +++ b/src/Checks/FileAgeCheck.php @@ -96,7 +96,7 @@ class FileAgeCheck implements EnvironmentCheck */ public function check() { - $cutoffTime = strtotime($this->relativeAge, DBDatetime::now()->Format('U')); + $cutoffTime = strtotime($this->relativeAge ?? '', DBDatetime::now()->Format('U')); $files = $this->getFiles(); $invalidFiles = []; $validFiles = []; @@ -127,10 +127,10 @@ class FileAgeCheck implements EnvironmentCheck } // If at least one file was valid, count as passed - if ($this->checkType == self::CHECK_SINGLE && count($invalidFiles) < count($files)) { + if ($this->checkType == self::CHECK_SINGLE && count($invalidFiles ?? []) < count($files ?? [])) { return [EnvironmentCheck::OK, '']; } - if (count($invalidFiles) == 0) { + if (count($invalidFiles ?? []) == 0) { return [EnvironmentCheck::OK, '']; } return [ @@ -146,6 +146,6 @@ class FileAgeCheck implements EnvironmentCheck */ protected function getFiles() { - return glob($this->path); + return glob($this->path ?? ''); } } diff --git a/src/Checks/FileWriteableCheck.php b/src/Checks/FileWriteableCheck.php index 700d3bf..2cda303 100644 --- a/src/Checks/FileWriteableCheck.php +++ b/src/Checks/FileWriteableCheck.php @@ -34,22 +34,22 @@ class FileWriteableCheck implements EnvironmentCheck if ($this->path[0] == '/') { $filename = $this->path; } else { - $filename = BASE_PATH . DIRECTORY_SEPARATOR . str_replace('/', DIRECTORY_SEPARATOR, $this->path); + $filename = BASE_PATH . DIRECTORY_SEPARATOR . str_replace('/', DIRECTORY_SEPARATOR, $this->path ?? ''); } - if (file_exists($filename)) { - $isWriteable = is_writeable($filename); + if (file_exists($filename ?? '')) { + $isWriteable = is_writeable($filename ?? ''); } else { - $isWriteable = is_writeable(dirname($filename)); + $isWriteable = is_writeable(dirname($filename ?? '')); } if (!$isWriteable) { if (function_exists('posix_getgroups')) { $userID = posix_geteuid(); - $user = posix_getpwuid($userID); + $user = posix_getpwuid($userID ?? 0); - $currentOwnerID = fileowner(file_exists($filename) ? $filename : dirname($filename)); - $currentOwner = posix_getpwuid($currentOwnerID); + $currentOwnerID = fileowner(file_exists($filename ?? '') ? $filename : dirname($filename ?? '')); + $currentOwner = posix_getpwuid($currentOwnerID ?? 0); $message = "User '$user[name]' needs to be able to write to this file:\n$filename\n\nThe file is " . "currently owned by '$currentOwner[name]'. "; @@ -60,8 +60,8 @@ class FileWriteableCheck implements EnvironmentCheck $groups = posix_getgroups(); $groupList = []; foreach ($groups as $group) { - $groupInfo = posix_getgrgid($group); - if (in_array($currentOwner['name'], $groupInfo['members'])) { + $groupInfo = posix_getgrgid($group ?? 0); + if (in_array($currentOwner['name'], $groupInfo['members'] ?? [])) { $groupList[] = $groupInfo['name']; } } diff --git a/src/Checks/HasClassCheck.php b/src/Checks/HasClassCheck.php index 17817ca..3c0d8bb 100644 --- a/src/Checks/HasClassCheck.php +++ b/src/Checks/HasClassCheck.php @@ -31,7 +31,7 @@ class HasClassCheck implements EnvironmentCheck */ public function check() { - if (class_exists($this->className)) { + if (class_exists($this->className ?? '')) { return [EnvironmentCheck::OK, 'Class ' . $this->className.' exists']; } return [EnvironmentCheck::ERROR, 'Class ' . $this->className.' doesn\'t exist']; diff --git a/src/Checks/HasFunctionCheck.php b/src/Checks/HasFunctionCheck.php index 5efb5c2..51bb441 100644 --- a/src/Checks/HasFunctionCheck.php +++ b/src/Checks/HasFunctionCheck.php @@ -31,7 +31,7 @@ class HasFunctionCheck implements EnvironmentCheck */ public function check() { - if (function_exists($this->functionName)) { + if (function_exists($this->functionName ?? '')) { return [EnvironmentCheck::OK, $this->functionName . '() exists']; } return [EnvironmentCheck::ERROR, $this->functionName . '() doesn\'t exist']; diff --git a/src/Checks/SMTPConnectCheck.php b/src/Checks/SMTPConnectCheck.php index 17ef079..6e60025 100644 --- a/src/Checks/SMTPConnectCheck.php +++ b/src/Checks/SMTPConnectCheck.php @@ -57,7 +57,7 @@ class SMTPConnectCheck implements EnvironmentCheck */ public function check() { - $f = @fsockopen($this->host, $this->port, $errno, $errstr, $this->timeout); + $f = @fsockopen($this->host ?? '', $this->port ?? 0, $errno, $errstr, $this->timeout); if (!$f) { return [ EnvironmentCheck::ERROR, @@ -67,7 +67,7 @@ class SMTPConnectCheck implements EnvironmentCheck fwrite($f, "HELO its_me\r\n"); $response = fread($f, 26); - if (substr($response, 0, 3) != '220') { + if (substr($response ?? '', 0, 3) != '220') { return [ EnvironmentCheck::ERROR, sprintf('Invalid mail server response: %s', $response) diff --git a/src/Checks/SessionCheck.php b/src/Checks/SessionCheck.php index 47a95bd..f6b9165 100644 --- a/src/Checks/SessionCheck.php +++ b/src/Checks/SessionCheck.php @@ -62,7 +62,7 @@ class SessionCheck implements EnvironmentCheck $cookies = $response->getHeader('Set-Cookie'); foreach ($cookies as $cookie) { - if (strpos($cookie, 'SESSID') !== false) { + if (strpos($cookie ?? '', 'SESSID') !== false) { $result = $cookie; } } diff --git a/src/Checks/SolrIndexCheck.php b/src/Checks/SolrIndexCheck.php index e411dce..94589be 100644 --- a/src/Checks/SolrIndexCheck.php +++ b/src/Checks/SolrIndexCheck.php @@ -43,7 +43,7 @@ class SolrIndexCheck implements EnvironmentCheck if (!empty($brokenCores)) { return [ EnvironmentCheck::ERROR, - 'The following indexes are unavailable: ' . implode($brokenCores, ', ') + 'The following indexes are unavailable: ' . implode($brokenCores ?? '', ', ') ]; } diff --git a/src/Checks/URLCheck.php b/src/Checks/URLCheck.php index 0011e13..9f96756 100644 --- a/src/Checks/URLCheck.php +++ b/src/Checks/URLCheck.php @@ -49,7 +49,7 @@ class URLCheck implements EnvironmentCheck EnvironmentCheck::ERROR, sprintf('Error retrieving "%s" (Code: %d)', $this->url, $response->getStatusCode()) ]; - } elseif ($this->testString && (strpos($response->getBody(), $this->testString) === false)) { + } elseif ($this->testString && (strpos($response->getBody() ?? '', $this->testString ?? '') === false)) { return [ EnvironmentCheck::WARNING, sprintf('Success retrieving "%s", but string "%s" not found', $this->url, $this->testString) diff --git a/src/EnvironmentChecker.php b/src/EnvironmentChecker.php index 4d1eb7c..d09faac 100644 --- a/src/EnvironmentChecker.php +++ b/src/EnvironmentChecker.php @@ -206,7 +206,7 @@ class EnvironmentChecker extends RequestHandler // output the result as JSON if requested if ($this->getRequest()->getExtension() == 'json' - || strpos($this->getRequest()->getHeader('Accept'), 'application/json') !== false + || strpos($this->getRequest()->getHeader('Accept') ?? '', 'application/json') !== false ) { $response->setBody($result->toJSON()); $response->addHeader('Content-Type', 'application/json');