public function getVersionProperties($jVersion, $currentVersion = null)
{
// Initialise
$ret = array('lts' => true, 'current' => false, 'upgrade' => 'none', 'testing' => false);
// Get the current version if none is defined
if (is_null($currentVersion)) {
$currentVersion = JVERSION;
}
// Sanitise version numbers
$sameVersion = $jVersion == $currentVersion;
$jVersion = $this->sanitiseVersion($jVersion);
$currentVersion = $this->sanitiseVersion($currentVersion);
$sameVersion = $sameVersion || $jVersion == $currentVersion;
// Get the base version
$baseVersion = substr($jVersion, 0, 3);
// Get the minimum and maximum current version numbers
$current_minimum = substr($currentVersion, 0, 3);
$current_maximum = $current_minimum . '.9999';
// Initialise STS/LTS version numbers
$sts_minimum = false;
$sts_maximum = false;
$lts_minimum = false;
// Is it an LTS or STS release?
switch ($baseVersion) {
case '1.5':
$ret['lts'] = true;
break;
case '1.6':
$ret['lts'] = false;
$sts_minimum = '1.7';
$sts_maximum = '1.7.999';
$lts_minimum = '2.5';
break;
case '1.7':
$ret['lts'] = false;
$sts_minimum = false;
$lts_minimum = '2.5';
break;
case '2.5':
$ret['lts'] = true;
$sts_minimum = false;
$lts_minimum = '2.5';
break;
default:
$majorVersion = (int) substr($jVersion, 0, 1);
//$minorVersion = (int) substr($jVersion, 2, 1);
$ret['lts'] = true;
$sts_minimum = false;
$lts_minimum = $majorVersion . '.0';
break;
}
// Is it a current release?
if (version_compare($jVersion, $current_minimum, 'ge') && version_compare($jVersion, $current_maximum, 'le')) {
$ret['current'] = true;
}
// Is this a testing release?
$versionParts = explode('.', $jVersion);
$lastVersionPart = array_pop($versionParts);
if (in_array(substr($lastVersionPart, 0, 1), array('a', 'b'))) {
$ret['testing'] = true;
} elseif (substr($lastVersionPart, 0, 2) == 'rc') {
$ret['testing'] = true;
} elseif (substr($lastVersionPart, 0, 3) == 'dev') {
$ret['testing'] = true;
}
// Find the upgrade relation of $jVersion to $currentVersion
if (version_compare($jVersion, $currentVersion, 'eq')) {
$ret['upgrade'] = 'current';
} elseif ($sts_minimum !== false && version_compare($jVersion, $sts_minimum, 'ge') && version_compare($jVersion, $sts_maximum, 'le')) {
$ret['upgrade'] = 'sts';
} elseif ($lts_minimum !== false && version_compare($jVersion, $lts_minimum, 'ge')) {
$ret['upgrade'] = 'lts';
} elseif ($baseVersion == $current_minimum) {
$ret['upgrade'] = $ret['lts'] ? 'lts' : 'sts';
} else {
$ret['upgrade'] = 'none';
}
if ($sameVersion) {
$ret['upgrade'] = 'none';
}
return $ret;
}