JoomlaPolska / jezyk-J4

Język polski dla Joomla 4
GNU General Public License v2.0
3 stars 5 forks source link

[5.2] Upmerge 2024-05-21 #521

Open joomlapl-bot opened 3 months ago

joomlapl-bot commented 3 months ago

PR w związku ze zmianą oryginału https://github.com/joomla/joomla-cms/pull/43500 Poniżej zmiany w oryginale:

Click to expand the diff! ```diff diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 751a1ce63d1a2..d659b92ed8779 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -12,9 +12,9 @@ build/bump.php @rdeutz build/deleted_file_check.php @rdeutz # Core/Extension Install/Update Tools -administrator/components/com_joomlaupdate/* @rdeutz @zero-24 -libraries/src/Installer/* @rdeutz @zero-24 -libraries/src/Updater/* @rdeutz @zero-24 +administrator/components/com_joomlaupdate/* @rdeutz +libraries/src/Installer/* @rdeutz +libraries/src/Updater/* @rdeutz # Automated Testing tests/* @hackwar @fancyFranci @@ -24,9 +24,6 @@ tests/Unit/* @rdeutz @fancyFranci phpunit.xml.dist @rdeutz @hackwar @fancyFranci phpunit-pgsql.xml.dist @rdeutz @hackwar @fancyFranci -# HttpHeaders Plugin -plugins/system/httpheaders/* @zero-24 - # Workflow administrator/components/com_workflow/* @bembelimen @hleithner administrator/language/en-GB/com_workflow.ini @bembelimen @hleithner diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 50b6393e5c76d..eb65c17eb65ff 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -7,19 +7,22 @@ You are welcome to submit a contribution for review and possible inclusion in th 2) Follow the [Joomla! Coding Standards](https://developer.joomla.org/coding-standards.html). 3) When filing an issue or opening a PR, please include a clear title and description. The title should be a short summary of an issue and, if possible, should include a reference to an open issue. For example, `Invalid Query in com_admin (Ref #1234)` would be sufficient. All issues and PRs should include a description with as much detail as possible. -If it is a PR, include what the issue is, what the PR is addressing, testing instructions and environmental information (PHP version, database driver and version, and other data you can retrieve from your site's system information view) in case the issue is specific to certain environments. If additional information is needed, please be prepared to provide it as our community members review your submission. + If it is a PR, include what the issue is, what the PR is addressing, testing instructions and environmental information (PHP version, database driver and version, and other data you can retrieve from your site's system information view) in case the issue is specific to certain environments. If additional information is needed, please be prepared to provide it as our community members review your submission. 4) Report security issues to the Joomla! Security Strike Team (JSST) at security@joomla.org or use the [JSST contact form](https://developer.joomla.org/contact-security-team.html). Please do not use the public tracker for security issues. +5) If you have a feature request, then please open a discussion to define the feature request and discuss possible solutions. Discussions can be converted into issues when the request is defined sufficiently that a developer can start coding the feature. In this process you will get feedback from the maintainers, if the feature is something for the Joomla core distribution or not. + Please be patient as not all items will be tested immediately (remember, all bug testing for the Joomla! CMS is done by volunteers) and be receptive to feedback about your code. #### Branches -PRs should usually be made to the `4.3-dev` branch as this contains the most recent version of the code. -There are other branches available which serve specific purposes. +While 4.4 is in maintenance mode, ie we are still fixing bugs, PRs should be made to the `4.4-dev` branch. Merged bugfixes will be upmerged into the current 5.x branch. If a bug is only in the 5.x series the PR should be made to the current 5.x branch (currently 5.1). + | Branch | Purpose | | ------ | ------- | -| 3.10-dev | Branch for the Joomla 3.x series. The 3.10 series release will now only include security patches. | -| 4.3-dev | Branch for the current minor Joomla version.| -| 4.4-dev | Branch for the next minor Joomla version. Commits to 4.3-dev will be applied to this branch as well. | -| 5.0-dev | Branch for the next major Joomla version. New features go into this branch. | +| 4.4-dev | Branch for the current 4.x Joomla version. Currently in maintenance mode | +| 5.1-dev | Branch for the current 5.x Joomla version. Bugfix only for 5.x go into this branch. | +| 5.2-dev | Branch for the next minor 5.x Joomla version. New features go into this branch. | +| 6.0-dev | Branch for the next major Joomla version. New features that include a b/c break have to go into this branch. | + diff --git a/README.md b/README.md index 6e97a270c7f3b..849ec8d5bf07e 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,7 @@ Overview What is Joomla? --------------------- * [Joomla!](https://www.joomla.org/about-joomla.html) is a **Content Management System** (CMS) which enables you to build websites and powerful online applications. -* It is a simple and powerful web server application which requires a server with PHP and either MySQL or PostgreSQL to run. You can find [full technical requirements here](https://downloads.joomla.org/technical-requirements). +* It is a simple and powerful web server application which requires a server with PHP and either MySQL, MariaDB or PostgreSQL to run. You can find [full technical requirements here](https://downloads.joomla.org/technical-requirements). * Joomla! is **free and Open Source software** distributed under the GNU General Public License version 2 or later. Looking for an installable package? diff --git a/README.txt b/README.txt index df1473dc4d14e..65007eade1214 100644 --- a/README.txt +++ b/README.txt @@ -12,7 +12,7 @@ The Joomla! 5.2 branch is under heavy development and not all links in this docu 2- What is Joomla? * Joomla! is a Content Management System (CMS) which enables you to build websites and powerful online applications. * It's a free and Open Source software, distributed under the GNU General Public License version 2 or later. - * This is a simple and powerful web server application and it requires a server with PHP and either MySQL, PostgreSQL or SQL Server to run. + * This is a simple and powerful web server application and it requires a server with PHP and either MySQL, MariaDB or PostgreSQL to run. You can find full technical requirements here: https://downloads.joomla.org/technical-requirements. 3- Is Joomla! for you? diff --git a/administrator/components/com_actionlogs/src/Helper/ActionlogsHelper.php b/administrator/components/com_actionlogs/src/Helper/ActionlogsHelper.php index 102e2638c7538..658788a9486c4 100644 --- a/administrator/components/com_actionlogs/src/Helper/ActionlogsHelper.php +++ b/administrator/components/com_actionlogs/src/Helper/ActionlogsHelper.php @@ -177,10 +177,10 @@ public static function getLogContentTypeParams($context) */ public static function getHumanReadableLogMessage($log, $generateLinks = true) { + static::loadActionLogPluginsLanguage(); static $links = []; - - $message = Text::_($log->message_language_key); - $messageData = json_decode($log->message, true); + $message = Text::_($log->message_language_key); + $messageData = json_decode($log->message, true); // Special handling for translation extension name if (isset($messageData['extension_name'])) { diff --git a/administrator/components/com_admin/script.php b/administrator/components/com_admin/script.php index 045d2017ee086..8932fd19a54db 100644 --- a/administrator/components/com_admin/script.php +++ b/administrator/components/com_admin/script.php @@ -2326,6 +2326,13 @@ public function deleteUnexistingFiles($dryRun = false, $suppressOutput = false) '/administrator/components/com_admin/sql/updates/postgresql/4.4.4-2024-03-28.sql', '/administrator/modules/mod_post_installation_messages/mod_post_installation_messages.php', '/media/vendor/punycode/LICENSE-MIT.txt', + // From 5.1.0 to 5.1.1 + '/libraries/vendor/cweagans/composer-patches/LICENSE.md', + '/libraries/vendor/cweagans/composer-patches/src/PatchEvent.php', + '/libraries/vendor/cweagans/composer-patches/src/PatchEvents.php', + '/libraries/vendor/cweagans/composer-patches/src/Patches.php', + '/libraries/vendor/cweagans/composer-patches/tests/PatchEventTest.php', + '/libraries/vendor/laminas/laminas-diactoros/PATCHES.txt', ]; $folders = [ @@ -2585,6 +2592,11 @@ public function deleteUnexistingFiles($dryRun = false, $suppressOutput = false) '/libraries/src/Event/Router', // From 5.1.0-beta2 to 5.1.0-rc1 '/media/vendor/punycode', + // From 5.1.0 to 5.1.1 + '/libraries/vendor/cweagans/composer-patches/tests', + '/libraries/vendor/cweagans/composer-patches/src', + '/libraries/vendor/cweagans/composer-patches', + '/libraries/vendor/cweagans', ]; $status['files_checked'] = $files; diff --git a/administrator/components/com_joomlaupdate/extract.php b/administrator/components/com_joomlaupdate/extract.php index 98c33cd1f0197..b6e0f74a3c6ff 100644 --- a/administrator/components/com_joomlaupdate/extract.php +++ b/administrator/components/com_joomlaupdate/extract.php @@ -1400,6 +1400,9 @@ private function processTypeFileUncompressed(): bool if ($this->dataReadLength == 0) { // Before processing file data, ensure permissions are adequate $this->setCorrectPermissions($this->fileHeader->file); + + // This file is changed during the script's operation so we clear the status cache. + clearstatcache($this->fileHeader->file); } // Open the output file @@ -1491,6 +1494,9 @@ private function processTypeFileCompressed(): bool // Before processing file data, ensure permissions are adequate $this->setCorrectPermissions($this->fileHeader->file); + // This file is changed during the script's operation so we clear the status cache. + clearstatcache($this->fileHeader->file); + // Open the output file $outfp = @fopen($this->fileHeader->realFile, 'wb'); diff --git a/administrator/components/com_joomlaupdate/src/Model/UpdateModel.php b/administrator/components/com_joomlaupdate/src/Model/UpdateModel.php index 5b2bc74f08d0a..b28ed81f2c716 100644 --- a/administrator/components/com_joomlaupdate/src/Model/UpdateModel.php +++ b/administrator/components/com_joomlaupdate/src/Model/UpdateModel.php @@ -1632,7 +1632,7 @@ private function checkCompatibility($updateFileUrl, $joomlaTargetVersion) $minimumStability = ComponentHelper::getParams('com_installer')->get('minimum_stability', Updater::STABILITY_STABLE); $update = new Update(); - $update->set('jversion.full', $joomlaTargetVersion); + $update->setTargetVersion($joomlaTargetVersion); $update->loadFromXml($updateFileUrl, $minimumStability); $compatibleVersions = $update->get('compatibleVersions'); diff --git a/administrator/components/com_redirect/config.xml b/administrator/components/com_redirect/config.xml index c8f3d2f638805..ef52d451120e5 100644 --- a/administrator/components/com_redirect/config.xml +++ b/administrator/components/com_redirect/config.xml @@ -10,6 +10,7 @@ name="mode" type="radio" label="COM_REDIRECT_MODE_LABEL" + description="COM_REDIRECT_MODE_DESC" layout="joomla.form.field.radio.switcher" default="0" > diff --git a/administrator/components/com_users/tmpl/methods/list.php b/administrator/components/com_users/tmpl/methods/list.php index aa0c2a0d355f3..889209626334b 100644 --- a/administrator/components/com_users/tmpl/methods/list.php +++ b/administrator/components/com_users/tmpl/methods/list.php @@ -69,12 +69,10 @@ class="img-fluid"
- - -
- id . ($this->returnURL ? '&returnurl=' . $this->escape(urlencode($this->returnURL)) : '') . '&user_id=' . $this->user->id)) ?> -
- + +
+ id . ($this->returnURL ? '&returnurl=' . $this->escape(urlencode($this->returnURL)) : '') . '&user_id=' . $this->user->id), 'text-decoration-underline') ?> +

