From 2a4985cd46e2aece0111166cb74f04c152ee6c64 Mon Sep 17 00:00:00 2001
From: Hypolite Petovan
Date: Sat, 19 Nov 2022 19:07:43 -0500
Subject: [PATCH 1/4] Fix database connection with sockets
- Reformat Database\Database.php file
- Reformat and fix spelling in static/defaults.config.php file
---
src/Database/Database.php | 124 +++++++++++++++++++------------------
static/defaults.config.php | 47 +++++++-------
2 files changed, 88 insertions(+), 83 deletions(-)
diff --git a/src/Database/Database.php b/src/Database/Database.php
index 79c39e9af..a34b17adb 100644
--- a/src/Database/Database.php
+++ b/src/Database/Database.php
@@ -43,12 +43,12 @@ use Psr\Log\NullLogger;
*/
class Database
{
- const PDO = 'pdo';
+ const PDO = 'pdo';
const MYSQLI = 'mysqli';
const INSERT_DEFAULT = 0;
- const INSERT_UPDATE = 1;
- const INSERT_IGNORE = 2;
+ const INSERT_UPDATE = 1;
+ const INSERT_IGNORE = 2;
protected $connected = false;
@@ -64,18 +64,18 @@ class Database
* @var LoggerInterface
*/
protected $logger;
- protected $server_info = '';
+ protected $server_info = '';
/** @var PDO|mysqli */
protected $connection;
protected $driver = '';
protected $pdo_emulate_prepares = false;
- private $error = '';
- private $errorno = 0;
- private $affected_rows = 0;
+ private $error = '';
+ private $errorno = 0;
+ private $affected_rows = 0;
protected $in_transaction = false;
- protected $in_retrial = false;
- protected $testmode = false;
- private $relation = [];
+ protected $in_retrial = false;
+ protected $testmode = false;
+ private $relation = [];
/** @var DbaDefinition */
protected $dbaDefinition;
/** @var ViewDefinition */
@@ -112,23 +112,22 @@ class Database
$port = 0;
$serveraddr = trim($this->configCache->get('database', 'hostname'));
$serverdata = explode(':', $serveraddr);
- $server = $serverdata[0];
+ $host = trim($serverdata[0]);
if (count($serverdata) > 1) {
$port = trim($serverdata[1]);
}
- if (!empty(trim($this->configCache->get('database', 'port')))) {
- $port = trim($this->configCache->get('database', 'port'));
+ if (trim($this->configCache->get('database', 'port') ?? 0)) {
+ $port = trim($this->configCache->get('database', 'port') ?? 0);
}
- $server = trim($server);
- $user = trim($this->configCache->get('database', 'username'));
- $pass = trim($this->configCache->get('database', 'password'));
- $db = trim($this->configCache->get('database', 'database'));
- $charset = trim($this->configCache->get('database', 'charset'));
- $socket = trim($this->configCache->get('database', 'socket'));
+ $user = trim($this->configCache->get('database', 'username'));
+ $pass = trim($this->configCache->get('database', 'password'));
+ $database = trim($this->configCache->get('database', 'database'));
+ $charset = trim($this->configCache->get('database', 'charset'));
+ $socket = trim($this->configCache->get('database', 'socket'));
- if (!(strlen($server) && strlen($user))) {
+ if (!$host && !$socket || !$user) {
return false;
}
@@ -138,19 +137,20 @@ class Database
if (!$this->configCache->get('database', 'disable_pdo') && class_exists('\PDO') && in_array('mysql', PDO::getAvailableDrivers())) {
$this->driver = self::PDO;
- $connect = "mysql:host=" . $server . ";dbname=" . $db;
-
- if ($port > 0) {
- $connect .= ";port=" . $port;
+ if ($socket) {
+ $connect = 'mysql:unix_socket=' . $socket;
+ } else {
+ $connect = 'mysql:host=' . $host;
+ if ($port > 0) {
+ $connect .= ';port=' . $port;
+ }
}
if ($charset) {
- $connect .= ";charset=" . $charset;
+ $connect .= ';charset=' . $charset;
}
- if ($socket) {
- $connect .= ";$unix_socket=" . $socket;
- }
+ $connect .= ';dbname=' . $database;
try {
$this->connection = @new PDO($connect, $user, $pass, [PDO::ATTR_PERSISTENT => $persistent]);
@@ -165,10 +165,12 @@ class Database
if (!$this->connected && class_exists('\mysqli')) {
$this->driver = self::MYSQLI;
- if ($port > 0) {
- $this->connection = @new mysqli($server, $user, $pass, $db, $port);
+ if ($socket) {
+ $this->connection = @new mysqli(null, $user, $pass, $database, null, $socket);
+ } elseif ($port > 0) {
+ $this->connection = @new mysqli($host, $user, $pass, $database, $port);
} else {
- $this->connection = @new mysqli($server, $user, $pass, $db);
+ $this->connection = @new mysqli($host, $user, $pass, $database);
}
if (!mysqli_connect_errno()) {
@@ -177,11 +179,6 @@ class Database
if ($charset) {
$this->connection->set_charset($charset);
}
-
- if ($socket) {
- $this->connection->set_socket($socket);
- }
-
}
}
@@ -198,6 +195,7 @@ class Database
{
$this->testmode = $test;
}
+
/**
* Sets the logger for DBA
*
@@ -222,6 +220,7 @@ class Database
{
$this->profiler = $profiler;
}
+
/**
* Disconnects the current database connection
*/
@@ -338,12 +337,12 @@ class Database
}
$watchlist = explode(',', $this->configCache->get('system', 'db_log_index_watch'));
- $denylist = explode(',', $this->configCache->get('system', 'db_log_index_denylist'));
+ $denylist = explode(',', $this->configCache->get('system', 'db_log_index_denylist'));
while ($row = $this->fetch($r)) {
if ((intval($this->configCache->get('system', 'db_loglimit_index')) > 0)) {
$log = (in_array($row['key'], $watchlist) &&
- ($row['rows'] >= intval($this->configCache->get('system', 'db_loglimit_index'))));
+ ($row['rows'] >= intval($this->configCache->get('system', 'db_loglimit_index'))));
} else {
$log = false;
}
@@ -358,11 +357,15 @@ class Database
if ($log) {
$backtrace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS);
- @file_put_contents($this->configCache->get('system', 'db_log_index'), DateTimeFormat::utcNow() . "\t" .
- $row['key'] . "\t" . $row['rows'] . "\t" . $row['Extra'] . "\t" .
- basename($backtrace[1]["file"]) . "\t" .
- $backtrace[1]["line"] . "\t" . $backtrace[2]["function"] . "\t" .
- substr($query, 0, 4000) . "\n", FILE_APPEND);
+ @file_put_contents(
+ $this->configCache->get('system', 'db_log_index'),
+ DateTimeFormat::utcNow() . "\t" .
+ $row['key'] . "\t" . $row['rows'] . "\t" . $row['Extra'] . "\t" .
+ basename($backtrace[1]["file"]) . "\t" .
+ $backtrace[1]["line"] . "\t" . $backtrace[2]["function"] . "\t" .
+ substr($query, 0, 4000) . "\n",
+ FILE_APPEND
+ );
}
}
}
@@ -449,7 +452,7 @@ class Database
{
$server_info = $this->serverInfo();
if (version_compare($server_info, '5.7.5', '<') ||
- (stripos($server_info, 'MariaDB') !== false)) {
+ (stripos($server_info, 'MariaDB') !== false)) {
$sql = str_ireplace('ANY_VALUE(', 'MIN(', $sql);
}
return $sql;
@@ -647,7 +650,7 @@ class Database
} elseif (is_string($args[$param])) {
$param_types .= 's';
} elseif (is_object($args[$param]) && method_exists($args[$param], '__toString')) {
- $param_types .= 's';
+ $param_types .= 's';
$args[$param] = (string)$args[$param];
} else {
$param_types .= 'b';
@@ -743,10 +746,14 @@ class Database
$duration = round($duration, 3);
$backtrace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS);
- @file_put_contents($this->configCache->get('system', 'db_log'), DateTimeFormat::utcNow() . "\t" . $duration . "\t" .
- basename($backtrace[1]["file"]) . "\t" .
- $backtrace[1]["line"] . "\t" . $backtrace[2]["function"] . "\t" .
- substr($this->replaceParameters($sql, $args), 0, 4000) . "\n", FILE_APPEND);
+ @file_put_contents(
+ $this->configCache->get('system', 'db_log'),
+ DateTimeFormat::utcNow() . "\t" . $duration . "\t" .
+ basename($backtrace[1]["file"]) . "\t" .
+ $backtrace[1]["line"] . "\t" . $backtrace[2]["function"] . "\t" .
+ substr($this->replaceParameters($sql, $args), 0, 4000) . "\n",
+ FILE_APPEND
+ );
}
}
return $retval;
@@ -1365,7 +1372,7 @@ class Database
. $condition_string;
// Combines the updated fields parameter values with the condition parameter values
- $params = array_merge(array_values($fields), $condition);
+ $params = array_merge(array_values($fields), $condition);
return $this->e($sql, $params);
}
@@ -1415,8 +1422,8 @@ class Database
/**
* Escape fields, adding special treatment for "group by" handling
*
- * @param array $fields
- * @param array $options
+ * @param array $fields
+ * @param array $options
* @return array Escaped fields
*/
private function escapeFields(array $fields, array $options): array
@@ -1438,8 +1445,7 @@ class Database
}
}
- array_walk($fields, function(&$value, $key) use ($options)
- {
+ array_walk($fields, function (&$value, $key) use ($options) {
$field = $value;
$value = DBA::quoteIdentifier($field);
@@ -1487,7 +1493,7 @@ class Database
}
if (count($fields) > 0) {
- $fields = $this->escapeFields($fields, $params);
+ $fields = $this->escapeFields($fields, $params);
$select_string = implode(', ', $fields);
} else {
$select_string = '*';
@@ -1827,16 +1833,16 @@ class Database
/**
* Replaces a string in the provided fields of the provided table
*
- * @param string $table Table name
- * @param array $fields List of field names in the provided table
- * @param string $search String to search for
+ * @param string $table Table name
+ * @param array $fields List of field names in the provided table
+ * @param string $search String to search for
* @param string $replace String to replace with
* @return void
* @throws \Exception
*/
public function replaceInTableFields(string $table, array $fields, string $search, string $replace)
{
- $search = $this->escape($search);
+ $search = $this->escape($search);
$replace = $this->escape($replace);
$upd = [];
diff --git a/static/defaults.config.php b/static/defaults.config.php
index a6c98abd1..a8fe5f868 100644
--- a/static/defaults.config.php
+++ b/static/defaults.config.php
@@ -38,12 +38,12 @@ return [
'port' => null,
// socket (String)
- // Socket of the database server.
- // Can be used instead of adding a socket location to the hostname
- 'socket' => '',
+ // Socket of the database server.
+ // Can be used instead of adding a socket location to the hostname
+ 'socket' => '',
// user (String)
- // Database user name. Please don't use "root".
+ // Database username. Please don't use "root".
'username' => '',
// pass (String)
@@ -64,7 +64,7 @@ return [
'pdo_emulate_prepares' => true,
// disable_pdo (Boolean)
- // PDO is used by default (if available). Otherwise MySQLi will be used.
+ // PDO is used by default (if available). Otherwise, MySQLi will be used.
'disable_pdo' => false,
// persistent (Boolean)
@@ -145,7 +145,7 @@ return [
'block_local_dir' => false,
// blocked_tags (String)
- // Comma separated list of hash tags that shouldn't be displayed in the trending tags
+ // Comma separated list of hashtags that shouldn't be displayed in the trending tags
'blocked_tags' => '',
// community_no_sharer (Boolean)
@@ -153,7 +153,7 @@ return [
'community_no_sharer' => false,
// contact_update_limit (Integer)
- // How much contacts should be checked at a time?
+ // How many contacts should be checked at a time?
'contact_update_limit' => 100,
// cron_interval (Integer)
@@ -259,7 +259,7 @@ return [
'disable_implicit_mentions' => false,
// disable_url_validation (Boolean)
- // Disables the DNS lookup of an URL.
+ // Disables the DNS lookup of a URL.
'disable_url_validation' => false,
// disable_password_exposed (Boolean)
@@ -283,7 +283,7 @@ return [
'dlogip' => '',
// expire-notify-priority (integer)
- // Priority for the expirary notification
+ // Priority for the expirary notification
'expire-notify-priority' => Friendica\Core\Worker::PRIORITY_LOW,
// fetch_by_worker (Boolean)
@@ -300,11 +300,11 @@ return [
// groupedit_image_limit (Integer)
// Number of contacts at which the group editor should switch from display the profile pictures of the contacts to only display the names.
- // This can alternatively be set on a per account basis in the pconfig table.
+ // This can alternatively be set on a per-account basis in the pconfig table.
'groupedit_image_limit' => 400,
// gserver_update_limit (Integer)
- // How much servers should be checked at a time?
+ // How many servers should be checked at a time?
'gserver_update_limit' => 100,
// hsts (Boolean)
@@ -330,7 +330,7 @@ return [
'ipv4_resolve' => false,
// invitation_only (Boolean)
- // If set true registration is only possible after a current member of the node has send an invitation.
+ // If set true registration is only possible after a current member of the node has sent an invitation.
'invitation_only' => false,
// itemspage_network (Integer)
@@ -343,7 +343,7 @@ return [
'itemspage_network_mobile' => 20,
// jpeg_quality (Integer)
- //
+ //
// Lower numbers save space at cost of image detail
// where n is between 1 and 100, and with very poor results below about 50
'jpeg_quality' => 100,
@@ -415,13 +415,13 @@ return [
// max_image_length (Integer)
// An alternate way of limiting picture upload sizes.
- // Specify the maximum pixel length that pictures are allowed to be (for non-square pictures, it will apply to the longest side).
+ // Specify the maximum pixel length that pictures are allowed to be (for non-square pictures, it will apply to the longest side).
// Pictures longer than this length will be resized to be this length (on the longest side, the other side will be scaled appropriately).
// If you don't want to set a maximum length, set to -1.
'max_image_length' => -1,
// max_likers (Integer)
- // Maximum number of "people who like (or don't like) this" that we will list by name
+ // Maximum number of "people who like (or don't like) this" that we will list by name
'max_likers' => 75,
// max_processes_backend (Integer)
@@ -471,7 +471,7 @@ return [
'no_oembed' => false,
// no_redirect_list (Array)
- // List of domains where HTTP redirects should be ignored.
+ // List of domains where HTTP redirects should be ignored.
'no_redirect_list' => [],
// no_smilies (Boolean)
@@ -483,7 +483,7 @@ return [
'paranoia' => false,
// permit_crawling (Boolean)
- // Restricts the search for not logged in users to one search per minute.
+ // Restricts the search for not logged-in users to one search per minute.
'permit_crawling' => false,
// pidfile (Path)
@@ -491,7 +491,7 @@ return [
'pidfile' => '',
// png_quality (Integer)
- // Sets the ImageMagick compression level for PNG images. Values ranges from 0 (uncompressed) to 9 (most compressed).
+ // Sets the ImageMagick compression level for PNG images. Values range from 0 (uncompressed) to 9 (most compressed).
'png_quality' => 8,
// profiler (Boolean)
@@ -568,11 +568,11 @@ return [
'set_creation_date' => false,
// show_global_community_hint (Boolean)
- // When the global community page is enabled, use this option to display a hint above the stream, that this is a collection of all public top-level postings that arrive on your node.
+ // When the global community page is enabled, use this option to display a hint above the stream, that this is a collection of all public top-level postings that arrive at your node.
'show_global_community_hint' => false,
// show_received (Boolean)
- // Show the receive data along with the post creation date
+ // Show the received date along with the post creation date
'show_received' => true,
// show_received_seconds (Integer)
@@ -609,13 +609,13 @@ return [
// username_min_length (Integer)
// The minimum character length a username can be.
- // This length is check once the username has been trimmed and multiple spaces have been collapsed into one.
+ // This length is checked once the username has been trimmed and multiple spaces have been collapsed into one.
// Minimum for this config value is 1. Maximum is 64 as the resulting profile URL mustn't be longer than 255 chars.
'username_min_length' => 3,
// username_max_length (Integer)
// The maximum character length a username can be.
- // This length is check once the username has been trimmed and multiple spaces have been collapsed into one.
+ // This length is checked once the username has been trimmed and multiple spaces have been collapsed into one.
// Minimum for this config value is 1. Maximum is 64 as the resulting profile URL mustn't be longer than 255 chars.
'username_max_length' => 48,
@@ -738,8 +738,7 @@ return [
'config_dir' => 'view/smarty3',
// use_sub_dirs (Boolean)
- // By default the template cache is stored in several sub directories.
- //
+ // By default the template cache is stored in several subdirectories.
'use_sub_dirs' => true,
],
];
From a147038c2eb4685c101a207289d0ec71f6a0efec Mon Sep 17 00:00:00 2001
From: Hypolite Petovan
Date: Sat, 19 Nov 2022 19:08:44 -0500
Subject: [PATCH 2/4] Ensure IEMail::getMessage returns a string
---
src/Object/EMail/IEmail.php | 2 +-
src/Object/Email.php | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/Object/EMail/IEmail.php b/src/Object/EMail/IEmail.php
index f1e66a224..9fd1fe3da 100644
--- a/src/Object/EMail/IEmail.php
+++ b/src/Object/EMail/IEmail.php
@@ -80,7 +80,7 @@ interface IEmail extends JsonSerializable
*
* @return string
*/
- function getMessage(bool $plain = false);
+ function getMessage(bool $plain = false): string;
/**
* Gets the additional mail header array
diff --git a/src/Object/Email.php b/src/Object/Email.php
index 57eb0c17e..4d5a11715 100644
--- a/src/Object/Email.php
+++ b/src/Object/Email.php
@@ -110,12 +110,12 @@ class Email implements IEmail
/**
* {@inheritDoc}
*/
- public function getMessage(bool $plain = false)
+ public function getMessage(bool $plain = false): string
{
if ($plain) {
return $this->msgText;
} else {
- return $this->msgHtml;
+ return $this->msgHtml ?? '';
}
}
From 6f93ee7e49fc555e10a008e04567cd72105533dc Mon Sep 17 00:00:00 2001
From: Hypolite Petovan
Date: Sat, 19 Nov 2022 19:10:02 -0500
Subject: [PATCH 3/4] Fix various PHP 8 deprecations
---
src/Content/Nav.php | 8 ++------
src/Model/APContact.php | 4 ++--
src/Model/Item.php | 4 ++--
src/Model/Post/Media.php | 4 ++--
src/Module/Home.php | 2 +-
src/Network/HTTPClient/Client/HttpClient.php | 2 +-
src/Protocol/Diaspora.php | 2 +-
src/Render/FriendicaSmartyEngine.php | 2 +-
src/Worker/Notifier.php | 2 +-
view/theme/frio/php/PHPColors/Color.php | 12 ++++++------
10 files changed, 19 insertions(+), 23 deletions(-)
diff --git a/src/Content/Nav.php b/src/Content/Nav.php
index 0000b3d29..cb2edb4eb 100644
--- a/src/Content/Nav.php
+++ b/src/Content/Nav.php
@@ -244,12 +244,8 @@ class Nav
}
$gdirpath = 'directory';
-
- if (strlen(DI::config()->get('system', 'singleuser'))) {
- $gdir = DI::config()->get('system', 'directory');
- if (strlen($gdir)) {
- $gdirpath = Profile::zrl($gdir, true);
- }
+ if (DI::config()->get('system', 'singleuser') && DI::config()->get('system', 'directory')) {
+ $gdirpath = Profile::zrl(DI::config()->get('system', 'directory'), true);
}
if ((DI::userSession()->getLocalUserId() || DI::config()->get('system', 'community_page_style') != Community::DISABLED_VISITOR) &&
diff --git a/src/Model/APContact.php b/src/Model/APContact.php
index 742efcf19..3b568f39f 100644
--- a/src/Model/APContact.php
+++ b/src/Model/APContact.php
@@ -383,7 +383,7 @@ class APContact
// kroeg:blocks, updated
// When the photo is too large, try to shorten it by removing parts
- if (strlen($apcontact['photo']) > 255) {
+ if (strlen($apcontact['photo'] ?? '') > 255) {
$parts = parse_url($apcontact['photo']);
unset($parts['fragment']);
$apcontact['photo'] = (string)Uri::fromParts($parts);
@@ -574,7 +574,7 @@ class APContact
*
* @param array $apcontact
*
- * @return bool
+ * @return bool
*/
public static function isRelay(array $apcontact): bool
{
diff --git a/src/Model/Item.php b/src/Model/Item.php
index 900bf3a2c..7c8804a29 100644
--- a/src/Model/Item.php
+++ b/src/Model/Item.php
@@ -210,7 +210,7 @@ class Item
$fields['raw-body'] = BBCode::removeSharedData($fields['raw-body']);
}
}
-
+
Post\Media::insertFromAttachmentData($item['uri-id'], $fields['body']);
$content_fields = ['raw-body' => trim($fields['raw-body'] ?? $fields['body'])];
@@ -337,7 +337,7 @@ class Item
* generate a resource-id and therefore aren't intimately linked to the item.
*/
/// @TODO: this should first check if photo is used elsewhere
- if (strlen($item['resource-id'])) {
+ if ($item['resource-id']) {
Photo::delete(['resource-id' => $item['resource-id'], 'uid' => $item['uid']]);
}
diff --git a/src/Model/Post/Media.php b/src/Model/Post/Media.php
index 6cee11e6c..04c0db0f8 100644
--- a/src/Model/Post/Media.php
+++ b/src/Model/Post/Media.php
@@ -279,7 +279,7 @@ class Media
if (!empty($contact['gsid'])) {
$gserver = DBA::selectFirst('gserver', ['url', 'site_name'], ['id' => $contact['gsid']]);
}
-
+
$media['type'] = self::ACTIVITY;
$media['media-uri-id'] = $item['uri-id'];
$media['height'] = null;
@@ -687,7 +687,7 @@ class Media
$previews[] = $medium['preview'];
}
- $type = explode('/', current(explode(';', $medium['mimetype'])));
+ $type = explode('/', explode(';', $medium['mimetype'])[0]);
if (count($type) < 2) {
Logger::info('Unknown MimeType', ['type' => $type, 'media' => $medium]);
$filetype = 'unkn';
diff --git a/src/Module/Home.php b/src/Module/Home.php
index ca4c4b895..06bfa5eba 100644
--- a/src/Module/Home.php
+++ b/src/Module/Home.php
@@ -46,7 +46,7 @@ class Home extends BaseModule
DI::baseUrl()->redirect('network');
}
- if (strlen($config->get('system', 'singleuser'))) {
+ if ($config->get('system', 'singleuser')) {
DI::baseUrl()->redirect('/profile/' . $config->get('system', 'singleuser'));
}
diff --git a/src/Network/HTTPClient/Client/HttpClient.php b/src/Network/HTTPClient/Client/HttpClient.php
index cfc8fbfab..32a1a22fc 100644
--- a/src/Network/HTTPClient/Client/HttpClient.php
+++ b/src/Network/HTTPClient/Client/HttpClient.php
@@ -254,7 +254,7 @@ class HttpClient implements ICanSendHttpRequests
$urlResult = $this->resolver->resolveURL($url);
if ($urlResult->didErrorOccur()) {
- throw new TransferException($urlResult->getErrorMessageString(), $urlResult->getHTTPStatusCode());
+ throw new TransferException($urlResult->getErrorMessageString(), $urlResult->getHTTPStatusCode() ?? 0);
}
return $urlResult->getURL();
diff --git a/src/Protocol/Diaspora.php b/src/Protocol/Diaspora.php
index 8a5969dde..09f4380b0 100644
--- a/src/Protocol/Diaspora.php
+++ b/src/Protocol/Diaspora.php
@@ -3638,7 +3638,7 @@ class Diaspora
Logger::info('Got relayable data ' . $type . ' for item ' . $item['guid'] . ' (' . $item['id'] . ')');
- $msg = json_decode($item['signed_text'], true);
+ $msg = json_decode($item['signed_text'] ?? '', true);
$message = [];
if (is_array($msg)) {
diff --git a/src/Render/FriendicaSmartyEngine.php b/src/Render/FriendicaSmartyEngine.php
index 5ea01166f..201d99f82 100644
--- a/src/Render/FriendicaSmartyEngine.php
+++ b/src/Render/FriendicaSmartyEngine.php
@@ -81,7 +81,7 @@ final class FriendicaSmartyEngine extends TemplateEngine
// "middleware": inject variables into templates
$arr = [
- 'template' => basename($this->smarty->filename),
+ 'template' => basename($this->smarty->filename ?? ''),
'vars' => $vars
];
Hook::callAll('template_vars', $arr);
diff --git a/src/Worker/Notifier.php b/src/Worker/Notifier.php
index 10fe6e3ab..db593b6a4 100644
--- a/src/Worker/Notifier.php
+++ b/src/Worker/Notifier.php
@@ -336,7 +336,7 @@ class Notifier
foreach ($items as $item) {
$recipients[] = $item['contact-id'];
// pull out additional tagged people to notify (if public message)
- if ($public_message && strlen($item['inform'])) {
+ if ($public_message && $item['inform']) {
$people = explode(',',$item['inform']);
foreach ($people as $person) {
if (substr($person,0,4) === 'cid:') {
diff --git a/view/theme/frio/php/PHPColors/Color.php b/view/theme/frio/php/PHPColors/Color.php
index e4de79c40..30de57996 100644
--- a/view/theme/frio/php/PHPColors/Color.php
+++ b/view/theme/frio/php/PHPColors/Color.php
@@ -132,16 +132,16 @@ class Color {
$var_1 = 2 * $L - $var_2;
- $r = round(255 * self::_huetorgb( $var_1, $var_2, $H + (1/3) ));
- $g = round(255 * self::_huetorgb( $var_1, $var_2, $H ));
- $b = round(255 * self::_huetorgb( $var_1, $var_2, $H - (1/3) ));
+ $r = 255 * self::_huetorgb( $var_1, $var_2, $H + (1/3) );
+ $g = 255 * self::_huetorgb( $var_1, $var_2, $H );
+ $b = 255 * self::_huetorgb( $var_1, $var_2, $H - (1/3) );
}
// Convert to hex
- $r = dechex($r);
- $g = dechex($g);
- $b = dechex($b);
+ $r = dechex(round($r));
+ $g = dechex(round($g));
+ $b = dechex(round($b));
// Make sure we get 2 digits for decimals
$r = (strlen("".$r)===1) ? "0".$r:$r;
From 99df11e99b8d4df2594ae4cf7ad902a407e4a479 Mon Sep 17 00:00:00 2001
From: Hypolite Petovan
Date: Sat, 19 Nov 2022 19:30:48 -0500
Subject: [PATCH 4/4] Fix PHP 8 inheritance deprecation warnings in App\PAge
and ParsedLogIterator
---
src/App/Page.php | 62 ++++++-----------------------
src/Model/Log/ParsedLogIterator.php | 8 ++--
2 files changed, 17 insertions(+), 53 deletions(-)
diff --git a/src/App/Page.php b/src/App/Page.php
index 0f14d9f6e..37141426c 100644
--- a/src/App/Page.php
+++ b/src/App/Page.php
@@ -115,76 +115,40 @@ class Page implements ArrayAccess
}
}
+ // ArrayAccess interface
+
/**
- * Whether a offset exists
- *
- * @link https://php.net/manual/en/arrayaccess.offsetexists.php
- *
- * @param mixed $offset
- * An offset to check for.
- *
- *
- * @return boolean true on success or false on failure.
- *
- *
- * The return value will be casted to boolean if non-boolean was returned.
- * @since 5.0.0
+ * @inheritDoc
*/
+ #[\ReturnTypeWillChange]
public function offsetExists($offset): bool
{
return isset($this->page[$offset]);
}
/**
- * Offset to retrieve
- *
- * @link https://php.net/manual/en/arrayaccess.offsetget.php
- *
- * @param mixed $offset
- * The offset to retrieve.
- *
- *
- * @return mixed Can return all value types.
- * @since 5.0.0
+ * @inheritDoc
*/
+ #[\ReturnTypeWillChange]
public function offsetGet($offset)
{
return $this->page[$offset] ?? null;
}
/**
- * Offset to set
- *
- * @link https://php.net/manual/en/arrayaccess.offsetset.php
- *
- * @param mixed $offset
- * The offset to assign the value to.
- *
- * @param mixed $value
- * The value to set.
- *
- *
- * @return void
- * @since 5.0.0
+ * @inheritDoc
*/
- public function offsetSet($offset, $value)
+ #[\ReturnTypeWillChange]
+ public function offsetSet($offset, $value): void
{
$this->page[$offset] = $value;
}
/**
- * Offset to unset
- *
- * @link https://php.net/manual/en/arrayaccess.offsetunset.php
- *
- * @param mixed $offset
- * The offset to unset.
- *
- *
- * @return void
- * @since 5.0.0
+ * @inheritDoc
*/
- public function offsetUnset($offset)
+ #[\ReturnTypeWillChange]
+ public function offsetUnset($offset): void
{
if (isset($this->page[$offset])) {
unset($this->page[$offset]);
@@ -310,7 +274,7 @@ class Page implements ArrayAccess
}
return $pageURL;
}
-
+
/**
* Initializes Page->page['footer'].
*
diff --git a/src/Model/Log/ParsedLogIterator.php b/src/Model/Log/ParsedLogIterator.php
index 4309e4cd0..e3415da8c 100644
--- a/src/Model/Log/ParsedLogIterator.php
+++ b/src/Model/Log/ParsedLogIterator.php
@@ -160,7 +160,7 @@ class ParsedLogIterator implements \Iterator
* @see Iterator::next()
* @return void
*/
- public function next()
+ public function next(): void
{
$parsed = $this->read();
@@ -177,7 +177,7 @@ class ParsedLogIterator implements \Iterator
* @see Iterator::rewind()
* @return void
*/
- public function rewind()
+ public function rewind(): void
{
$this->value = null;
$this->reader->rewind();
@@ -200,9 +200,9 @@ class ParsedLogIterator implements \Iterator
* Return current iterator value
*
* @see Iterator::current()
- * @return ?ParsedLogLing
+ * @return ?ParsedLogLine
*/
- public function current()
+ public function current(): ?ParsedLogLine
{
return $this->value;
}