Skip to content
This repository has been archived by the owner on Jan 8, 2020. It is now read-only.

Version update #2311

Merged
merged 2 commits into from Sep 13, 2012
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
48 changes: 36 additions & 12 deletions library/Zend/Version/Version.php
Expand Up @@ -25,6 +25,16 @@ final class Version
*/
const VERSION = '2.1.0dev';

/**
* Github Service Identifier for version information is retreived from
*/
const VERSION_SERVICE_GITHUB = 'GITHUB';

/**
* Github Service Identifier for version information is retreived from
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Zend Service Identifier?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since this has already been merged and done, I've created #2404

*/
const VERSION_SERVICE_ZEND = 'ZEND';

/**
* The latest stable version Zend Framework available
*
Expand Down Expand Up @@ -52,32 +62,46 @@ public static function compareVersion($version)
/**
* Fetches the version of the latest stable release.
*
* This uses the GitHub API (v3) and only returns refs that begin with
* By Default, this uses the GitHub API (v3) and only returns refs that begin with
* 'tags/release-'. Because GitHub returns the refs in alphabetical order,
* we need to reduce the array to a single value, comparing the version
* numbers with version_compare().
*
* If $service is set to VERSION_SERVICE_ZEND this will fall back to calling the
* classic style of version retreival.
*
*
* @see http://developer.github.com/v3/git/refs/#get-all-references
* @link https://api.github.com/repos/zendframework/zf2/git/refs/tags/release-
* @link http://framework.zend.com/api/zf-version?v=2
* @param string $service Version Service with which to retrieve the version
* @return string
*/
public static function getLatest()
public static function getLatest($service = self::VERSION_SERVICE_GITHUB)
{
if (null === self::$latestVersion) {
self::$latestVersion = 'not available';
$url = 'https://api.github.com/repos/zendframework/zf2/git/refs/tags/release-';
if ($service == self::VERSION_SERVICE_GITHUB) {
$url = 'https://api.github.com/repos/zendframework/zf2/git/refs/tags/release-';

$apiResponse = Json::decode(file_get_contents($url), Json::TYPE_ARRAY);
$apiResponse = Json::decode(file_get_contents($url), Json::TYPE_ARRAY);

// Simplify the API response into a simple array of version numbers
$tags = array_map(function($tag) {
return substr($tag['ref'], 18); // Reliable because we're filtering on 'refs/tags/release-'
}, $apiResponse);
// Simplify the API response into a simple array of version numbers
$tags = array_map(function($tag) {
return substr($tag['ref'], 18); // Reliable because we're filtering on 'refs/tags/release-'
}, $apiResponse);

// Fetch the latest version number from the array
self::$latestVersion = array_reduce($tags, function($a, $b) {
return version_compare($a, $b, '>') ? $a : $b;
});
// Fetch the latest version number from the array
self::$latestVersion = array_reduce($tags, function($a, $b) {
return version_compare($a, $b, '>') ? $a : $b;
});
} elseif($service == self::VERSION_SERVICE_ZEND) {
$handle = fopen('http://framework.zend.com/api/zf-version?v=2', 'r');
if (false !== $handle) {
self::$_latestVersion = stream_get_contents($handle);
fclose($handle);
}
}
}

return self::$latestVersion;
Expand Down