default) : ?> diff --git a/administrator/language/en-GB/com_redirect.ini b/administrator/language/en-GB/com_redirect.ini index 7fb4e39ed45e6..76501a2367e29 100644 --- a/administrator/language/en-GB/com_redirect.ini +++ b/administrator/language/en-GB/com_redirect.ini @@ -66,6 +66,7 @@ COM_REDIRECT_HEADING_STATUS_CODE_DESC="Status Code descending" COM_REDIRECT_MANAGER_LINK_EDIT="Redirects: Edit" COM_REDIRECT_MANAGER_LINK_NEW="Redirects: New" COM_REDIRECT_MANAGER_LINKS="Redirects: Links" +COM_REDIRECT_MODE_DESC="The Advanced Mode allows the use of HTTP 1.1 status codes other than the default '301 Permanently Moved'." COM_REDIRECT_MODE_LABEL="Activate Advanced Mode" COM_REDIRECT_N_ITEMS_ARCHIVED="%d links archived." COM_REDIRECT_N_ITEMS_ARCHIVED_1="Link archived." diff --git a/administrator/language/en-GB/com_users.ini b/administrator/language/en-GB/com_users.ini index 16f622a8c5871..bc40ad27db639 100644 --- a/administrator/language/en-GB/com_users.ini +++ b/administrator/language/en-GB/com_users.ini @@ -253,7 +253,7 @@ COM_USERS_MFA_ACTIVE="Uses Multi-factor Authentication" COM_USERS_MFA_ADD_AUTHENTICATOR_OF_TYPE="Add a new %s" COM_USERS_MFA_ADD_PAGE_HEAD="Add a Multi-factor Authentication Method" COM_USERS_MFA_BACKUPCODES_PRINT_PROMPT="Backup Codes let you log into the site if your regular Multi-factor Authentication method does not work or you no longer have access to it. Each code can be used only once." -COM_USERS_MFA_BACKUPCODES_PRINT_PROMPT_HEAD="Print these codes and keep them in your wallet." +COM_USERS_MFA_BACKUPCODES_PRINT_PROMPT_HEAD="Print these codes and keep them in your wallet." COM_USERS_MFA_BACKUPCODES_RESET="Regenerate Backup Codes" COM_USERS_MFA_BACKUPCODES_RESET_INFO="Use the \"Regenerate Backup Codes\" button on the toolbar to generate a new set of Backup Codes. We recommend that you do this if you think your Backup Codes are compromised, e.g. someone got hold of a printout with them, or if you are running low on available Backup Codes." COM_USERS_MFA_EDIT_FIELD_DEFAULT="Make this the default Multi-factor Authentication method" diff --git a/administrator/language/en-GB/install.xml b/administrator/language/en-GB/install.xml index 89eb403671169..33e5241384b82 100644 --- a/administrator/language/en-GB/install.xml +++ b/administrator/language/en-GB/install.xml @@ -3,7 +3,7 @@ English (en-GB) en-GB 5.2.0 - 2024-04 + 2024-05 Joomla! Project admin@joomla.org www.joomla.org diff --git a/administrator/language/en-GB/langmetadata.xml b/administrator/language/en-GB/langmetadata.xml index c2a33bddfc798..ba5dc208257e2 100644 --- a/administrator/language/en-GB/langmetadata.xml +++ b/administrator/language/en-GB/langmetadata.xml @@ -2,7 +2,7 @@ English (en-GB) 5.2.0 - 2024-04 + 2024-05 Joomla! Project admin@joomla.org www.joomla.org diff --git a/administrator/language/en-GB/lib_joomla.ini b/administrator/language/en-GB/lib_joomla.ini index be68c0764c93a..637d26c4feafe 100644 --- a/administrator/language/en-GB/lib_joomla.ini +++ b/administrator/language/en-GB/lib_joomla.ini @@ -663,6 +663,7 @@ JLIB_INSTALLER_SQL_END="End of SQL updates." JLIB_INSTALLER_SQL_END_NOT_COMPLETE="End of SQL updates - INCOMPLETE." JLIB_INSTALLER_TUF_DEBUG_MESSAGE="TUF Debug Message: %s" JLIB_INSTALLER_TUF_DOWNLOAD_SIZE="The size of the update downloaded did not match the expected size." +JLIB_INSTALLER_TUF_ERROR_GENERIC="Could not fetch update information, enable system debug mode for further information." JLIB_INSTALLER_TUF_FREEZE_ATTACK="Update not possible because the offered update has expired." JLIB_INSTALLER_TUF_INVALID_METADATA="The saved TUF update information is invalid." JLIB_INSTALLER_TUF_NOT_AVAILABLE="TUF is not available for extensions yet." diff --git a/administrator/manifests/files/joomla.xml b/administrator/manifests/files/joomla.xml index 0c2ba2566b9cc..a40693afda572 100644 --- a/administrator/manifests/files/joomla.xml +++ b/administrator/manifests/files/joomla.xml @@ -7,7 +7,7 @@ (C) 2019 Open Source Matters, Inc. GNU General Public License version 2 or later; see LICENSE.txt 5.2.0-alpha1-dev - 2024-04 + 2024-05 FILES_JOOMLA_XML_DESCRIPTION administrator/components/com_admin/script.php diff --git a/administrator/manifests/packages/pkg_en-GB.xml b/administrator/manifests/packages/pkg_en-GB.xml index 51a5c47edf495..3724a56b68096 100644 --- a/administrator/manifests/packages/pkg_en-GB.xml +++ b/administrator/manifests/packages/pkg_en-GB.xml @@ -3,7 +3,7 @@ English (en-GB) Language Pack en-GB 5.2.0.1 - 2024-04 + 2024-05 Joomla! Project admin@joomla.org www.joomla.org diff --git a/api/language/en-GB/install.xml b/api/language/en-GB/install.xml index b0b905235db88..1faf0713db7cc 100644 --- a/api/language/en-GB/install.xml +++ b/api/language/en-GB/install.xml @@ -3,7 +3,7 @@ English (en-GB) en-GB 5.2.0 - 2024-04 + 2024-05 Joomla! Project admin@joomla.org www.joomla.org diff --git a/api/language/en-GB/langmetadata.xml b/api/language/en-GB/langmetadata.xml index b5501bbab38d5..3ef719594d045 100644 --- a/api/language/en-GB/langmetadata.xml +++ b/api/language/en-GB/langmetadata.xml @@ -2,7 +2,7 @@ English (en-GB) 5.2.0 - 2024-04 + 2024-05 Joomla! Project admin@joomla.org www.joomla.org diff --git a/components/com_users/tmpl/methods/list.php b/components/com_users/tmpl/methods/list.php index c6b39ce1596c3..6188cd44131a3 100644 --- a/components/com_users/tmpl/methods/list.php +++ b/components/com_users/tmpl/methods/list.php @@ -69,12 +69,10 @@ class="img-fluid"
- - -
- id . ($this->returnURL ? '&returnurl=' . $this->escape(urlencode($this->returnURL)) : '') . '&user_id=' . $this->user->id)) ?> -
- + +
+ id . ($this->returnURL ? '&returnurl=' . $this->escape(urlencode($this->returnURL)) : '') . '&user_id=' . $this->user->id), 'text-decoration-underline') ?> +

