Merge pull request #12221 from MrPetovan/bug/warnings
Fix various PHP 8 deprecations
This commit is contained in:
commit
eec48057dc
|
@ -115,76 +115,40 @@ class Page implements ArrayAccess
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ArrayAccess interface
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Whether a offset exists
|
* @inheritDoc
|
||||||
*
|
|
||||||
* @link https://php.net/manual/en/arrayaccess.offsetexists.php
|
|
||||||
*
|
|
||||||
* @param mixed $offset <p>
|
|
||||||
* An offset to check for.
|
|
||||||
* </p>
|
|
||||||
*
|
|
||||||
* @return boolean true on success or false on failure.
|
|
||||||
* </p>
|
|
||||||
* <p>
|
|
||||||
* The return value will be casted to boolean if non-boolean was returned.
|
|
||||||
* @since 5.0.0
|
|
||||||
*/
|
*/
|
||||||
|
#[\ReturnTypeWillChange]
|
||||||
public function offsetExists($offset): bool
|
public function offsetExists($offset): bool
|
||||||
{
|
{
|
||||||
return isset($this->page[$offset]);
|
return isset($this->page[$offset]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Offset to retrieve
|
* @inheritDoc
|
||||||
*
|
|
||||||
* @link https://php.net/manual/en/arrayaccess.offsetget.php
|
|
||||||
*
|
|
||||||
* @param mixed $offset <p>
|
|
||||||
* The offset to retrieve.
|
|
||||||
* </p>
|
|
||||||
*
|
|
||||||
* @return mixed Can return all value types.
|
|
||||||
* @since 5.0.0
|
|
||||||
*/
|
*/
|
||||||
|
#[\ReturnTypeWillChange]
|
||||||
public function offsetGet($offset)
|
public function offsetGet($offset)
|
||||||
{
|
{
|
||||||
return $this->page[$offset] ?? null;
|
return $this->page[$offset] ?? null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Offset to set
|
* @inheritDoc
|
||||||
*
|
|
||||||
* @link https://php.net/manual/en/arrayaccess.offsetset.php
|
|
||||||
*
|
|
||||||
* @param mixed $offset <p>
|
|
||||||
* The offset to assign the value to.
|
|
||||||
* </p>
|
|
||||||
* @param mixed $value <p>
|
|
||||||
* The value to set.
|
|
||||||
* </p>
|
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
* @since 5.0.0
|
|
||||||
*/
|
*/
|
||||||
public function offsetSet($offset, $value)
|
#[\ReturnTypeWillChange]
|
||||||
|
public function offsetSet($offset, $value): void
|
||||||
{
|
{
|
||||||
$this->page[$offset] = $value;
|
$this->page[$offset] = $value;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Offset to unset
|
* @inheritDoc
|
||||||
*
|
|
||||||
* @link https://php.net/manual/en/arrayaccess.offsetunset.php
|
|
||||||
*
|
|
||||||
* @param mixed $offset <p>
|
|
||||||
* The offset to unset.
|
|
||||||
* </p>
|
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
* @since 5.0.0
|
|
||||||
*/
|
*/
|
||||||
public function offsetUnset($offset)
|
#[\ReturnTypeWillChange]
|
||||||
|
public function offsetUnset($offset): void
|
||||||
{
|
{
|
||||||
if (isset($this->page[$offset])) {
|
if (isset($this->page[$offset])) {
|
||||||
unset($this->page[$offset]);
|
unset($this->page[$offset]);
|
||||||
|
@ -310,7 +274,7 @@ class Page implements ArrayAccess
|
||||||
}
|
}
|
||||||
return $pageURL;
|
return $pageURL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initializes Page->page['footer'].
|
* Initializes Page->page['footer'].
|
||||||
*
|
*
|
||||||
|
|
|
@ -244,12 +244,8 @@ class Nav
|
||||||
}
|
}
|
||||||
|
|
||||||
$gdirpath = 'directory';
|
$gdirpath = 'directory';
|
||||||
|
if (DI::config()->get('system', 'singleuser') && DI::config()->get('system', 'directory')) {
|
||||||
if (strlen(DI::config()->get('system', 'singleuser'))) {
|
$gdirpath = Profile::zrl(DI::config()->get('system', 'directory'), true);
|
||||||
$gdir = DI::config()->get('system', 'directory');
|
|
||||||
if (strlen($gdir)) {
|
|
||||||
$gdirpath = Profile::zrl($gdir, true);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((DI::userSession()->getLocalUserId() || DI::config()->get('system', 'community_page_style') != Community::DISABLED_VISITOR) &&
|
if ((DI::userSession()->getLocalUserId() || DI::config()->get('system', 'community_page_style') != Community::DISABLED_VISITOR) &&
|
||||||
|
|
|
@ -43,12 +43,12 @@ use Psr\Log\NullLogger;
|
||||||
*/
|
*/
|
||||||
class Database
|
class Database
|
||||||
{
|
{
|
||||||
const PDO = 'pdo';
|
const PDO = 'pdo';
|
||||||
const MYSQLI = 'mysqli';
|
const MYSQLI = 'mysqli';
|
||||||
|
|
||||||
const INSERT_DEFAULT = 0;
|
const INSERT_DEFAULT = 0;
|
||||||
const INSERT_UPDATE = 1;
|
const INSERT_UPDATE = 1;
|
||||||
const INSERT_IGNORE = 2;
|
const INSERT_IGNORE = 2;
|
||||||
|
|
||||||
protected $connected = false;
|
protected $connected = false;
|
||||||
|
|
||||||
|
@ -64,18 +64,18 @@ class Database
|
||||||
* @var LoggerInterface
|
* @var LoggerInterface
|
||||||
*/
|
*/
|
||||||
protected $logger;
|
protected $logger;
|
||||||
protected $server_info = '';
|
protected $server_info = '';
|
||||||
/** @var PDO|mysqli */
|
/** @var PDO|mysqli */
|
||||||
protected $connection;
|
protected $connection;
|
||||||
protected $driver = '';
|
protected $driver = '';
|
||||||
protected $pdo_emulate_prepares = false;
|
protected $pdo_emulate_prepares = false;
|
||||||
private $error = '';
|
private $error = '';
|
||||||
private $errorno = 0;
|
private $errorno = 0;
|
||||||
private $affected_rows = 0;
|
private $affected_rows = 0;
|
||||||
protected $in_transaction = false;
|
protected $in_transaction = false;
|
||||||
protected $in_retrial = false;
|
protected $in_retrial = false;
|
||||||
protected $testmode = false;
|
protected $testmode = false;
|
||||||
private $relation = [];
|
private $relation = [];
|
||||||
/** @var DbaDefinition */
|
/** @var DbaDefinition */
|
||||||
protected $dbaDefinition;
|
protected $dbaDefinition;
|
||||||
/** @var ViewDefinition */
|
/** @var ViewDefinition */
|
||||||
|
@ -112,23 +112,22 @@ class Database
|
||||||
$port = 0;
|
$port = 0;
|
||||||
$serveraddr = trim($this->configCache->get('database', 'hostname'));
|
$serveraddr = trim($this->configCache->get('database', 'hostname'));
|
||||||
$serverdata = explode(':', $serveraddr);
|
$serverdata = explode(':', $serveraddr);
|
||||||
$server = $serverdata[0];
|
$host = trim($serverdata[0]);
|
||||||
if (count($serverdata) > 1) {
|
if (count($serverdata) > 1) {
|
||||||
$port = trim($serverdata[1]);
|
$port = trim($serverdata[1]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!empty(trim($this->configCache->get('database', 'port')))) {
|
if (trim($this->configCache->get('database', 'port') ?? 0)) {
|
||||||
$port = trim($this->configCache->get('database', 'port'));
|
$port = trim($this->configCache->get('database', 'port') ?? 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
$server = trim($server);
|
$user = trim($this->configCache->get('database', 'username'));
|
||||||
$user = trim($this->configCache->get('database', 'username'));
|
$pass = trim($this->configCache->get('database', 'password'));
|
||||||
$pass = trim($this->configCache->get('database', 'password'));
|
$database = trim($this->configCache->get('database', 'database'));
|
||||||
$db = trim($this->configCache->get('database', 'database'));
|
$charset = trim($this->configCache->get('database', 'charset'));
|
||||||
$charset = trim($this->configCache->get('database', 'charset'));
|
$socket = trim($this->configCache->get('database', 'socket'));
|
||||||
$socket = trim($this->configCache->get('database', 'socket'));
|
|
||||||
|
|
||||||
if (!(strlen($server) && strlen($user))) {
|
if (!$host && !$socket || !$user) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -138,19 +137,20 @@ class Database
|
||||||
|
|
||||||
if (!$this->configCache->get('database', 'disable_pdo') && class_exists('\PDO') && in_array('mysql', PDO::getAvailableDrivers())) {
|
if (!$this->configCache->get('database', 'disable_pdo') && class_exists('\PDO') && in_array('mysql', PDO::getAvailableDrivers())) {
|
||||||
$this->driver = self::PDO;
|
$this->driver = self::PDO;
|
||||||
$connect = "mysql:host=" . $server . ";dbname=" . $db;
|
if ($socket) {
|
||||||
|
$connect = 'mysql:unix_socket=' . $socket;
|
||||||
if ($port > 0) {
|
} else {
|
||||||
$connect .= ";port=" . $port;
|
$connect = 'mysql:host=' . $host;
|
||||||
|
if ($port > 0) {
|
||||||
|
$connect .= ';port=' . $port;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($charset) {
|
if ($charset) {
|
||||||
$connect .= ";charset=" . $charset;
|
$connect .= ';charset=' . $charset;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($socket) {
|
$connect .= ';dbname=' . $database;
|
||||||
$connect .= ";$unix_socket=" . $socket;
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$this->connection = @new PDO($connect, $user, $pass, [PDO::ATTR_PERSISTENT => $persistent]);
|
$this->connection = @new PDO($connect, $user, $pass, [PDO::ATTR_PERSISTENT => $persistent]);
|
||||||
|
@ -165,10 +165,12 @@ class Database
|
||||||
if (!$this->connected && class_exists('\mysqli')) {
|
if (!$this->connected && class_exists('\mysqli')) {
|
||||||
$this->driver = self::MYSQLI;
|
$this->driver = self::MYSQLI;
|
||||||
|
|
||||||
if ($port > 0) {
|
if ($socket) {
|
||||||
$this->connection = @new mysqli($server, $user, $pass, $db, $port);
|
$this->connection = @new mysqli(null, $user, $pass, $database, null, $socket);
|
||||||
|
} elseif ($port > 0) {
|
||||||
|
$this->connection = @new mysqli($host, $user, $pass, $database, $port);
|
||||||
} else {
|
} else {
|
||||||
$this->connection = @new mysqli($server, $user, $pass, $db);
|
$this->connection = @new mysqli($host, $user, $pass, $database);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!mysqli_connect_errno()) {
|
if (!mysqli_connect_errno()) {
|
||||||
|
@ -177,11 +179,6 @@ class Database
|
||||||
if ($charset) {
|
if ($charset) {
|
||||||
$this->connection->set_charset($charset);
|
$this->connection->set_charset($charset);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($socket) {
|
|
||||||
$this->connection->set_socket($socket);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -198,6 +195,7 @@ class Database
|
||||||
{
|
{
|
||||||
$this->testmode = $test;
|
$this->testmode = $test;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the logger for DBA
|
* Sets the logger for DBA
|
||||||
*
|
*
|
||||||
|
@ -222,6 +220,7 @@ class Database
|
||||||
{
|
{
|
||||||
$this->profiler = $profiler;
|
$this->profiler = $profiler;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Disconnects the current database connection
|
* Disconnects the current database connection
|
||||||
*/
|
*/
|
||||||
|
@ -338,12 +337,12 @@ class Database
|
||||||
}
|
}
|
||||||
|
|
||||||
$watchlist = explode(',', $this->configCache->get('system', 'db_log_index_watch'));
|
$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)) {
|
while ($row = $this->fetch($r)) {
|
||||||
if ((intval($this->configCache->get('system', 'db_loglimit_index')) > 0)) {
|
if ((intval($this->configCache->get('system', 'db_loglimit_index')) > 0)) {
|
||||||
$log = (in_array($row['key'], $watchlist) &&
|
$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 {
|
} else {
|
||||||
$log = false;
|
$log = false;
|
||||||
}
|
}
|
||||||
|
@ -358,11 +357,15 @@ class Database
|
||||||
|
|
||||||
if ($log) {
|
if ($log) {
|
||||||
$backtrace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS);
|
$backtrace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS);
|
||||||
@file_put_contents($this->configCache->get('system', 'db_log_index'), DateTimeFormat::utcNow() . "\t" .
|
@file_put_contents(
|
||||||
$row['key'] . "\t" . $row['rows'] . "\t" . $row['Extra'] . "\t" .
|
$this->configCache->get('system', 'db_log_index'),
|
||||||
basename($backtrace[1]["file"]) . "\t" .
|
DateTimeFormat::utcNow() . "\t" .
|
||||||
$backtrace[1]["line"] . "\t" . $backtrace[2]["function"] . "\t" .
|
$row['key'] . "\t" . $row['rows'] . "\t" . $row['Extra'] . "\t" .
|
||||||
substr($query, 0, 4000) . "\n", FILE_APPEND);
|
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();
|
$server_info = $this->serverInfo();
|
||||||
if (version_compare($server_info, '5.7.5', '<') ||
|
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);
|
$sql = str_ireplace('ANY_VALUE(', 'MIN(', $sql);
|
||||||
}
|
}
|
||||||
return $sql;
|
return $sql;
|
||||||
|
@ -647,7 +650,7 @@ class Database
|
||||||
} elseif (is_string($args[$param])) {
|
} elseif (is_string($args[$param])) {
|
||||||
$param_types .= 's';
|
$param_types .= 's';
|
||||||
} elseif (is_object($args[$param]) && method_exists($args[$param], '__toString')) {
|
} elseif (is_object($args[$param]) && method_exists($args[$param], '__toString')) {
|
||||||
$param_types .= 's';
|
$param_types .= 's';
|
||||||
$args[$param] = (string)$args[$param];
|
$args[$param] = (string)$args[$param];
|
||||||
} else {
|
} else {
|
||||||
$param_types .= 'b';
|
$param_types .= 'b';
|
||||||
|
@ -743,10 +746,14 @@ class Database
|
||||||
$duration = round($duration, 3);
|
$duration = round($duration, 3);
|
||||||
$backtrace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS);
|
$backtrace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS);
|
||||||
|
|
||||||
@file_put_contents($this->configCache->get('system', 'db_log'), DateTimeFormat::utcNow() . "\t" . $duration . "\t" .
|
@file_put_contents(
|
||||||
basename($backtrace[1]["file"]) . "\t" .
|
$this->configCache->get('system', 'db_log'),
|
||||||
$backtrace[1]["line"] . "\t" . $backtrace[2]["function"] . "\t" .
|
DateTimeFormat::utcNow() . "\t" . $duration . "\t" .
|
||||||
substr($this->replaceParameters($sql, $args), 0, 4000) . "\n", FILE_APPEND);
|
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;
|
return $retval;
|
||||||
|
@ -1365,7 +1372,7 @@ class Database
|
||||||
. $condition_string;
|
. $condition_string;
|
||||||
|
|
||||||
// Combines the updated fields parameter values with the condition parameter values
|
// 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);
|
return $this->e($sql, $params);
|
||||||
}
|
}
|
||||||
|
@ -1415,8 +1422,8 @@ class Database
|
||||||
/**
|
/**
|
||||||
* Escape fields, adding special treatment for "group by" handling
|
* Escape fields, adding special treatment for "group by" handling
|
||||||
*
|
*
|
||||||
* @param array $fields
|
* @param array $fields
|
||||||
* @param array $options
|
* @param array $options
|
||||||
* @return array Escaped fields
|
* @return array Escaped fields
|
||||||
*/
|
*/
|
||||||
private function escapeFields(array $fields, array $options): array
|
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;
|
$field = $value;
|
||||||
$value = DBA::quoteIdentifier($field);
|
$value = DBA::quoteIdentifier($field);
|
||||||
|
|
||||||
|
@ -1487,7 +1493,7 @@ class Database
|
||||||
}
|
}
|
||||||
|
|
||||||
if (count($fields) > 0) {
|
if (count($fields) > 0) {
|
||||||
$fields = $this->escapeFields($fields, $params);
|
$fields = $this->escapeFields($fields, $params);
|
||||||
$select_string = implode(', ', $fields);
|
$select_string = implode(', ', $fields);
|
||||||
} else {
|
} else {
|
||||||
$select_string = '*';
|
$select_string = '*';
|
||||||
|
@ -1827,16 +1833,16 @@ class Database
|
||||||
/**
|
/**
|
||||||
* Replaces a string in the provided fields of the provided table
|
* Replaces a string in the provided fields of the provided table
|
||||||
*
|
*
|
||||||
* @param string $table Table name
|
* @param string $table Table name
|
||||||
* @param array $fields List of field names in the provided table
|
* @param array $fields List of field names in the provided table
|
||||||
* @param string $search String to search for
|
* @param string $search String to search for
|
||||||
* @param string $replace String to replace with
|
* @param string $replace String to replace with
|
||||||
* @return void
|
* @return void
|
||||||
* @throws \Exception
|
* @throws \Exception
|
||||||
*/
|
*/
|
||||||
public function replaceInTableFields(string $table, array $fields, string $search, string $replace)
|
public function replaceInTableFields(string $table, array $fields, string $search, string $replace)
|
||||||
{
|
{
|
||||||
$search = $this->escape($search);
|
$search = $this->escape($search);
|
||||||
$replace = $this->escape($replace);
|
$replace = $this->escape($replace);
|
||||||
|
|
||||||
$upd = [];
|
$upd = [];
|
||||||
|
|
|
@ -383,7 +383,7 @@ class APContact
|
||||||
// kroeg:blocks, updated
|
// kroeg:blocks, updated
|
||||||
|
|
||||||
// When the photo is too large, try to shorten it by removing parts
|
// 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']);
|
$parts = parse_url($apcontact['photo']);
|
||||||
unset($parts['fragment']);
|
unset($parts['fragment']);
|
||||||
$apcontact['photo'] = (string)Uri::fromParts($parts);
|
$apcontact['photo'] = (string)Uri::fromParts($parts);
|
||||||
|
@ -574,7 +574,7 @@ class APContact
|
||||||
*
|
*
|
||||||
* @param array $apcontact
|
* @param array $apcontact
|
||||||
*
|
*
|
||||||
* @return bool
|
* @return bool
|
||||||
*/
|
*/
|
||||||
public static function isRelay(array $apcontact): bool
|
public static function isRelay(array $apcontact): bool
|
||||||
{
|
{
|
||||||
|
|
|
@ -210,7 +210,7 @@ class Item
|
||||||
$fields['raw-body'] = BBCode::removeSharedData($fields['raw-body']);
|
$fields['raw-body'] = BBCode::removeSharedData($fields['raw-body']);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Post\Media::insertFromAttachmentData($item['uri-id'], $fields['body']);
|
Post\Media::insertFromAttachmentData($item['uri-id'], $fields['body']);
|
||||||
|
|
||||||
$content_fields = ['raw-body' => trim($fields['raw-body'] ?? $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.
|
* generate a resource-id and therefore aren't intimately linked to the item.
|
||||||
*/
|
*/
|
||||||
/// @TODO: this should first check if photo is used elsewhere
|
/// @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']]);
|
Photo::delete(['resource-id' => $item['resource-id'], 'uid' => $item['uid']]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -160,7 +160,7 @@ class ParsedLogIterator implements \Iterator
|
||||||
* @see Iterator::next()
|
* @see Iterator::next()
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function next()
|
public function next(): void
|
||||||
{
|
{
|
||||||
$parsed = $this->read();
|
$parsed = $this->read();
|
||||||
|
|
||||||
|
@ -177,7 +177,7 @@ class ParsedLogIterator implements \Iterator
|
||||||
* @see Iterator::rewind()
|
* @see Iterator::rewind()
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function rewind()
|
public function rewind(): void
|
||||||
{
|
{
|
||||||
$this->value = null;
|
$this->value = null;
|
||||||
$this->reader->rewind();
|
$this->reader->rewind();
|
||||||
|
@ -200,9 +200,9 @@ class ParsedLogIterator implements \Iterator
|
||||||
* Return current iterator value
|
* Return current iterator value
|
||||||
*
|
*
|
||||||
* @see Iterator::current()
|
* @see Iterator::current()
|
||||||
* @return ?ParsedLogLing
|
* @return ?ParsedLogLine
|
||||||
*/
|
*/
|
||||||
public function current()
|
public function current(): ?ParsedLogLine
|
||||||
{
|
{
|
||||||
return $this->value;
|
return $this->value;
|
||||||
}
|
}
|
||||||
|
|
|
@ -279,7 +279,7 @@ class Media
|
||||||
if (!empty($contact['gsid'])) {
|
if (!empty($contact['gsid'])) {
|
||||||
$gserver = DBA::selectFirst('gserver', ['url', 'site_name'], ['id' => $contact['gsid']]);
|
$gserver = DBA::selectFirst('gserver', ['url', 'site_name'], ['id' => $contact['gsid']]);
|
||||||
}
|
}
|
||||||
|
|
||||||
$media['type'] = self::ACTIVITY;
|
$media['type'] = self::ACTIVITY;
|
||||||
$media['media-uri-id'] = $item['uri-id'];
|
$media['media-uri-id'] = $item['uri-id'];
|
||||||
$media['height'] = null;
|
$media['height'] = null;
|
||||||
|
@ -687,7 +687,7 @@ class Media
|
||||||
$previews[] = $medium['preview'];
|
$previews[] = $medium['preview'];
|
||||||
}
|
}
|
||||||
|
|
||||||
$type = explode('/', current(explode(';', $medium['mimetype'])));
|
$type = explode('/', explode(';', $medium['mimetype'])[0]);
|
||||||
if (count($type) < 2) {
|
if (count($type) < 2) {
|
||||||
Logger::info('Unknown MimeType', ['type' => $type, 'media' => $medium]);
|
Logger::info('Unknown MimeType', ['type' => $type, 'media' => $medium]);
|
||||||
$filetype = 'unkn';
|
$filetype = 'unkn';
|
||||||
|
|
|
@ -46,7 +46,7 @@ class Home extends BaseModule
|
||||||
DI::baseUrl()->redirect('network');
|
DI::baseUrl()->redirect('network');
|
||||||
}
|
}
|
||||||
|
|
||||||
if (strlen($config->get('system', 'singleuser'))) {
|
if ($config->get('system', 'singleuser')) {
|
||||||
DI::baseUrl()->redirect('/profile/' . $config->get('system', 'singleuser'));
|
DI::baseUrl()->redirect('/profile/' . $config->get('system', 'singleuser'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -254,7 +254,7 @@ class HttpClient implements ICanSendHttpRequests
|
||||||
$urlResult = $this->resolver->resolveURL($url);
|
$urlResult = $this->resolver->resolveURL($url);
|
||||||
|
|
||||||
if ($urlResult->didErrorOccur()) {
|
if ($urlResult->didErrorOccur()) {
|
||||||
throw new TransferException($urlResult->getErrorMessageString(), $urlResult->getHTTPStatusCode());
|
throw new TransferException($urlResult->getErrorMessageString(), $urlResult->getHTTPStatusCode() ?? 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
return $urlResult->getURL();
|
return $urlResult->getURL();
|
||||||
|
|
|
@ -80,7 +80,7 @@ interface IEmail extends JsonSerializable
|
||||||
*
|
*
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
function getMessage(bool $plain = false);
|
function getMessage(bool $plain = false): string;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the additional mail header array
|
* Gets the additional mail header array
|
||||||
|
|
|
@ -110,12 +110,12 @@ class Email implements IEmail
|
||||||
/**
|
/**
|
||||||
* {@inheritDoc}
|
* {@inheritDoc}
|
||||||
*/
|
*/
|
||||||
public function getMessage(bool $plain = false)
|
public function getMessage(bool $plain = false): string
|
||||||
{
|
{
|
||||||
if ($plain) {
|
if ($plain) {
|
||||||
return $this->msgText;
|
return $this->msgText;
|
||||||
} else {
|
} else {
|
||||||
return $this->msgHtml;
|
return $this->msgHtml ?? '';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -3638,7 +3638,7 @@ class Diaspora
|
||||||
|
|
||||||
Logger::info('Got relayable data ' . $type . ' for item ' . $item['guid'] . ' (' . $item['id'] . ')');
|
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 = [];
|
$message = [];
|
||||||
if (is_array($msg)) {
|
if (is_array($msg)) {
|
||||||
|
|
|
@ -81,7 +81,7 @@ final class FriendicaSmartyEngine extends TemplateEngine
|
||||||
|
|
||||||
// "middleware": inject variables into templates
|
// "middleware": inject variables into templates
|
||||||
$arr = [
|
$arr = [
|
||||||
'template' => basename($this->smarty->filename),
|
'template' => basename($this->smarty->filename ?? ''),
|
||||||
'vars' => $vars
|
'vars' => $vars
|
||||||
];
|
];
|
||||||
Hook::callAll('template_vars', $arr);
|
Hook::callAll('template_vars', $arr);
|
||||||
|
|
|
@ -336,7 +336,7 @@ class Notifier
|
||||||
foreach ($items as $item) {
|
foreach ($items as $item) {
|
||||||
$recipients[] = $item['contact-id'];
|
$recipients[] = $item['contact-id'];
|
||||||
// pull out additional tagged people to notify (if public message)
|
// 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']);
|
$people = explode(',',$item['inform']);
|
||||||
foreach ($people as $person) {
|
foreach ($people as $person) {
|
||||||
if (substr($person,0,4) === 'cid:') {
|
if (substr($person,0,4) === 'cid:') {
|
||||||
|
|
|
@ -38,12 +38,12 @@ return [
|
||||||
'port' => null,
|
'port' => null,
|
||||||
|
|
||||||
// socket (String)
|
// socket (String)
|
||||||
// Socket of the database server.
|
// Socket of the database server.
|
||||||
// Can be used instead of adding a socket location to the hostname
|
// Can be used instead of adding a socket location to the hostname
|
||||||
'socket' => '',
|
'socket' => '',
|
||||||
|
|
||||||
// user (String)
|
// user (String)
|
||||||
// Database user name. Please don't use "root".
|
// Database username. Please don't use "root".
|
||||||
'username' => '',
|
'username' => '',
|
||||||
|
|
||||||
// pass (String)
|
// pass (String)
|
||||||
|
@ -64,7 +64,7 @@ return [
|
||||||
'pdo_emulate_prepares' => true,
|
'pdo_emulate_prepares' => true,
|
||||||
|
|
||||||
// disable_pdo (Boolean)
|
// 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,
|
'disable_pdo' => false,
|
||||||
|
|
||||||
// persistent (Boolean)
|
// persistent (Boolean)
|
||||||
|
@ -145,7 +145,7 @@ return [
|
||||||
'block_local_dir' => false,
|
'block_local_dir' => false,
|
||||||
|
|
||||||
// blocked_tags (String)
|
// 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' => '',
|
'blocked_tags' => '',
|
||||||
|
|
||||||
// community_no_sharer (Boolean)
|
// community_no_sharer (Boolean)
|
||||||
|
@ -153,7 +153,7 @@ return [
|
||||||
'community_no_sharer' => false,
|
'community_no_sharer' => false,
|
||||||
|
|
||||||
// contact_update_limit (Integer)
|
// 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,
|
'contact_update_limit' => 100,
|
||||||
|
|
||||||
// cron_interval (Integer)
|
// cron_interval (Integer)
|
||||||
|
@ -259,7 +259,7 @@ return [
|
||||||
'disable_implicit_mentions' => false,
|
'disable_implicit_mentions' => false,
|
||||||
|
|
||||||
// disable_url_validation (Boolean)
|
// disable_url_validation (Boolean)
|
||||||
// Disables the DNS lookup of an URL.
|
// Disables the DNS lookup of a URL.
|
||||||
'disable_url_validation' => false,
|
'disable_url_validation' => false,
|
||||||
|
|
||||||
// disable_password_exposed (Boolean)
|
// disable_password_exposed (Boolean)
|
||||||
|
@ -283,7 +283,7 @@ return [
|
||||||
'dlogip' => '',
|
'dlogip' => '',
|
||||||
|
|
||||||
// expire-notify-priority (integer)
|
// expire-notify-priority (integer)
|
||||||
// Priority for the expirary notification
|
// Priority for the expirary notification
|
||||||
'expire-notify-priority' => Friendica\Core\Worker::PRIORITY_LOW,
|
'expire-notify-priority' => Friendica\Core\Worker::PRIORITY_LOW,
|
||||||
|
|
||||||
// fetch_by_worker (Boolean)
|
// fetch_by_worker (Boolean)
|
||||||
|
@ -300,11 +300,11 @@ return [
|
||||||
|
|
||||||
// groupedit_image_limit (Integer)
|
// 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.
|
// 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,
|
'groupedit_image_limit' => 400,
|
||||||
|
|
||||||
// gserver_update_limit (Integer)
|
// 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,
|
'gserver_update_limit' => 100,
|
||||||
|
|
||||||
// hsts (Boolean)
|
// hsts (Boolean)
|
||||||
|
@ -330,7 +330,7 @@ return [
|
||||||
'ipv4_resolve' => false,
|
'ipv4_resolve' => false,
|
||||||
|
|
||||||
// invitation_only (Boolean)
|
// 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,
|
'invitation_only' => false,
|
||||||
|
|
||||||
// itemspage_network (Integer)
|
// itemspage_network (Integer)
|
||||||
|
@ -343,7 +343,7 @@ return [
|
||||||
'itemspage_network_mobile' => 20,
|
'itemspage_network_mobile' => 20,
|
||||||
|
|
||||||
// jpeg_quality (Integer)
|
// jpeg_quality (Integer)
|
||||||
//
|
//
|
||||||
// Lower numbers save space at cost of image detail
|
// Lower numbers save space at cost of image detail
|
||||||
// where n is between 1 and 100, and with very poor results below about 50
|
// where n is between 1 and 100, and with very poor results below about 50
|
||||||
'jpeg_quality' => 100,
|
'jpeg_quality' => 100,
|
||||||
|
@ -415,13 +415,13 @@ return [
|
||||||
|
|
||||||
// max_image_length (Integer)
|
// max_image_length (Integer)
|
||||||
// An alternate way of limiting picture upload sizes.
|
// 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).
|
// 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.
|
// If you don't want to set a maximum length, set to -1.
|
||||||
'max_image_length' => -1,
|
'max_image_length' => -1,
|
||||||
|
|
||||||
// max_likers (Integer)
|
// 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_likers' => 75,
|
||||||
|
|
||||||
// max_processes_backend (Integer)
|
// max_processes_backend (Integer)
|
||||||
|
@ -471,7 +471,7 @@ return [
|
||||||
'no_oembed' => false,
|
'no_oembed' => false,
|
||||||
|
|
||||||
// no_redirect_list (Array)
|
// 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_redirect_list' => [],
|
||||||
|
|
||||||
// no_smilies (Boolean)
|
// no_smilies (Boolean)
|
||||||
|
@ -483,7 +483,7 @@ return [
|
||||||
'paranoia' => false,
|
'paranoia' => false,
|
||||||
|
|
||||||
// permit_crawling (Boolean)
|
// 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,
|
'permit_crawling' => false,
|
||||||
|
|
||||||
// pidfile (Path)
|
// pidfile (Path)
|
||||||
|
@ -491,7 +491,7 @@ return [
|
||||||
'pidfile' => '',
|
'pidfile' => '',
|
||||||
|
|
||||||
// png_quality (Integer)
|
// 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,
|
'png_quality' => 8,
|
||||||
|
|
||||||
// profiler (Boolean)
|
// profiler (Boolean)
|
||||||
|
@ -568,11 +568,11 @@ return [
|
||||||
'set_creation_date' => false,
|
'set_creation_date' => false,
|
||||||
|
|
||||||
// show_global_community_hint (Boolean)
|
// 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_global_community_hint' => false,
|
||||||
|
|
||||||
// show_received (Boolean)
|
// 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' => true,
|
||||||
|
|
||||||
// show_received_seconds (Integer)
|
// show_received_seconds (Integer)
|
||||||
|
@ -609,13 +609,13 @@ return [
|
||||||
|
|
||||||
// username_min_length (Integer)
|
// username_min_length (Integer)
|
||||||
// The minimum character length a username can be.
|
// 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.
|
// 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_min_length' => 3,
|
||||||
|
|
||||||
// username_max_length (Integer)
|
// username_max_length (Integer)
|
||||||
// The maximum character length a username can be.
|
// 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.
|
// 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,
|
'username_max_length' => 48,
|
||||||
|
|
||||||
|
@ -738,8 +738,7 @@ return [
|
||||||
'config_dir' => 'view/smarty3',
|
'config_dir' => 'view/smarty3',
|
||||||
|
|
||||||
// use_sub_dirs (Boolean)
|
// 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,
|
'use_sub_dirs' => true,
|
||||||
],
|
],
|
||||||
];
|
];
|
||||||
|
|
|
@ -132,16 +132,16 @@ class Color {
|
||||||
|
|
||||||
$var_1 = 2 * $L - $var_2;
|
$var_1 = 2 * $L - $var_2;
|
||||||
|
|
||||||
$r = round(255 * self::_huetorgb( $var_1, $var_2, $H + (1/3) ));
|
$r = 255 * self::_huetorgb( $var_1, $var_2, $H + (1/3) );
|
||||||
$g = round(255 * self::_huetorgb( $var_1, $var_2, $H ));
|
$g = 255 * self::_huetorgb( $var_1, $var_2, $H );
|
||||||
$b = round(255 * self::_huetorgb( $var_1, $var_2, $H - (1/3) ));
|
$b = 255 * self::_huetorgb( $var_1, $var_2, $H - (1/3) );
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Convert to hex
|
// Convert to hex
|
||||||
$r = dechex($r);
|
$r = dechex(round($r));
|
||||||
$g = dechex($g);
|
$g = dechex(round($g));
|
||||||
$b = dechex($b);
|
$b = dechex(round($b));
|
||||||
|
|
||||||
// Make sure we get 2 digits for decimals
|
// Make sure we get 2 digits for decimals
|
||||||
$r = (strlen("".$r)===1) ? "0".$r:$r;
|
$r = (strlen("".$r)===1) ? "0".$r:$r;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user