diff --git a/.ddev/config.yaml b/.ddev/config.yaml new file mode 100644 index 000000000..810da8d6f --- /dev/null +++ b/.ddev/config.yaml @@ -0,0 +1,258 @@ +name: my-friendica +type: php +docroot: "" +php_version: "8.1" +webserver_type: apache-fpm +router_http_port: "80" +router_https_port: "443" +xdebug_enabled: false +additional_hostnames: [] +additional_fqdns: [] +database: + type: mariadb + version: "10.4" +nfs_mount_enabled: false +mutagen_enabled: false +use_dns_when_possible: true +composer_version: "1" +web_environment: [] +nodejs_version: "16" +webimage_extra_packages: [php-gmp] + +# Key features of ddev's config.yaml: + +# name: # Name of the project, automatically provides +# http://projectname.ddev.site and https://projectname.ddev.site + +# type: # drupal6/7/8, backdrop, typo3, wordpress, php + +# docroot: # Relative path to the directory containing index.php. + +# php_version: "7.4" # PHP version to use, "5.6", "7.0", "7.1", "7.2", "7.3", "7.4", "8.0", "8.1", "8.2" + +# You can explicitly specify the webimage but this +# is not recommended, as the images are often closely tied to ddev's' behavior, +# so this can break upgrades. + +# webimage: # nginx/php docker image. + +# database: +# type: # mysql, mariadb +# version: # database version, like "10.3" or "8.0" +# Note that mariadb_version or mysql_version from v1.18 and earlier +# will automatically be converted to this notation with just a "ddev config --auto" + +# router_http_port: # Port to be used for http (defaults to port 80) +# router_https_port: # Port for https (defaults to 443) + +# xdebug_enabled: false # Set to true to enable xdebug and "ddev start" or "ddev restart" +# Note that for most people the commands +# "ddev xdebug" to enable xdebug and "ddev xdebug off" to disable it work better, +# as leaving xdebug enabled all the time is a big performance hit. + +# xhprof_enabled: false # Set to true to enable xhprof and "ddev start" or "ddev restart" +# Note that for most people the commands +# "ddev xhprof" to enable xhprof and "ddev xhprof off" to disable it work better, +# as leaving xhprof enabled all the time is a big performance hit. + +# webserver_type: nginx-fpm # or apache-fpm + +# timezone: Europe/Berlin +# This is the timezone used in the containers and by PHP; +# it can be set to any valid timezone, +# see https://en.wikipedia.org/wiki/List_of_tz_database_time_zones +# For example Europe/Dublin or MST7MDT + +# composer_root: +# Relative path to the composer root directory from the project root. This is +# the directory which contains the composer.json and where all Composer related +# commands are executed. + +# composer_version: "2" +# You can set it to "" or "2" (default) for Composer v2 or "1" for Composer v1 +# to use the latest major version available at the time your container is built. +# It is also possible to use each other Composer version channel. This includes: +# - 2.2 (latest Composer LTS version) +# - stable +# - preview +# - snapshot +# Alternatively, an explicit Composer version may be specified, for example "2.2.18". +# To reinstall Composer after the image was built, run "ddev debug refresh". + +# nodejs_version: "16" +# change from the default system Node.js version to another supported version, like 12, 14, 17, 18. +# Note that you can use 'ddev nvm' or nvm inside the web container to provide nearly any +# Node.js version, including v6, etc. + +# additional_hostnames: +# - somename +# - someothername +# would provide http and https URLs for "somename.ddev.site" +# and "someothername.ddev.site". + +# additional_fqdns: +# - example.com +# - sub1.example.com +# would provide http and https URLs for "example.com" and "sub1.example.com" +# Please take care with this because it can cause great confusion. + +# upload_dir: custom/upload/dir +# would set the destination path for ddev import-files to /custom/upload/dir +# When mutagen is enabled this path is bind-mounted so that all the files +# in the upload_dir don't have to be synced into mutagen + +# working_dir: +# web: /var/www/html +# db: /home +# would set the default working directory for the web and db services. +# These values specify the destination directory for ddev ssh and the +# directory in which commands passed into ddev exec are run. + +# omit_containers: [db, dba, ddev-ssh-agent] +# Currently only these containers are supported. Some containers can also be +# omitted globally in the ~/.ddev/global_config.yaml. Note that if you omit +# the "db" container, several standard features of ddev that access the +# database container will be unusable. In the global configuration it is also +# possible to omit ddev-router, but not here. + +# nfs_mount_enabled: false +# Great performance improvement but requires host configuration first. +# See https://ddev.readthedocs.io/en/latest/users/install/performance/#nfs + +# mutagen_enabled: false +# Performance improvement using mutagen asynchronous updates. +# See https://ddev.readthedocs.io/en/latest/users/install/performance/#mutagen + +# fail_on_hook_fail: False +# Decide whether 'ddev start' should be interrupted by a failing hook + +# host_https_port: "59002" +# The host port binding for https can be explicitly specified. It is +# dynamic unless otherwise specified. +# This is not used by most people, most people use the *router* instead +# of the localhost port. + +# host_webserver_port: "59001" +# The host port binding for the ddev-webserver can be explicitly specified. It is +# dynamic unless otherwise specified. +# This is not used by most people, most people use the *router* instead +# of the localhost port. + +# host_db_port: "59002" +# The host port binding for the ddev-dbserver can be explicitly specified. It is dynamic +# unless explicitly specified. + +# phpmyadmin_port: "8036" +# phpmyadmin_https_port: "8037" +# The PHPMyAdmin ports can be changed from the default 8036 and 8037 + +# host_phpmyadmin_port: "8036" +# The phpmyadmin (dba) port is not normally bound on the host at all, instead being routed +# through ddev-router, but it can be specified and bound. + +# mailhog_port: "8025" +# mailhog_https_port: "8026" +# The MailHog ports can be changed from the default 8025 and 8026 + +# host_mailhog_port: "8025" +# The mailhog port is not normally bound on the host at all, instead being routed +# through ddev-router, but it can be bound directly to localhost if specified here. + +# webimage_extra_packages: [php7.4-tidy, php-bcmath] +# Extra Debian packages that are needed in the webimage can be added here + +# dbimage_extra_packages: [telnet,netcat] +# Extra Debian packages that are needed in the dbimage can be added here + +# use_dns_when_possible: true +# If the host has internet access and the domain configured can +# successfully be looked up, DNS will be used for hostname resolution +# instead of editing /etc/hosts +# Defaults to true + +# project_tld: ddev.site +# The top-level domain used for project URLs +# The default "ddev.site" allows DNS lookup via a wildcard +# If you prefer you can change this to "ddev.local" to preserve +# pre-v1.9 behavior. + +# ngrok_args: --basic-auth username:pass1234 +# Provide extra flags to the "ngrok http" command, see +# https://ngrok.com/docs#http or run "ngrok http -h" + +# disable_settings_management: false +# If true, ddev will not create CMS-specific settings files like +# Drupal's settings.php/settings.ddev.php or TYPO3's AdditionalConfiguration.php +# In this case the user must provide all such settings. + +# You can inject environment variables into the web container with: +# web_environment: +# - SOMEENV=somevalue +# - SOMEOTHERENV=someothervalue + +# no_project_mount: false +# (Experimental) If true, ddev will not mount the project into the web container; +# the user is responsible for mounting it manually or via a script. +# This is to enable experimentation with alternate file mounting strategies. +# For advanced users only! + +# bind_all_interfaces: false +# If true, host ports will be bound on all network interfaces, +# not just the localhost interface. This means that ports +# will be available on the local network if the host firewall +# allows it. + +# default_container_timeout: 120 +# The default time that ddev waits for all containers to become ready can be increased from +# the default 120. This helps in importing huge databases, for example. + +#web_extra_exposed_ports: +#- name: nodejs +# container_port: 3000 +# http_port: 2999 +# https_port: 3000 +#- name: something +# container_port: 4000 +# https_port: 4000 +# http_port: 3999 +# Allows a set of extra ports to be exposed via ddev-router +# The port behavior on the ddev-webserver must be arranged separately, for example +# using web_extra_daemons. +# For example, with a web app on port 3000 inside the container, this config would +# expose that web app on https://.ddev.site:9999 and http://.ddev.site:9998 +# web_extra_exposed_ports: +# - container_port: 3000 +# http_port: 9998 +# https_port: 9999 + +#web_extra_daemons: +#- name: "http-1" +# command: "/var/www/html/node_modules/.bin/http-server -p 3000" +# directory: /var/www/html +#- name: "http-2" +# command: "/var/www/html/node_modules/.bin/http-server /var/www/html/sub -p 3000" +# directory: /var/www/html + +# override_config: false +# By default, config.*.yaml files are *merged* into the configuration +# But this means that some things can't be overridden +# For example, if you have 'nfs_mount_enabled: true'' you can't override it with a merge +# and you can't erase existing hooks or all environment variables. +# However, with "override_config: true" in a particular config.*.yaml file, +# 'nfs_mount_enabled: false' can override the existing values, and +# hooks: +# post-start: [] +# or +# web_environment: [] +# or +# additional_hostnames: [] +# can have their intended affect. 'override_config' affects only behavior of the +# config.*.yaml file it exists in. + +# Many ddev commands can be extended to run tasks before or after the +# ddev command is executed, for example "post-start", "post-import-db", +# "pre-composer", "post-composer" +# See https://ddev.readthedocs.io/en/stable/users/extend/custom-commands/ for more +# information on the commands that can be extended and the tasks you can define +# for them. Example: +#hooks: diff --git a/src/App/Page.php b/src/App/Page.php index 0f14d9f6e..5f4ac0f6d 100644 --- a/src/App/Page.php +++ b/src/App/Page.php @@ -130,7 +130,7 @@ class Page implements ArrayAccess * The return value will be casted to boolean if non-boolean was returned. * @since 5.0.0 */ - public function offsetExists($offset): bool + public function offsetExists(mixed $offset): bool { return isset($this->page[$offset]); } @@ -147,7 +147,7 @@ class Page implements ArrayAccess * @return mixed Can return all value types. * @since 5.0.0 */ - public function offsetGet($offset) + public function offsetGet(mixed $offset): mixed { return $this->page[$offset] ?? null; } @@ -167,7 +167,7 @@ class Page implements ArrayAccess * @return void * @since 5.0.0 */ - public function offsetSet($offset, $value) + public function offsetSet(mixed $offset, mixed $value): void { $this->page[$offset] = $value; } @@ -184,7 +184,7 @@ class Page implements ArrayAccess * @return void * @since 5.0.0 */ - public function offsetUnset($offset) + public function offsetUnset(mixed $offset): void { if (isset($this->page[$offset])) { unset($this->page[$offset]); diff --git a/src/BaseCollection.php b/src/BaseCollection.php index f6fa9bbd4..c71175572 100644 --- a/src/BaseCollection.php +++ b/src/BaseCollection.php @@ -48,7 +48,7 @@ class BaseCollection extends \ArrayIterator /** * @inheritDoc */ - public function offsetSet($offset, $value) + public function offsetSet(mixed $offset, mixed $value): void { if (is_null($offset)) { $this->totalCount++; @@ -60,7 +60,7 @@ class BaseCollection extends \ArrayIterator /** * @inheritDoc */ - public function offsetUnset($offset) + public function offsetUnset(mixed $offset): void { if ($this->offsetExists($offset)) { $this->totalCount--; diff --git a/src/Content/Conversation.php b/src/Content/Conversation.php index da9aee87b..46a906b13 100644 --- a/src/Content/Conversation.php +++ b/src/Content/Conversation.php @@ -794,7 +794,10 @@ class Conversation return []; } - $str_blocked = str_replace(["\n", "\r"], ",", $this->pConfig->get($this->session->getLocalUserId(), 'system', 'blocked')); + $blocked = $this->pConfig->get($this->session->getLocalUserId(), 'system', 'blocked'); + if (!empty($blocked)) { + $str_blocked = str_replace(["\n", "\r"], ",", $blocked); + } if (empty($str_blocked)) { return []; } diff --git a/src/Content/Nav.php b/src/Content/Nav.php index 0000b3d29..17fb1d12c 100644 --- a/src/Content/Nav.php +++ b/src/Content/Nav.php @@ -245,7 +245,7 @@ class Nav $gdirpath = 'directory'; - if (strlen(DI::config()->get('system', 'singleuser'))) { + if (empty(DI::config()->get('system', 'singleuser'))) { $gdir = DI::config()->get('system', 'directory'); if (strlen($gdir)) { $gdirpath = Profile::zrl($gdir, true); diff --git a/src/Core/Session/Handler/Database.php b/src/Core/Session/Handler/Database.php index 41ccb6b33..6d067d8b6 100644 --- a/src/Core/Session/Handler/Database.php +++ b/src/Core/Session/Handler/Database.php @@ -57,7 +57,7 @@ class Database extends AbstractSessionHandler return true; } - public function read($id) + public function read($id): string|false { if (empty($id)) { return ''; @@ -136,7 +136,7 @@ class Database extends AbstractSessionHandler } } - public function gc($max_lifetime): bool + public function gc($max_lifetime): int|false { try { return $this->dba->delete('session', ["`expire` < ?", time()]); diff --git a/src/Database/Database.php b/src/Database/Database.php index 79c39e9af..5dac99bce 100644 --- a/src/Database/Database.php +++ b/src/Database/Database.php @@ -117,7 +117,7 @@ class Database $port = trim($serverdata[1]); } - if (!empty(trim($this->configCache->get('database', 'port')))) { + if (!empty(trim((string) $this->configCache->get('database', 'port')))) { $port = trim($this->configCache->get('database', 'port')); } diff --git a/src/Model/Log/ParsedLogIterator.php b/src/Model/Log/ParsedLogIterator.php index 4309e4cd0..151a66adb 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(); @@ -202,7 +202,7 @@ class ParsedLogIterator implements \Iterator * @see Iterator::current() * @return ?ParsedLogLing */ - public function current() + public function current(): mixed { return $this->value; }