No Code Attached Yet
avatar joeforjoomla
joeforjoomla
10 Sep 2025

Steps to reproduce the issue

  1. Go to Extensions → Manage → Update
  2. Click Check for Updates when multiple extensions have updates available

Expected result

All extensions with available updates should be listed at once.


Actual result

  • Only one (or a subset) of extensions are listed
  • After updating one extension, the next one becomes available, but not all are shown initially

System information (as much as possible)

  • Joomla: 6.x
  • PHP version: 8.4
  • Database type and version: MySQL 8

Additional information

The issue seems to be related to a wrong comparison inside ExtensionAdapter.php.
The variable $this->latest still points to the version of the previously processed extension, which prevents subsequent updates from being listed if the prior extension’s version is greater.

It looks like $this->latest is not being reset correctly per extension, which causes only one update to be shown at a time.

// If the PHP version and minimum stability checks pass, consider this version as a possible update
if ($phpMatch && $stabilityMatch && $dbMatch) {
    if (isset($this->latest)) {
        // We already have a possible update. Check the version.
        if (version_compare($this->currentUpdate->version, $this->latest->version, '>') == 1) {
            $this->latest = $this->currentUpdate;
        }
    } else {
        // We don't have any possible updates yet, assume this is an available update.
        $this->latest = $this->currentUpdate;
    }
}
avatar joeforjoomla joeforjoomla - open - 10 Sep 2025
avatar joomla-cms-bot joomla-cms-bot - change - 10 Sep 2025
Labels Added: No Code Attached Yet
avatar joomla-cms-bot joomla-cms-bot - labeled - 10 Sep 2025
avatar joeforjoomla joeforjoomla - change - 10 Sep 2025
The description was changed
avatar joeforjoomla joeforjoomla - edited - 10 Sep 2025
avatar richard67
richard67 - comment - 11 Sep 2025

@joeforjoomla Does the same also happen with Joomla 5.x?

avatar richard67
richard67 - comment - 11 Sep 2025

.. or to be more precise: Does it happen in 5.3.x too? And in 5.4.0-beta2?

avatar brianteeman
brianteeman - comment - 11 Sep 2025

It definitely does not happen in 5.3.

avatar richard67
richard67 - comment - 11 Sep 2025

Remains 5.4 to be checked to see if it was introduced there and merged up into 6, or if it was introduced in 6.

avatar brianteeman
brianteeman - comment - 11 Sep 2025

just installed two old extensions in j6 both appear in the updates

Image
avatar richard67
richard67 - comment - 11 Sep 2025

Maybe it needs a combination of different extension types?

avatar brianteeman
brianteeman - comment - 11 Sep 2025

Maybe?

avatar joeforjoomla
joeforjoomla - comment - 11 Sep 2025

.. or to be more precise: Does it happen in 5.3.x too? And in 5.4.0-beta2?

@richard67 Nope it only happens in Joomla 6 Beta 2

avatar joeforjoomla
joeforjoomla - comment - 11 Sep 2025

@brianteeman It seems a combination of versions and ordering of extensions. For example if in your case you have 7.8 and 10.0.3 you could see both updates, but if you had 10.0.3 and 7.8 you could see only Akeeba Backup

avatar joeforjoomla
joeforjoomla - comment - 11 Sep 2025

See here how 1 update only is listed:

Image Image
avatar joeforjoomla
joeforjoomla - comment - 11 Sep 2025

But changing the update_side_id order the version number is mixed between them and 2 updates are correctly listed:

Image Image
avatar brianteeman
brianteeman - comment - 11 Sep 2025

yes i can confirm that - weird indeed

avatar joeforjoomla
joeforjoomla - comment - 11 Sep 2025

The problem comes from how the update check logic in ExtensionAdapter.php handles the $this->latest variable.

Currently, $this->latest is not reset between processing different extensions. This means that when Joomla checks multiple extensions for updates, it keeps comparing new candidates against the previously stored $this->latest value — even though that value belongs to another extension.

As a result:

If the first extension processed has a higher version number (e.g. 10.0.6), it will remain in $this->latest.

Subsequent extensions with lower version numbers (e.g. 2.20) will be ignored, even if they have updates available.

Only after updating or removing the first extension does Joomla show the next one.

That’s why in the backend you only see one update at a time, even though the database (#__update_sites) clearly lists multiple available updates.

Technical cause:

if ($phpMatch && $stabilityMatch && $dbMatch) {
    if (isset($this->latest)) {
        if (version_compare($this->currentUpdate->version, $this->latest->version, '>') == 1) {
            $this->latest = $this->currentUpdate;
        }
    } else {
        $this->latest = $this->currentUpdate;
    }
}

The bug is that $this->latest is only initialized once and reused across extensions. It should be reset for every extension being processed so that comparisons happen only within the same extension’s update candidates, not across unrelated ones.

avatar brianteeman
brianteeman - comment - 11 Sep 2025

that block of code is very old

avatar joomdonation joomdonation - change - 12 Sep 2025
Status New Closed
Closed_Date 0000-00-00 00:00:00 2025-09-12 05:32:10
Closed_By joomdonation
avatar joomdonation joomdonation - close - 12 Sep 2025
avatar joomdonation
joomdonation - comment - 12 Sep 2025

Thanks @joeforjoomla for details analyst. I created PR #46075 which should should the issue. Please help testing, thanks !

Add a Comment

Login with GitHub to post a comment