FOF30\Update\Joomla::getVersionProperties PHP Method

getVersionProperties() public method

Determines the properties of a version: STS/LTS, normal or testing
public getVersionProperties ( string $jVersion, string $currentVersion = null ) : array
$jVersion string The version number to check
$currentVersion string The current Joomla! version number
return array The properties analysis
    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;
    }