default) : ?> diff --git a/installation/language/ca-ES/langmetadata.xml b/installation/language/ca-ES/langmetadata.xml index 00078a8c4dee4..bea6040515851 100644 --- a/installation/language/ca-ES/langmetadata.xml +++ b/installation/language/ca-ES/langmetadata.xml @@ -11,7 +11,7 @@ Catalan (ca-ES) - Català (Catalunya) + Català (ca-ES) ca-ES 0 diff --git a/installation/language/en-GB/langmetadata.xml b/installation/language/en-GB/langmetadata.xml index ccf0614488bb7..3a269ef1968f4 100644 --- a/installation/language/en-GB/langmetadata.xml +++ b/installation/language/en-GB/langmetadata.xml @@ -2,7 +2,7 @@ English (United Kingdom) 5.2.0 - 2024-04 + 2024-05 Joomla! Project (C) 2005 Open Source Matters, Inc. GNU General Public License version 2 or later; see LICENSE.txt diff --git a/installation/language/hr-HR/joomla.ini b/installation/language/hr-HR/joomla.ini index 0eb0582729c0f..3b1746d26a89f 100644 --- a/installation/language/hr-HR/joomla.ini +++ b/installation/language/hr-HR/joomla.ini @@ -231,7 +231,7 @@ JLIB_FILESYSTEM_ERROR_PATH_IS_NOT_A_FOLDER="%1$s: Putanja nije mapa. Putanja: %2 JLIB_FORM_FIELD_INVALID="Neispravno polje: " JLIB_FORM_VALIDATE_FIELD_INVALID="Neispravno polje: %s" JLIB_FORM_VALIDATE_FIELD_REQUIRED="Potrebno polje: %s" -JLIB_INSTALLER_ABORT="Odustajanje od instalacije jezika: %s" +JLIB_INSTALLER_ABORT="Zaustavljanje instalacije jezika: %s" JLIB_INSTALLER_ABORT_CREATE_DIRECTORY="Dodatak %1$s: Nije uspjelo kreiranje direktorija: %2$s" JLIB_INSTALLER_ABORT_NOINSTALLPATH="Instalacijska putanja ne postoji" JLIB_INSTALLER_ABORT_PACK_INSTALL_ERROR_EXTENSION="Paket %1$s: Došlo je do greške prilikom instalacije dodatka: %2$s." diff --git a/installation/language/lv-LV/joomla.ini b/installation/language/lv-LV/joomla.ini index 8b7aeb0aaba71..cbc5b63fcb738 100644 --- a/installation/language/lv-LV/joomla.ini +++ b/installation/language/lv-LV/joomla.ini @@ -81,11 +81,13 @@ INSTL_DATABASE_NAME_LABEL="Šim datu bāzes tipam nav atrodama shēma." INSTL_DATABASE_NAME_MSG_MYSQL="Datu bāzes nosaukums nav derīgs. Tajā nedrīkst būt šādas rakstzīmes: \ /" INSTL_DATABASE_NAME_MSG_POSTGRES="Nepareizs datu bāzes nosaukums. Tam jāsākas ar burtu un jāturpinās ar ciparu, burtu kombināciju." INSTL_DATABASE_NO_SCHEMA="Šim datu bāzes tipam nav atrodama shēma." +INSTL_DATABASE_PASSWORD_DESC="Ievadiet datu bāzes paroli." INSTL_DATABASE_PREFIX_DESC="Ievadiet tabulas prefiksu vai lietojiet automātiski ģenerētu." INSTL_DATABASE_PREFIX_DUPLICATE_DESC="Ja lietojat eksistējošu datu bāzi ar tabulām kurām ir tāds pats prefikss, Joomla pārsauks šīs tabulas pievienojot prefiksu \"bak_\"." INSTL_DATABASE_PREFIX_MSG="Datu bāzes prefiksam ir jāsākas ar burtu, pēc tā var būt cipari, burti vai zemsvītra" INSTL_DATABASE_RESPONSE_ERROR="Instalēšanas process neizdevās." INSTL_DATABASE_TYPE_DESC="Izvēlieties datu bāzes tipu." +INSTL_DATABASE_USER_DESC="Ievadiet datu bāzes lietotāju." INSTL_DATABASE_VALIDATION_ERROR="Pārbaudiet savu datu bāzes pieslēguma datus, datu bāzes tipu, datu bāzes nosaukumu vai resursdatora nosaukumu. Ja jums ir instalēta MySQL 8, lūdzu, izlasiet šo wiki , lai iegūtu plašāku informāciju." INSTL_CONNECT_DB="Iestatīt datu bāzes pieslēgumu" diff --git a/installation/language/nl-BE/joomla.ini b/installation/language/nl-BE/joomla.ini index 08b074dbfcbe1..408b93c2cc45d 100644 --- a/installation/language/nl-BE/joomla.ini +++ b/installation/language/nl-BE/joomla.ini @@ -81,11 +81,13 @@ INSTL_DATABASE_NAME_LABEL="Database naam" INSTL_DATABASE_NAME_MSG_MYSQL="De naam van de database is ongeldig. Het mag de volgende tekens NIET bevatten: \ /" INSTL_DATABASE_NAME_MSG_POSTGRES="De naam van de database is ongeldig. Deze moet beginnen met een letter, gevolgd door alfanumerieke tekens." INSTL_DATABASE_NO_SCHEMA="Er bestaat geen database schema voor dit database type." +INSTL_DATABASE_PASSWORD_DESC="Voer het database wachtwoord in dat is aangemaakt of een wachtwoord dat door de host is verstrekt." INSTL_DATABASE_PREFIX_DESC="Een tabel voorvoegsel invoeren of de willekeurig gegenereerde gebruiken." INSTL_DATABASE_PREFIX_DUPLICATE_DESC="Als een bestaande database gebruikt wordt met tabellen met dezelfde voorvoegsel, zal Joomla deze bestaande tabellen hernoemen door het voorvoegsel \"bak_\" toe te voegen." INSTL_DATABASE_PREFIX_MSG="Het voorvoegsel van de tabel moet beginnen met een letter, eventueel gevolgd door alfanumerieke tekens en een onderstrepingsteken" INSTL_DATABASE_RESPONSE_ERROR="Het installatieproces is mislukt." INSTL_DATABASE_TYPE_DESC="Selecteer het databasetype." +INSTL_DATABASE_USER_DESC="Voer de gebruikersnaam in die is aangemaakt of een gebruikersnaam die door de host is verstrekt." INSTL_DATABASE_VALIDATION_ERROR="Controleer uw database inloggegevens, database type, database naam of hostname. Als u MySQL 8 geïnstalleerd heeft, lees dan deze wiki voor meer informatie." INSTL_CONNECT_DB="Databaseverbinding instellen" diff --git a/installation/language/pt-BR/joomla.ini b/installation/language/pt-BR/joomla.ini index 99ad7d429e4d6..cb2bf295f8878 100644 --- a/installation/language/pt-BR/joomla.ini +++ b/installation/language/pt-BR/joomla.ini @@ -178,7 +178,7 @@ INSTL_HEADER_ERROR="Erro" INSTL_PAGE_TITLE="Instalador Joomla" ; Configuration model INSTL_ERROR_CONNECT_DB="Não foi possível conectar ao banco de dados. Número retornado: %s." -INSTL_STD_OFFLINE_MSG="Este site está fora do ar para manutenção.
Por favor, verifique novamente em breve." +INSTL_STD_OFFLINE_MSG="Este site está em manutenção.
Por favor, volte em breve." ; Languages model INSTL_ERROR_INVALID_URL="URL Inválida" ; Others diff --git a/installation/language/ta-IN/joomla.ini b/installation/language/ta-IN/joomla.ini index 279111c9d4cc3..4c4cd3be1a381 100644 --- a/installation/language/ta-IN/joomla.ini +++ b/installation/language/ta-IN/joomla.ini @@ -200,7 +200,7 @@ INSTL_SESSION_AUTO_START="Session Auto Start" INSTL_WRITABLE="%s-ஐ உருவாக்கப் போதுமான அனுமதி இல்லை." INSTL_ZIP_SUPPORT_AVAILABLE="Native ZIP Support" ; Global strings -JADMINISTRATOR="நிர்வாகம்" +JADMINISTRATOR="நிர்வாகி" JEMAIL="மின்-அஞ்சல்" JERROR="பிழை" JERROR_LAYOUT_ERROR_HAS_OCCURRED_WHILE_PROCESSING_YOUR_REQUEST="தங்கள் வேண்டுதலைச் செயலாக்கும்போது ஒரு பிழை ஏற்பட்டுள்ளது." diff --git a/installation/language/ur-PK/joomla.ini b/installation/language/ur-PK/joomla.ini index a17bfbbd028c6..a8541c19a3498 100644 --- a/installation/language/ur-PK/joomla.ini +++ b/installation/language/ur-PK/joomla.ini @@ -26,7 +26,7 @@ BUILD_MIN_PHP_ERROR_TEXT="جملہ کے اس ورژن کو چلانے کے لی BUILD_MIN_PHP_ERROR_URL_TEXT="اس کو حل کرنے میں میری مدد کریں۔" ; Main Config INSTL_SELECT_INSTALL_LANG="انسٹالیشن کی زبان منتخب کریں۔" -INSTL_SELECT_LANGUAGE_TITLE="زبان منتخب کریں۔" +INSTL_SELECT_LANGUAGE_TITLE="زبان منتخب کریں" INSTL_SETUP_LOGIN_DATA="لاگ ان ڈیٹا سیٹ کریں۔" INSTL_WARNJAVASCRIPT="وارننگ! جملہ کی مناسب تنصیب کے لیے جاوا اسکرپٹ کا فعال ہونا ضروری ہے۔" INSTL_WARNJSON="جملہ کو انسٹال کرنے کے لیے آپ کی پی ایچ پی کی انسٹالیشن میں JSON کا فعال ہونا ضروری ہے!" @@ -178,7 +178,7 @@ INSTL_HEADER_ERROR="آپ کے براؤزر کوکیز میں فعّال ظاہ INSTL_PAGE_TITLE="جملہ انسٹالر" ; Configuration model INSTL_ERROR_CONNECT_DB="ڈیٹا بیس سے منسلک نہیں ہو سکا۔ کنیکٹر نے خرابی کا پیغام واپس کیا: %d." -INSTL_STD_OFFLINE_MSG="یہ سائٹ دیکھ بھال کے لیے بند ہے۔
براہ کرم جلد ہی دوبارہ چیک کریں۔." +INSTL_STD_OFFLINE_MSG="یہ سائٹ دیکھ بھال کے لیے بند ہے۔
براہ کرم جلد ہی دوبارہ چیک کریں۔" ; Languages model INSTL_ERROR_INVALID_URL="ناجائز یو آر ایل" ; Others @@ -203,12 +203,12 @@ INSTL_ZIP_SUPPORT_AVAILABLE="مقامی زپ سپورٹ" JADMINISTRATOR="منتظم" JEMAIL="ای میل" JERROR="آپ کے براؤزر کوکیز میں فعّال ظاہر نہیں ہوئیں۔ آپ اس خصوصیت کو غیر فعّال رکھ کر ایپلیکیشن نصب نہیں کرسکتے۔ یا پھر سرور کے session.save_path ساتھ بھی کوئی مسئلہ ہوسکتا ہے۔ اگر یہی صورتحال ہے اور آپ اس مسئلے کو خود دیکھ یا حل نہیں کرسکتے تو براہ کرم اپنے ہوسٹنگ فراہم کرنے والے ادارے سے رابطہ کیجیے۔" -JERROR_LAYOUT_ERROR_HAS_OCCURRED_WHILE_PROCESSING_YOUR_REQUEST="آپ کی درخواست پر کارروائی کرتے وقت ایک خرابی پیش آگئی ہے۔." +JERROR_LAYOUT_ERROR_HAS_OCCURRED_WHILE_PROCESSING_YOUR_REQUEST="آپ کی درخواست پر کارروائی کرتے وقت ایک خرابی پیش آگئی ہے۔" JGLOBAL_ISFREESOFTWARE="%s مفت سافٹ ویئر ہے جو %s کے تحت جاری کیا گیا ہے۔" JGLOBAL_LANGUAGE_VERSION_NOT_PLATFORM="زبان کا پیک اس جملہ ورژن سے میل نہیں کھاتا۔ کچھ سٹرنگز غائب ہو سکتے ہیں اور انگریزی میں دکھائے جائیں گے۔" JGLOBAL_SELECT_AN_OPTION="ایک آپشن منتخب کریں۔" JGLOBAL_SELECT_NO_RESULTS_MATCH="کوئی نتائج میچ" -JGLOBAL_SELECT_SOME_OPTIONS="کچھ اختیارات منتخب کریں۔" +JGLOBAL_SELECT_SOME_OPTIONS="ایک آپشن منتخب کریں۔" JHIDEPASSWORD="پاس ورڈ چھپائیں۔" JINVALID_TOKEN="غلط ٹوکن" JINVALID_TOKEN_NOTICE="سیکیورٹی ٹوکن مماثل نہیں ہے۔ کسی بھی حفاظتی خلاف ورزی کو روکنے کے لیے درخواست کو روک دیا گیا تھا۔ دوبارہ کوشش کریں." @@ -218,7 +218,7 @@ JNOTICE="نہیں" JOFF="Off" JON="On" JPREVIOUS="پیچھے" -JSHOWPASSWORD="پاسورڈ دکھاو" +JSHOWPASSWORD="Show پاس ورڈ" JSITE="سائٹ" JSKIP="چھوڑ دو" JUSERNAME="صارف کا نام" @@ -231,7 +231,7 @@ JLIB_DATABASE_ERROR_VALID_MAIL="آپ کا درج کردہ ای میل پتہ غ JLIB_ENVIRONMENT_SESSION_EXPIRED="آپ کے سیشن کی میعاد ختم ہو گئی ہے، براہ کرم صفحہ دوبارہ لوڈ کریں۔" JLIB_FILESYSTEM_ERROR_PATH_IS_NOT_A_FOLDER="%1$s: پاتھ فولڈر نہیں ہے۔ راستہ: %2$s" JLIB_FORM_FIELD_INVALID="غلط فیلڈ: " -JLIB_FORM_VALIDATE_FIELD_INVALID="غلط فیلڈ: %s" +JLIB_FORM_VALIDATE_FIELD_INVALID="غلط فیلڈ:" JLIB_FORM_VALIDATE_FIELD_REQUIRED="فیلڈ درکار ہے: %s" JLIB_INSTALLER_ABORT="Aborting language installation: %s" JLIB_INSTALLER_ABORT_CREATE_DIRECTORY="ایکسٹینشن %1$s: فولڈر بنانے میں ناکام: %2$s" @@ -258,10 +258,10 @@ ADMIN_PASSWORD="ایڈمنسٹریٹر پاس ورڈ" SITE_NAME="سائٹ کا نام" ; Database types (allows for a more descriptive label than the internal name) MYSQL="MySQL (PDO)" -MYSQLI="MySQLi" +MYSQLI="مائی ایس کیو ایل" ORACLE="اوریکل" PGSQL="PostgreSQL (PDO)" -POSTGRESQL="PostgreSQL" +POSTGRESQL="پوسٹگری ایس کیو ایل" SQLITE="SQLite" ; Javascript message titles ERROR="آپ کے براؤزر کوکیز میں فعّال ظاہر نہیں ہوئیں۔ آپ اس خصوصیت کو غیر فعّال رکھ کر ایپلیکیشن نصب نہیں کرسکتے۔ یا پھر سرور کے session.save_path ساتھ بھی کوئی مسئلہ ہوسکتا ہے۔ اگر یہی صورتحال ہے اور آپ اس مسئلے کو خود دیکھ یا حل نہیں کرسکتے تو براہ کرم اپنے ہوسٹنگ فراہم کرنے والے ادارے سے رابطہ کیجیے۔" @@ -272,7 +272,7 @@ WARNING="خبردار" JLIB_JS_AJAX_ERROR_CONNECTION_ABORT="JSON ڈیٹا حاصل کرنے کے دوران ایک کنکشن ختم ہو گیا ہے۔" JLIB_JS_AJAX_ERROR_NO_CONTENT="کوئی مواد واپس نہیں کیا گیا۔" JLIB_JS_AJAX_ERROR_OTHER="JSON ڈیٹا حاصل کرتے وقت ایک خرابی پیش آگئی: HTTP %d اسٹیٹس کوڈ۔" -JLIB_JS_AJAX_ERROR_PARSE="مندرجہ ذیل JSON ڈیٹا پر کارروائی کرتے وقت تجزیہ کی خرابی پیش آگئی:
%s" +JLIB_JS_AJAX_ERROR_PARSE="مندرجہ ذیل JSON ڈیٹا پر کارروائی کے دوران تجزیہ کی خرابی پیش آگئی:
%s" JLIB_JS_AJAX_ERROR_TIMEOUT="JSON ڈیٹا حاصل کرتے وقت ایک ٹائم آؤٹ ہو گیا ہے۔" ; Field password messages JFIELD_PASSWORD_INDICATE_COMPLETE="پاس ورڈ قبول کر لیا گیا۔" diff --git a/language/en-GB/com_users.ini b/language/en-GB/com_users.ini index 6878e13fce773..b14aaf81e4f45 100644 --- a/language/en-GB/com_users.ini +++ b/language/en-GB/com_users.ini @@ -45,7 +45,7 @@ COM_USERS_MAIL_SEND_FAILURE_SUBJECT="Error sending email" COM_USERS_MFA_ADD_AUTHENTICATOR_OF_TYPE="Add a new %s" COM_USERS_MFA_ADD_PAGE_HEAD="Add a Multi-factor Authentication Method" COM_USERS_MFA_BACKUPCODES_PRINT_PROMPT="Backup Codes let you log into the site if your regular Multi-factor Authentication method does not work or you no longer have access to it. Each code can be used only once." -COM_USERS_MFA_BACKUPCODES_PRINT_PROMPT_HEAD="Print these codes and keep them in your wallet." +COM_USERS_MFA_BACKUPCODES_PRINT_PROMPT_HEAD="Print these codes and keep them in your wallet." COM_USERS_MFA_BACKUPCODES_RESET="Regenerate Backup Codes" COM_USERS_MFA_BACKUPCODES_RESET_INFO="Use the button below to generate a new set of Backup Codes. We recommend that you do this if you think your Backup Codes are compromised, e.g. someone got hold of a printout with them, or if you are running low on available Backup Codes." COM_USERS_MFA_EDIT_FIELD_DEFAULT="Make this the default Multi-factor Authentication method" diff --git a/language/en-GB/install.xml b/language/en-GB/install.xml index 8e2ccc0454ccc..9c1b02846b682 100644 --- a/language/en-GB/install.xml +++ b/language/en-GB/install.xml @@ -3,7 +3,7 @@ English (en-GB) en-GB 5.2.0 - 2024-04 + 2024-05 Joomla! Project admin@joomla.org www.joomla.org diff --git a/language/en-GB/langmetadata.xml b/language/en-GB/langmetadata.xml index 98f0363a90c7a..47a1a13e0a839 100644 --- a/language/en-GB/langmetadata.xml +++ b/language/en-GB/langmetadata.xml @@ -2,7 +2,7 @@ English (en-GB) 5.2.0 - 2024-04 + 2024-05 Joomla! Project admin@joomla.org www.joomla.org diff --git a/libraries/src/Changelog/Changelog.php b/libraries/src/Changelog/Changelog.php index c17c499a7dc81..37ff5c1f8e9b7 100644 --- a/libraries/src/Changelog/Changelog.php +++ b/libraries/src/Changelog/Changelog.php @@ -163,7 +163,7 @@ class Changelog * Update manifest `` element * * @var string - * @since __DEPLOY_VERSION__ + * @since 5.1.1 */ protected $folder; diff --git a/libraries/src/Helper/MediaHelper.php b/libraries/src/Helper/MediaHelper.php index 9eb6298cfdd9a..7348183bca795 100644 --- a/libraries/src/Helper/MediaHelper.php +++ b/libraries/src/Helper/MediaHelper.php @@ -277,7 +277,7 @@ public function canUpload($file, $component = 'com_media', $allowedExecutables = // If tmp_name is empty, then the file was bigger than the PHP limit if (!empty($file['tmp_name'])) { // Get the mime type this is an image file - $mime = static::getMimeType($file['tmp_name'], true); + $mime = static::getMimeType($file['tmp_name'], static::isImage($file['tmp_name'])); // Did we get anything useful? if ($mime != false) { diff --git a/libraries/src/Http/Transport/CurlTransport.php b/libraries/src/Http/Transport/CurlTransport.php index 78320ae860e03..47b3485e18593 100644 --- a/libraries/src/Http/Transport/CurlTransport.php +++ b/libraries/src/Http/Transport/CurlTransport.php @@ -190,7 +190,7 @@ public function request($method, UriInterface $uri, $data = null, array $headers // Manually follow redirects if server doesn't allow to follow location using curl if ($response->code >= 301 && $response->code < 400 && isset($response->headers['Location']) && (bool) $this->getOption('follow_location', true)) { - $redirect_uri = new Uri($response->headers['Location']); + $redirect_uri = new Uri($response->headers['Location'][0]); if (\in_array($redirect_uri->getScheme(), ['file', 'scp'])) { throw new \RuntimeException('Curl redirect cannot be used in file or scp requests.'); diff --git a/libraries/src/TUF/HttpLoader.php b/libraries/src/TUF/HttpLoader.php index b299866b9bf2d..483b93bb9e313 100644 --- a/libraries/src/TUF/HttpLoader.php +++ b/libraries/src/TUF/HttpLoader.php @@ -29,8 +29,13 @@ public function __construct(private readonly string $repositoryPath, private rea public function load(string $locator, int $maxBytes): PromiseInterface { - /** @var Http $client */ - $response = $this->http->get($this->repositoryPath . $locator); + try { + /** @var Http $client */ + $response = $this->http->get($this->repositoryPath . $locator); + } catch (\Exception $e) { + // We convert the generic exception thrown in the Http library into a TufException + throw new HttpLoaderException($e->getMessage(), $e->getCode(), $e); + } if ($response->code !== 200) { throw new RepoFileNotFound(); diff --git a/libraries/src/TUF/HttpLoaderException.php b/libraries/src/TUF/HttpLoaderException.php new file mode 100644 index 0000000000000..66219204a99cf --- /dev/null +++ b/libraries/src/TUF/HttpLoaderException.php @@ -0,0 +1,19 @@ + + * @license GNU General Public License version 2 or later; see LICENSE.txt + */ + +namespace Joomla\CMS\TUF; + +use Tuf\Exception\TufException; + +/** + * @since 5.1.1 + */ +class HttpLoaderException extends TufException +{ +} diff --git a/libraries/src/TUF/TufFetcher.php b/libraries/src/TUF/TufFetcher.php index a2c1840e389f8..d0f2e0ca0bd97 100644 --- a/libraries/src/TUF/TufFetcher.php +++ b/libraries/src/TUF/TufFetcher.php @@ -20,6 +20,7 @@ use Tuf\Exception\Attack\SignatureThresholdException; use Tuf\Exception\DownloadSizeException; use Tuf\Exception\MetadataException; +use Tuf\Exception\TufException; use Tuf\Loader\SizeCheckingLoader; // phpcs:disable PSR1.Files.SideEffects @@ -136,6 +137,8 @@ public function getValidUpdate() $this->app->enqueueMessage(Text::_('JLIB_INSTALLER_TUF_ROLLBACK_ATTACK'), CMSApplicationInterface::MSG_ERROR); } catch (SignatureThresholdException $e) { $this->app->enqueueMessage(Text::_('JLIB_INSTALLER_TUF_SIGNATURE_THRESHOLD'), CMSApplicationInterface::MSG_ERROR); + } catch (TufException $e) { + $this->app->enqueueMessage(Text::_('JLIB_INSTALLER_TUF_ERROR_GENERIC'), CMSApplicationInterface::MSG_ERROR); } $this->rollBackTufMetadata(); diff --git a/libraries/src/Updater/ConstraintChecker.php b/libraries/src/Updater/ConstraintChecker.php index 346d698d065d3..c6952265f2312 100644 --- a/libraries/src/Updater/ConstraintChecker.php +++ b/libraries/src/Updater/ConstraintChecker.php @@ -93,6 +93,14 @@ public function check(array $candidate, $minimumStability = Updater::STABILITY_S return false; } + // Check stability, assume true when not set + if ( + isset($candidate['stability']) + && !$this->checkStability($candidate['stability'], $minimumStability) + ) { + return false; + } + $result = true; // Check php_minimum, assume true when not set @@ -111,14 +119,6 @@ public function check(array $candidate, $minimumStability = Updater::STABILITY_S $result = false; } - // Check stability, assume true when not set - if ( - isset($candidate['stability']) - && !$this->checkStability($candidate['stability'], $minimumStability) - ) { - $result = false; - } - return $result; } diff --git a/libraries/src/Updater/Update.php b/libraries/src/Updater/Update.php index ed4e42bddbeff..2d27eb41f9e5b 100644 --- a/libraries/src/Updater/Update.php +++ b/libraries/src/Updater/Update.php @@ -256,11 +256,21 @@ class Update protected $stability; protected $supported_databases; protected $php_minimum; + protected $folder; + protected $changelogurl; public $sha256; public $sha384; public $sha512; protected $section; + /** + * Joomla! target version used by the pre-update check + * + * @var string + * @since 5.1.1 + */ + private $targetVersion; + /** * Gets the reference to the current direct parent * @@ -372,7 +382,7 @@ public function _endElement($parser, $name) if ( isset($this->currentUpdate->targetplatform->name) && $product == $this->currentUpdate->targetplatform->name - && preg_match('/^' . $this->currentUpdate->targetplatform->version . '/', $this->get('jversion.full', JVERSION)) + && preg_match('/^' . $this->currentUpdate->targetplatform->version . '/', $this->getTargetVersion()) ) { // Collect information on updates which do not meet PHP and DB version requirements $otherUpdateInfo = new \stdClass(); @@ -690,4 +700,34 @@ protected function stabilityTagToInteger($tag) return Updater::STABILITY_STABLE; } + + /** + * Set extension's Joomla! target version + * + * @param string $version The target version + * + * @return void + * + * @since 5.1.1 + */ + public function setTargetVersion($version) + { + $this->targetVersion = $version; + } + + /** + * Get extension's Joomla! target version + * + * @return string + * + * @since 5.1.1 + */ + public function getTargetVersion() + { + if (!$this->targetVersion) { + return JVERSION; + } + + return $this->targetVersion; + } } diff --git a/libraries/src/Version.php b/libraries/src/Version.php index 007208a11c64d..b3ca20cee60be 100644 --- a/libraries/src/Version.php +++ b/libraries/src/Version.php @@ -90,7 +90,7 @@ final class Version * @var string * @since 3.5 */ - public const RELDATE = '25-April-2024'; + public const RELDATE = '28-May-2024'; /** * Release time. @@ -98,7 +98,8 @@ final class Version * @var string * @since 3.5 */ - public const RELTIME = '08:00'; + + public const RELTIME = '17:00'; /** * Release timezone. diff --git a/modules/mod_stats/src/Helper/StatsHelper.php b/modules/mod_stats/src/Helper/StatsHelper.php index b8f50491542fe..47d5d2479daf4 100644 --- a/modules/mod_stats/src/Helper/StatsHelper.php +++ b/modules/mod_stats/src/Helper/StatsHelper.php @@ -41,7 +41,7 @@ class StatsHelper implements DatabaseAwareInterface * * @return array * - * @since __DEPLOY_VERSION__ + * @since 5.2.0 */ public function getStats(Registry &$params, CMSApplicationInterface $app) { @@ -174,7 +174,7 @@ public function getStats(Registry &$params, CMSApplicationInterface $app) * * @return array * - * @deprecated __DEPLOY_VERSION__ will be removed in 7.0 + * @deprecated 5.2.0 will be removed in 7.0 * Use the non-static method getStats * Example: Factory::getApplication()->bootModule('mod_stats', 'site') * ->getHelper('StatsHelper') diff --git a/package-lock.json b/package-lock.json index 80820ec030cf4..b1dffa9508ab8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -47,7 +47,7 @@ "mark.js": "^8.11.1", "mediaelement": "^5.1.1", "metismenujs": "^1.4.0", - "punycode": "^2.3.0", + "punycode": "^2.3.1", "qrcode-generator": "^1.4.4", "roboto-fontface": "^0.10.0", "sa11y": "^3.1.3", diff --git a/plugins/api-authentication/token/src/Extension/Token.php b/plugins/api-authentication/token/src/Extension/Token.php index 28127e66759e8..d63d09c9213c2 100644 --- a/plugins/api-authentication/token/src/Extension/Token.php +++ b/plugins/api-authentication/token/src/Extension/Token.php @@ -126,6 +126,11 @@ public function onUserAuthenticate(AuthenticationEvent $event): void } } + // Another Apache specific fix. See https://github.com/symfony/symfony/issues/1813 + if (empty($authHeader)) { + $authHeader = $this->getApplication()->getInput()->server->get('REDIRECT_HTTP_AUTHORIZATION', '', 'string'); + } + if (substr($authHeader, 0, 7) == 'Bearer ') { $parts = explode(' ', $authHeader, 2); $tokenString = trim($parts[1]); diff --git a/plugins/content/vote/src/Extension/Vote.php b/plugins/content/vote/src/Extension/Vote.php index 29fd8bd81dde1..c01980c1af85f 100644 --- a/plugins/content/vote/src/Extension/Vote.php +++ b/plugins/content/vote/src/Extension/Vote.php @@ -133,7 +133,7 @@ private function displayVotingData($context, &$row, &$params, $page) * * @return void * - * @since __DEPLOY_VERSION__ + * @since 5.2.0 */ public function onSchemaBeforeCompileHead($schema, $context): void { @@ -182,7 +182,7 @@ public function onSchemaBeforeCompileHead($schema, $context): void * * @return ?string * - * @since __DEPLOY_VERSION__ + * @since 5.2.0 */ protected function prepareAggregateRating($context) { @@ -210,7 +210,7 @@ protected function prepareAggregateRating($context) * * @return ?string * - * @since __DEPLOY_VERSION__ + * @since 5.2.0 */ protected function prepareProductAggregateRating($context) { diff --git a/plugins/filesystem/local/src/Adapter/LocalAdapter.php b/plugins/filesystem/local/src/Adapter/LocalAdapter.php index 9abc89efc06f0..f9ef48152753b 100644 --- a/plugins/filesystem/local/src/Adapter/LocalAdapter.php +++ b/plugins/filesystem/local/src/Adapter/LocalAdapter.php @@ -952,10 +952,8 @@ private function getThumbnail(string $path): string */ private function createThumbnail(string $path, string $thumbnailPath): bool { - $image = new Image($path); - try { - $image->createThumbnails([$this->thumbnailSize[0] . 'x' . $this->thumbnailSize[1]], $image::SCALE_INSIDE, \dirname($thumbnailPath), true); + (new Image($path))->createThumbnails([$this->thumbnailSize[0] . 'x' . $this->thumbnailSize[1]], Image::SCALE_INSIDE, \dirname($thumbnailPath), true); } catch (\Exception $e) { return false; } ```