- public function getReleaseInfo($version) {
- $majorVersion = $this->getMajorVersion($version);
- if (isset($this->versionInfo[$majorVersion])) {
- foreach ($this->versionInfo[$majorVersion]['releases'] as $info) {
- if ($info['version'] == $version) {
- return $info;
- }
- }
- }
- return NULL;
- }
-
- /**
- * @param $minorVersion
- * @return string
- */
- public function getMajorVersion($minorVersion) {
- if (!$minorVersion) {
- return NULL;
- }
- list($a, $b) = explode('.', $minorVersion);
- return "$a.$b";
- }
-
-
- /**
- * Get the latest version number if it's newer than the local one
- *
- * @return array
- * Returns version number of the latest release if it is greater than the local version,
- * along with the type of upgrade (regular/security) needed and the status of the major
- * version
- */
- public function isNewerVersionAvailable() {
- $return = array(
- 'version' => NULL,
- 'upgrade' => NULL,
- 'status' => NULL,
- );
-
- if ($this->versionInfo && $this->localVersion) {
- if (isset($this->versionInfo[$this->localMajorVersion])) {
- switch (CRM_Utils_Array::value('status', $this->versionInfo[$this->localMajorVersion])) {
- case 'stable':
- case 'lts':
- case 'testing':
- // look for latest version in this major version
- $releases = $this->checkBranchForNewVersion($this->versionInfo[$this->localMajorVersion]);
- if ($releases['newest']) {
- $return['version'] = $releases['newest'];
-
- // check for intervening security releases
- $return['upgrade'] = ($releases['security']) ? 'security' : 'regular';
- }
- break;
-
- case 'eol':
- default:
- // look for latest version ever
- foreach ($this->versionInfo as $majorVersionNumber => $majorVersion) {
- if ($majorVersionNumber < $this->localMajorVersion || $majorVersion['status'] == 'testing') {
- continue;
- }
- $releases = $this->checkBranchForNewVersion($this->versionInfo[$majorVersionNumber]);
-
- if ($releases['newest']) {
- $return['version'] = $releases['newest'];
-
- // check for intervening security releases
- $return['upgrade'] = ($releases['security'] || $return['upgrade'] == 'security') ? 'security' : 'regular';
- }
- }
- }
- $return['status'] = $this->versionInfo[$this->localMajorVersion]['status'];
- }
- else {
- // Figure if the version is really old or really new
- $wayOld = TRUE;
-
- foreach ($this->versionInfo as $majorVersionNumber => $majorVersion) {
- $wayOld = ($this->localMajorVersion < $majorVersionNumber);
- }
-
- if ($wayOld) {
- $releases = $this->checkBranchForNewVersion($majorVersion);
-
- $return = array(
- 'version' => $releases['newest'],
- 'upgrade' => 'security',
- 'status' => 'eol',
- );
- }
- }
- }
-
- return $return;