Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[5.1] upmerge 2024-01-04 fix #448

Closed
joomlapl-bot opened this issue Jan 8, 2024 · 1 comment
Closed

[5.1] upmerge 2024-01-04 fix #448

joomlapl-bot opened this issue Jan 8, 2024 · 1 comment

Comments

@joomlapl-bot
Copy link
Collaborator

PR w związku ze zmianą oryginału joomla/joomla-cms#42624 Poniżej zmiany w oryginale:

Click to expand the diff!
diff --git a/.drone.yml b/.drone.yml
index 9b22abbb42c3f..5517cb10f5823 100644
--- a/.drone.yml
+++ b/.drone.yml
@@ -6,7 +6,7 @@ clone:
 
 steps:
   - name: setup
-    image: joomlaprojects/docker-images:php8.2
+    image: joomlaprojects/docker-images:php8.3
     volumes:
       - name: certificates
         path: /certificates
@@ -14,7 +14,7 @@ steps:
       - cp -v tests/certs/* /certificates/
 
   - name: composer
-    image: joomlaprojects/docker-images:php8.2
+    image: joomlaprojects/docker-images:php8.3
     volumes:
       - name: composer-cache
         path: /tmp/composer-cache
@@ -63,6 +63,13 @@ steps:
       - php -v
       - ./libraries/vendor/bin/phpunit --testsuite Unit
 
+  - name: php83-unit
+    depends_on: [ phpcs ]
+    image: joomlaprojects/docker-images:php8.3
+    commands:
+      - php -v
+      - ./libraries/vendor/bin/phpunit --testsuite Unit
+
   - name: php81-integration
     depends_on: [ npm ]
     image: joomlaprojects/docker-images:php8.1
@@ -77,6 +84,13 @@ steps:
       - php -v
       - ./libraries/vendor/bin/phpunit --testsuite Integration
 
+  - name: php83-integration
+    depends_on: [ npm ]
+    image: joomlaprojects/docker-images:php8.3
+    commands:
+      - php -v
+      - ./libraries/vendor/bin/phpunit --testsuite Integration
+
   - name: php81-integration-pgsql
     depends_on: [ npm ]
     image: joomlaprojects/docker-images:php8.1
@@ -91,6 +105,13 @@ steps:
       - php -v
       - ./libraries/vendor/bin/phpunit --testsuite Integration --configuration phpunit-pgsql.xml.dist
 
+  - name: php83-integration-pgsql
+    depends_on: [ npm ]
+    image: joomlaprojects/docker-images:php8.3
+    commands:
+      - php -v
+      - ./libraries/vendor/bin/phpunit --testsuite Integration --configuration phpunit-pgsql.xml.dist
+
   - name: scss-cs
     depends_on: [ npm ]
     image: node:current-alpine
@@ -145,7 +166,7 @@ steps:
   - name: phpnext-system-mysql
     depends_on:
       - phpmax-system-mysql
-    image: joomlaprojects/docker-images:cypress8.2
+    image: joomlaprojects/docker-images:cypress8.3
     volumes:
       - name: cypress-cache
         path: /root/.cache/Cypress
@@ -184,7 +205,7 @@ steps:
   - name: phpnext-system-postgres
     depends_on:
       - phpmax-system-postgres
-    image: joomlaprojects/docker-images:cypress8.2
+    image: joomlaprojects/docker-images:cypress8.3
     volumes:
       - name: cypress-cache
         path: /root/.cache/Cypress
@@ -382,6 +403,6 @@ trigger:
 
 ---
 kind: signature
-hmac: 5814cadc441b90eec51da0aa32cd29ff1014c4d759841cc70063b5e9245d2b08
+hmac: e8ab45eb1d91c0b0b38c8d25a3a983d112c973dcba0153a982f2afd581dfa458
 
 ...
diff --git a/administrator/components/com_actionlogs/src/Helper/ActionlogsHelper.php b/administrator/components/com_actionlogs/src/Helper/ActionlogsHelper.php
index 8b4bd4a078a22..102e2638c7538 100644
--- a/administrator/components/com_actionlogs/src/Helper/ActionlogsHelper.php
+++ b/administrator/components/com_actionlogs/src/Helper/ActionlogsHelper.php
@@ -330,6 +330,12 @@ public static function loadActionLogPluginsLanguage()
         // Load plg_system_actionlogs too
         $lang->load('plg_system_actionlogs', JPATH_ADMINISTRATOR);
 
+        // Load plg_system_privacyconsent too
+        $lang->load('plg_system_privacyconsent', JPATH_ADMINISTRATOR);
+
+        // Load plg_user_terms too
+        $lang->load('plg_user_terms', JPATH_ADMINISTRATOR);
+
         // Load com_privacy too.
         $lang->load('com_privacy', JPATH_ADMINISTRATOR);
     }
diff --git a/administrator/components/com_joomlaupdate/tmpl/joomlaupdate/noupdate.php b/administrator/components/com_joomlaupdate/tmpl/joomlaupdate/noupdate.php
index 5a4c9bc3d552a..f61c771241e33 100644
--- a/administrator/components/com_joomlaupdate/tmpl/joomlaupdate/noupdate.php
+++ b/administrator/components/com_joomlaupdate/tmpl/joomlaupdate/noupdate.php
@@ -19,14 +19,14 @@
 $reasonNoDownload = '';
 
 if (!empty($this->reasonNoDownload)) {
-    $reasonNoDownload = Text::_($this->reasonNoDownload);
+    $reasonNoDownload = Text::_($this->reasonNoDownload) . '<br>';
 
     if (isset($this->detailsNoDownload->php)) {
         $reasonNoDownload .= Text::sprintf(
             'COM_JOOMLAUPDATE_NODOWNLOAD_EMPTYSTATE_REASON_PHP',
             $this->detailsNoDownload->php->used,
             $this->detailsNoDownload->php->required
-        );
+        ) . '<br>';
     }
 
     if (isset($this->detailsNoDownload->db)) {
@@ -35,10 +35,10 @@
             Text::_('JLIB_DB_SERVER_TYPE_' . $this->detailsNoDownload->db->type),
             $this->detailsNoDownload->db->used,
             $this->detailsNoDownload->db->required
-        );
+        ) . '<br>';
     }
 
-    $reasonNoDownload .= Text::_('COM_JOOMLAUPDATE_NODOWNLOAD_EMPTYSTATE_REASON_ACTION');
+    $reasonNoDownload .= Text::_('COM_JOOMLAUPDATE_NODOWNLOAD_EMPTYSTATE_REASON_ACTION') . '<br>';
 }
 
 $displayData = [
diff --git a/administrator/components/com_menus/tmpl/items/modal.php b/administrator/components/com_menus/tmpl/items/modal.php
index 0943ac02a5fc2..dd11a10cb5e53 100644
--- a/administrator/components/com_menus/tmpl/items/modal.php
+++ b/administrator/components/com_menus/tmpl/items/modal.php
@@ -33,14 +33,14 @@
 $editor    = $app->getInput()->getCmd('editor', '');
 $listOrder = $this->escape($this->state->get('list.ordering'));
 $listDirn  = $this->escape($this->state->get('list.direction'));
-$link      = 'index.php?option=com_menus&view=items&layout=modal&tmpl=component&' . Session::getFormToken() . '=1';
+$link      = 'index.php?option=com_menus&view=items&layout=modal&tmpl=component&' . Session::getFormToken() . '=1&function=' . $function;
 $multilang = Multilanguage::isEnabled();
 
 if (!empty($editor)) {
     // This view is used also in com_menus. Load the xtd script only if the editor is set!
     $this->document->addScriptOptions('xtd-menus', ['editor' => $editor]);
     $onclick = "jSelectMenuItem";
-    $link    = 'index.php?option=com_menus&view=items&layout=modal&tmpl=component&editor=' . $editor . '&' . Session::getFormToken() . '=1';
+    $link    = 'index.php?option=com_menus&view=items&layout=modal&tmpl=component&editor=' . $editor . '&' . Session::getFormToken() . '=1&function=' . $function;
 }
 ?>
 <div class="container-popup">
@@ -186,7 +186,6 @@
 
         <input type="hidden" name="task" value="">
         <input type="hidden" name="boxchecked" value="0">
-        <input type="hidden" name="function" value="<?php echo $function; ?>">
         <input type="hidden" name="forcedLanguage" value="<?php echo $app->getInput()->get('forcedLanguage', '', 'cmd'); ?>">
         <?php echo HTMLHelper::_('form.token'); ?>
 
diff --git a/administrator/components/com_templates/src/Model/TemplateModel.php b/administrator/components/com_templates/src/Model/TemplateModel.php
index 0f2ef4130dd6e..221f6a3df4b0a 100644
--- a/administrator/components/com_templates/src/Model/TemplateModel.php
+++ b/administrator/components/com_templates/src/Model/TemplateModel.php
@@ -886,8 +886,8 @@ public function &getSource()
             $fileName = str_replace('//', '/', $fileName);
             $isMedia  = $input->getInt('isMedia', 0);
 
-            $fileName = $isMedia ? Path::clean(JPATH_ROOT . '/media/templates/' . ($this->template->client_id === 0 ? 'site' : 'administrator') . '/' . $this->template->element . $fileName)
-            : Path::clean(JPATH_ROOT . ($this->template->client_id === 0 ? '' : '/administrator') . '/templates/' . $this->template->element . $fileName);
+            $fileName = $isMedia ? Path::clean(JPATH_ROOT . '/media/templates/' . ((int) $this->template->client_id === 0 ? 'site' : 'administrator') . '/' . $this->template->element . $fileName)
+            : Path::clean(JPATH_ROOT . ((int) $this->template->client_id === 0 ? '' : '/administrator') . '/templates/' . $this->template->element . $fileName);
 
             try {
                 $filePath = Path::check($fileName);
diff --git a/administrator/components/com_templates/tmpl/template/default.php b/administrator/components/com_templates/tmpl/template/default.php
index c3a5c8582892d..75528e08e0a09 100644
--- a/administrator/components/com_templates/tmpl/template/default.php
+++ b/administrator/components/com_templates/tmpl/template/default.php
@@ -60,7 +60,7 @@
     <div class="row mt-2">
         <div class="col-md-8" id="conditional-section">
             <?php if ($this->type != 'home') : ?>
-                <p class="lead"><?php echo Text::sprintf('COM_TEMPLATES_TEMPLATE_FILENAME', '&#x200E;' . ($input->get('isMedia', 0) ? '/media/templates/' . ($this->template->client_id === 0 ? 'site' : 'administrator') . '/' . $this->template->element . str_replace('//', '/', base64_decode($this->file)) : '/' . ($this->template->client_id === 0 ? '' : 'administrator/') . 'templates/' . $this->template->element . str_replace('//', '/', base64_decode($this->file))), $this->template->element); ?></p>
+                <p class="lead"><?php echo Text::sprintf('COM_TEMPLATES_TEMPLATE_FILENAME', '&#x200E;' . ($input->get('isMedia', 0) ? '/media/templates/' . ((int) $this->template->client_id === 0 ? 'site' : 'administrator') . '/' . $this->template->element . str_replace('//', '/', base64_decode($this->file)) : '/' . ((int) $this->template->client_id === 0 ? '' : 'administrator/') . 'templates/' . $this->template->element . str_replace('//', '/', base64_decode($this->file))), $this->template->element); ?></p>
                 <p class="lead path hidden"><?php echo $this->source->filename; ?></p>
             <?php endif; ?>
         </div>
@@ -80,7 +80,7 @@
                     <li class="folder-select">
                         <a class="folder-url" data-id="" href="">
                             <span class="icon-folder icon-fw" aria-hidden="true"></span>
-                            <?php echo ($this->template->client_id === 0 ? '/' : '/administrator/') . 'templates/' . $this->template->element; ?>
+                            <?php echo ((int) $this->template->client_id === 0 ? '/' : '/administrator/') . 'templates/' . $this->template->element; ?>
                         </a>
                         <?php echo $this->loadTemplate('tree'); ?>
                     </li>
@@ -90,7 +90,7 @@
                         <li class="folder-select">
                             <a class="folder-url" data-id="" href="">
                                 <span class="icon-folder icon-fw" aria-hidden="true"></span>
-                                <?php echo '/media/templates/' . ($this->template->client_id === 0 ? 'site/' : 'administrator/') . $this->template->element; ?>
+                                <?php echo '/media/templates/' . ((int) $this->template->client_id === 0 ? 'site/' : 'administrator/') . $this->template->element; ?>
                             </a>
                             <?php echo $this->loadTemplate('tree_media'); ?>
                         </li>
diff --git a/administrator/language/en-GB/com_joomlaupdate.ini b/administrator/language/en-GB/com_joomlaupdate.ini
index 17fca2758a9b6..cbfd490950582 100644
--- a/administrator/language/en-GB/com_joomlaupdate.ini
+++ b/administrator/language/en-GB/com_joomlaupdate.ini
@@ -44,10 +44,10 @@ COM_JOOMLAUPDATE_MINIMUM_STABILITY_STABLE="Stable"
 COM_JOOMLAUPDATE_NODOWNLOAD_EMPTYSTATE_APPEND="Upload and Update"
 COM_JOOMLAUPDATE_NODOWNLOAD_EMPTYSTATE_BUTTON_ADD="Retry check for update"
 COM_JOOMLAUPDATE_NODOWNLOAD_EMPTYSTATE_CONTENT="An update to Joomla %1$s was found, but it wasn't possible to fetch the download URL for that update. Either the update to Joomla %1$s is not available for your stability level or there is a problem with the Joomla Update Server.<br>Please try to download the update package from <a href=\"https://downloads.joomla.org/latest\">the official Joomla download page</a> and use the Upload and Update function."
-COM_JOOMLAUPDATE_NODOWNLOAD_EMPTYSTATE_REASON="An update to Joomla %1$s was found but your web server doesn't meet the <a href=\"https://manual.joomla.org/docs/next/get-started/technical-requirements/\" target=\"_blank\" rel=\"noopener noreferrer\">minimum requirements</a>.<br>"
-COM_JOOMLAUPDATE_NODOWNLOAD_EMPTYSTATE_REASON_ACTION="Please contact your web host to update your server.<br>"
-COM_JOOMLAUPDATE_NODOWNLOAD_EMPTYSTATE_REASON_DATABASE="Your %1$s version \"%2$s\" is lower than \"%3$s\".<br>"
-COM_JOOMLAUPDATE_NODOWNLOAD_EMPTYSTATE_REASON_PHP="Your PHP version \"%1$s\" is lower than \"%2$s\".<br>"
+COM_JOOMLAUPDATE_NODOWNLOAD_EMPTYSTATE_REASON="An update to Joomla %1$s was found but your web server doesn't meet the <a href=\"https://manual.joomla.org/docs/next/get-started/technical-requirements/\" target=\"_blank\" rel=\"noopener noreferrer\">minimum requirements</a>."
+COM_JOOMLAUPDATE_NODOWNLOAD_EMPTYSTATE_REASON_ACTION="Please contact your web host to update your server."
+COM_JOOMLAUPDATE_NODOWNLOAD_EMPTYSTATE_REASON_DATABASE="Your %1$s version \"%2$s\" is lower than \"%3$s\"."
+COM_JOOMLAUPDATE_NODOWNLOAD_EMPTYSTATE_REASON_PHP="Your PHP version \"%1$s\" is lower than \"%2$s\"."
 COM_JOOMLAUPDATE_NODOWNLOAD_EMPTYSTATE_TITLE="This site can't be updated to Joomla %1$s"
 COM_JOOMLAUPDATE_OVERVIEW="Joomla Update"
 COM_JOOMLAUPDATE_PREUPDATE_CHECK_CAPTION="Server settings to check before update."
diff --git a/administrator/language/en-GB/lib_joomla.ini b/administrator/language/en-GB/lib_joomla.ini
index 7fbad4d2981c0..c935ca774a6a4 100644
--- a/administrator/language/en-GB/lib_joomla.ini
+++ b/administrator/language/en-GB/lib_joomla.ini
@@ -615,8 +615,10 @@ JLIB_INSTALLER_ERROR_PACK_UNINSTALL_INVALID_MANIFEST="Package Uninstall: Invalid
 JLIB_INSTALLER_ERROR_PACK_UNINSTALL_INVALID_NOTFOUND_MANIFEST="Package Uninstall: Manifest file invalid or not found: %s"
 JLIB_INSTALLER_ERROR_PACK_UNINSTALL_LOAD_MANIFEST="Package Uninstall: Could not load manifest file."
 JLIB_INSTALLER_ERROR_PACK_UNINSTALL_MANIFEST_NOT_REMOVED="Package Uninstall: Errors were detected, manifest file not removed!"
+JLIB_INSTALLER_ERROR_PACK_UNINSTALL_MISSING_EXTENSION="Package Uninstall: This extension is missing or has already been uninstalled: %s"
 JLIB_INSTALLER_ERROR_PACK_UNINSTALL_MISSINGMANIFEST="Package Uninstall: Missing manifest file."
 JLIB_INSTALLER_ERROR_PACK_UNINSTALL_NOT_PROPER="Package Uninstall: This extension may have already been uninstalled or might not have been uninstalled properly: %s"
+; The following string is deprecated and will be removed with 6.0
 JLIB_INSTALLER_ERROR_PACK_UNINSTALL_UNKNOWN_EXTENSION="Trying to uninstall unknown extension from package. This extension may have already been removed earlier."
 JLIB_INSTALLER_ERROR_PACK_UNINSTALL_WARNCOREPACK="Package Uninstall: Trying to uninstall core package."
 JLIB_INSTALLER_ERROR_PLG_DISCOVER_STORE_DETAILS="Plugin Discover install: Failed to store plugin details."
diff --git a/administrator/language/en-GB/plg_task_deleteactionlogs.ini b/administrator/language/en-GB/plg_task_deleteactionlogs.ini
index 30a9ede1a6fb2..43ba702e4bd6f 100644
--- a/administrator/language/en-GB/plg_task_deleteactionlogs.ini
+++ b/administrator/language/en-GB/plg_task_deleteactionlogs.ini
@@ -5,6 +5,6 @@
 
 PLG_TASK_DELETEACTIONLOGS="Task - Delete Action Logs"
 PLG_TASK_DELETEACTIONLOGS_DELETE_DESC="Delete Action logs after days"
-PLG_TASK_DELETEACTIONLOGS_DELETE_TITLE="Delete ActionLogs - Task"
+PLG_TASK_DELETEACTIONLOGS_DELETE_TITLE="Delete ActionLogs"
 PLG_TASK_DELETEACTIONLOGS_LOG_DELETE_PERIOD="Days to delete action logs after"
 PLG_TASK_DELETEACTIONLOGS_XML_DESCRIPTION="This plugin for schedule Action Logs delete Tasks."
diff --git a/administrator/language/en-GB/plg_task_sessiongc.ini b/administrator/language/en-GB/plg_task_sessiongc.ini
index 0064055c70eb8..e01f337c39ce3 100644
--- a/administrator/language/en-GB/plg_task_sessiongc.ini
+++ b/administrator/language/en-GB/plg_task_sessiongc.ini
@@ -9,5 +9,5 @@ PLG_TASK_SESSIONGC_ENABLE_SESSION_GC_DESC="When enabled, this plugin will attemp
 PLG_TASK_SESSIONGC_ENABLE_SESSION_GC_LABEL="Enable Session Data Cleanup"
 PLG_TASK_SESSIONGC_ENABLE_SESSION_METADATA_GC_DESC="When enabled, this plugin will clean optional session metadata from the database. Note that this operation will not run when the database handler is in use as that data is cleared as part of the Session Data Cleanup operation."
 PLG_TASK_SESSIONGC_ENABLE_SESSION_METADATA_GC_LABEL="Enable Session Metadata Cleanup"
-PLG_TASK_SESSIONGC_TITLE="Task - Session Data Purge"
+PLG_TASK_SESSIONGC_TITLE="Session Data Purge"
 PLG_TASK_SESSIONGC_XML_DESCRIPTION="Task Plugin that purges expired data and metadata depending on the session handler set in Global Configuration."
diff --git a/api/components/com_content/src/Controller/ArticlesController.php b/api/components/com_content/src/Controller/ArticlesController.php
index fd8d1f97a70c7..a5226eb00e390 100644
--- a/api/components/com_content/src/Controller/ArticlesController.php
+++ b/api/components/com_content/src/Controller/ArticlesController.php
@@ -115,9 +115,11 @@ protected function preprocessSaveData(array $data): array
             }
         }
 
-        $tags = new TagsHelper();
-        $tags->getTagIds($data['id'], 'com_content.article');
-        $data['tags'] = explode(',', $tags->tags);
+        if (($this->input->getMethod() === 'PATCH') && !(\array_key_exists('tags', $data))) {
+            $tags = new TagsHelper();
+            $tags->getTagIds($data['id'], 'com_content.article');
+            $data['tags'] = explode(',', $tags->tags);
+        }
 
         return $data;
     }
diff --git a/build/media_source/com_media/scss/components/_media-browser.scss b/build/media_source/com_media/scss/components/_media-browser.scss
index 66a0609a5d819..67c18350119d9 100644
--- a/build/media_source/com_media/scss/components/_media-browser.scss
+++ b/build/media_source/com_media/scss/components/_media-browser.scss
@@ -380,6 +380,7 @@
 
     > td,
     > th {
+      color: #fff;
       background-color: $table-item-icon-bg-selected;
     }
   }
diff --git a/build/media_source/templates/site/cassiopeia/scss/blocks/_footer.scss b/build/media_source/templates/site/cassiopeia/scss/blocks/_footer.scss
index 4aa0ad776c95d..2ad8727c176a9 100644
--- a/build/media_source/templates/site/cassiopeia/scss/blocks/_footer.scss
+++ b/build/media_source/templates/site/cassiopeia/scss/blocks/_footer.scss
@@ -12,8 +12,13 @@
     padding: 2.5rem ($cassiopeia-grid-gutter * .5);
   }
 
-  a {
+  a:not(.btn), .btn-link {
     color: currentColor;
+
+    &:hover,
+    &:focus {
+      color: var(--gray-200);
+    }
   }
 
   .mod-menu {
diff --git a/build/media_source/templates/site/cassiopeia/scss/blocks/_global.scss b/build/media_source/templates/site/cassiopeia/scss/blocks/_global.scss
index 091c61db051eb..0591114c5f42e 100644
--- a/build/media_source/templates/site/cassiopeia/scss/blocks/_global.scss
+++ b/build/media_source/templates/site/cassiopeia/scss/blocks/_global.scss
@@ -60,11 +60,6 @@ a {
     text-decoration: underline;
   }
 
-  &:not(.btn):hover,
-  &:not(.btn):focus {
-    color: var(--cassiopeia-color-hover);
-  }
-
   &.navbar-brand {
     color: var(--cassiopeia-color-brand);
   }
diff --git a/build/media_source/templates/site/cassiopeia/scss/blocks/_header.scss b/build/media_source/templates/site/cassiopeia/scss/blocks/_header.scss
index 19f6ccf2b6326..ece7792b12ba3 100644
--- a/build/media_source/templates/site/cassiopeia/scss/blocks/_header.scss
+++ b/build/media_source/templates/site/cassiopeia/scss/blocks/_header.scss
@@ -213,7 +213,7 @@
   .mod-finder {
     color: $white;
 
-    a {
+    a:not(.jmodedit) {
       color: $white;
 
       &:hover, &:focus {
diff --git a/build/media_source/templates/site/cassiopeia/scss/blocks/_layout.scss b/build/media_source/templates/site/cassiopeia/scss/blocks/_layout.scss
index ca9419b0cf57c..4162e96444b1f 100644
--- a/build/media_source/templates/site/cassiopeia/scss/blocks/_layout.scss
+++ b/build/media_source/templates/site/cassiopeia/scss/blocks/_layout.scss
@@ -15,8 +15,14 @@
 .container-topbar,
 .container-below-top {
   color: $white;
-  a {
+
+  a:not(.btn), .btn-link {
     color: currentColor;
+
+    &:hover,
+    &:focus {
+      color: var(--gray-200);
+    }
   }
 }
 
diff --git a/composer.lock b/composer.lock
index 881e6a8da2486..279f635fb342c 100644
--- a/composer.lock
+++ b/composer.lock
@@ -3025,16 +3025,16 @@
         },
         {
             "name": "phpseclib/phpseclib",
-            "version": "3.0.23",
+            "version": "3.0.34",
             "source": {
                 "type": "git",
                 "url": "https://github.com/phpseclib/phpseclib.git",
-                "reference": "866cc78fbd82462ffd880e3f65692afe928bed50"
+                "reference": "56c79f16a6ae17e42089c06a2144467acc35348a"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/866cc78fbd82462ffd880e3f65692afe928bed50",
-                "reference": "866cc78fbd82462ffd880e3f65692afe928bed50",
+                "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/56c79f16a6ae17e42089c06a2144467acc35348a",
+                "reference": "56c79f16a6ae17e42089c06a2144467acc35348a",
                 "shasum": ""
             },
             "require": {
@@ -3115,7 +3115,7 @@
             ],
             "support": {
                 "issues": "https://github.com/phpseclib/phpseclib/issues",
-                "source": "https://github.com/phpseclib/phpseclib/tree/3.0.23"
+                "source": "https://github.com/phpseclib/phpseclib/tree/3.0.34"
             },
             "funding": [
                 {
@@ -3131,7 +3131,7 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2023-09-18T17:22:01+00:00"
+            "time": "2023-11-27T11:13:31+00:00"
         },
         {
             "name": "psr/clock",
diff --git a/language/en-GB/lib_joomla.ini b/language/en-GB/lib_joomla.ini
index 254264554b6ff..e31571e9b846d 100644
--- a/language/en-GB/lib_joomla.ini
+++ b/language/en-GB/lib_joomla.ini
@@ -609,8 +609,10 @@ JLIB_INSTALLER_ERROR_PACK_UNINSTALL_INVALID_MANIFEST="Package Uninstall: Invalid
 JLIB_INSTALLER_ERROR_PACK_UNINSTALL_INVALID_NOTFOUND_MANIFEST="Package Uninstall: Manifest file invalid or not found: %s"
 JLIB_INSTALLER_ERROR_PACK_UNINSTALL_LOAD_MANIFEST="Package Uninstall: Could not load manifest file."
 JLIB_INSTALLER_ERROR_PACK_UNINSTALL_MANIFEST_NOT_REMOVED="Package Uninstall: Errors were detected, manifest file not removed!"
+JLIB_INSTALLER_ERROR_PACK_UNINSTALL_MISSING_EXTENSION="Package Uninstall: This extension is missing or has already been uninstalled: %s"
 JLIB_INSTALLER_ERROR_PACK_UNINSTALL_MISSINGMANIFEST="Package Uninstall: Missing manifest file."
 JLIB_INSTALLER_ERROR_PACK_UNINSTALL_NOT_PROPER="Package Uninstall: This extension may have already been uninstalled or might not have been uninstalled properly: %s"
+; The following string is deprecated and will be removed with 6.0
 JLIB_INSTALLER_ERROR_PACK_UNINSTALL_UNKNOWN_EXTENSION="Trying to uninstall unknown extension from package. This extension may have already been removed earlier."
 JLIB_INSTALLER_ERROR_PACK_UNINSTALL_WARNCOREPACK="Package Uninstall: Trying to uninstall core package."
 JLIB_INSTALLER_ERROR_PLG_DISCOVER_STORE_DETAILS="Plugin Discover install: Failed to store plugin details."
diff --git a/libraries/src/Extension/ExtensionHelper.php b/libraries/src/Extension/ExtensionHelper.php
index bbe6bc2f5ee9a..3e0ac57e16aeb 100644
--- a/libraries/src/Extension/ExtensionHelper.php
+++ b/libraries/src/Extension/ExtensionHelper.php
@@ -401,15 +401,25 @@ public static function getCoreExtensionIds()
             ->select($db->quoteName('extension_id'))
             ->from($db->quoteName('#__extensions'));
 
+        $values = [];
+
         foreach (self::$coreExtensions as $extension) {
-            $values = $query->bindArray($extension, [ParameterType::STRING, ParameterType::STRING, ParameterType::STRING, ParameterType::INTEGER]);
-            $query->where(
-                '(' . $db->quoteName('type') . ' = ' . $values[0] . ' AND ' . $db->quoteName('element') . ' = ' . $values[1]
-                . ' AND ' . $db->quoteName('folder') . ' = ' . $values[2] . ' AND ' . $db->quoteName('client_id') . ' = ' . $values[3] . ')',
-                'OR'
-            );
+            $values[] = $extension[0] . '|' . $extension[1] . '|' . $extension[2] . '|' . $extension[3];
         }
 
+        $query->whereIn(
+            $query->concatenate(
+                [
+                    $db->quoteName('type'),
+                    $db->quoteName('element'),
+                    $db->quoteName('folder'),
+                    $db->quoteName('client_id'),
+                ],
+                '|'
+            ),
+            $values
+        );
+
         $db->setQuery($query);
         self::$coreExtensionIds = $db->loadColumn();
 
diff --git a/libraries/src/Form/Form.php b/libraries/src/Form/Form.php
index 6680c8f7052f1..4ee6bc74e4cd6 100644
--- a/libraries/src/Form/Form.php
+++ b/libraries/src/Form/Form.php
@@ -182,9 +182,9 @@ protected function bindLevel($group, $data)
     }
 
     /**
-     * Return all errors, if any.
+     * Return Exceptions thrown during the form validation process.
      *
-     * @return  \Exception[]  Array of error messages or RuntimeException objects.
+     * @return  \Exception[]
      *
      * @since   1.7.0
      */
