joomla/joomla-cms — pull request #5546 by mbabker (2014-12-28 18:06:00+00:00)
Title: Change targetplatform version check to match full CMS version

The manner in which updates check their supported platform is extremely subpar. The primary version attribute is only checked down to the minor version number (i.e. 3.4) which prevents using the advanced regex possibilities of the `` tag in an update XML file to match a specific version number. A "band-aid" style fix was applied in the manner of the `min_dev_level` and `max_dev_level` attributes which further demonstrates the weakness in this check.

This PR proposes to change the check to enable matching a full version number instead of only the major and minor versions.

### Use Case

Had 2.5 supported this, in extensions where versions older than 2.5.6 are unsupported, it would have been possible to use a regexp similar to `2.5.([6-9]|1[0-9]|2[0-8])` to not display updates to 2.5.0 thru 2.5.5 users. As 2.5 didn't even support the `min_dev_level` and `max_dev_level` attributes, users on those dated versions would always see an extension update that they could not install.

### Testing Instructions

For general testing, the simplest tests are to apply the patch, install older versions of extensions which support Joomla's update platform (as Joomla won't display an update if you're on the latest version), and make sure those extensions still properly load updates. The language installer can be a good way to check this too.

For advanced use cases, developers are welcome to manipulate the Joomla version number (found in `libraries/cms/version/version.php` and an update XML to create test cases where a regexp would or would not match a version number. Using my example above, 2.5.0 thru 2.5.5 and anything above 2.5.29 should not match but 2.5.6 thru 2.5.28 should.