@@ -1055,8 +1055,8 @@ public function filter($data, $group = null)
     /**
      * Method to validate form data.
      *
-     * Validation warnings will be pushed into JForm::errors and should be
-     * retrieved with JForm::getErrors() when validate returns boolean false.
+     * Validation warnings will be pushed into Form::$errors and should be
+     * retrieved with Form::getErrors() when validate returns boolean false.
      *
      * @param   array   $data   An array of field values to validate.
      * @param   string  $group  The optional dot-separated form group path on which to filter the
@@ -1134,6 +1134,7 @@ public function validate($data, $group = null)
                 // The field returned false from setup and shouldn't be included in the page body - yet we received
                 // a value for it. This is probably some sort of injection attack and should be rejected
                 $this->errors[] = new \RuntimeException(Text::sprintf('JLIB_FORM_VALIDATE_FIELD_INVALID', $key));
+                $return         = false;
             }
         }
 
diff --git a/libraries/src/Installer/Adapter/PackageAdapter.php b/libraries/src/Installer/Adapter/PackageAdapter.php
index eb7875212dd89..2957b44787369 100644
--- a/libraries/src/Installer/Adapter/PackageAdapter.php
+++ b/libraries/src/Installer/Adapter/PackageAdapter.php
@@ -435,7 +435,7 @@ protected function removeExtensionFiles()
                     Log::add(Text::sprintf('JLIB_INSTALLER_ERROR_PACK_UNINSTALL_NOT_PROPER', basename($extension->filename)), Log::WARNING, 'jerror');
                 }
             } else {
-                Log::add(Text::_('JLIB_INSTALLER_ERROR_PACK_UNINSTALL_UNKNOWN_EXTENSION'), Log::WARNING, 'jerror');
+                Log::add(Text::sprintf('JLIB_INSTALLER_ERROR_PACK_UNINSTALL_MISSING_EXTENSION', basename($extension->filename)), Log::WARNING, 'jerror');
             }
         }
 
diff --git a/tests/System/integration/administrator/components/com_privacy/Consent.cy.js b/tests/System/integration/administrator/components/com_privacy/Consent.cy.js
index 36514f9db696c..2538c99f61e44 100644
--- a/tests/System/integration/administrator/components/com_privacy/Consent.cy.js
+++ b/tests/System/integration/administrator/components/com_privacy/Consent.cy.js
@@ -2,6 +2,7 @@ describe('Test in backend that privacy consent component', () => {
   beforeEach(() => cy.doAdministratorLogin());
   afterEach(() => {
     cy.task('queryDB', 'DELETE FROM #__privacy_consents');
+    cy.task('queryDB', "DELETE FROM #__users WHERE name = 'test user'");
     cy.get('.js-stools-btn-clear').click({ force: true });
   });
 
@zwiastunsw
Copy link
Contributor

rozwiązane 5.0.3

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants