/** * Fetches the version of the latest stable release. * * It will use the GitHub API (v3) and only returns refs that begin with 'tags/'. * 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(). * * @see http://developer.github.com/v3/git/refs/#get-all-references * @link https://api.github.com/repos/prolic/HumusPHPUnitModule/git/refs/tags/ * @return string */ public static function getLatest() { if (null === static::$latestVersion) { static::$latestVersion = 'not available'; $url = 'https://api.github.com/repos/prolic/HumusPHPUnitModule/git/refs/tags/'; $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'], 10); // Reliable because we're filtering on 'refs/tags/' }, $apiResponse); // Fetch the latest version number from the array static::$latestVersion = array_reduce($tags, function ($a, $b) { return version_compare($a, $b, '>') ? $a : $b; }); } return static::$latestVersion; }
/** * Fetches the version of the latest stable release. * * 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($service = self::VERSION_SERVICE_ZEND) { if (null === static::$latestVersion) { static::$latestVersion = 'not available'; 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); // 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 static::$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) { static::$latestVersion = stream_get_contents($handle); fclose($handle); } } } return static::$latestVersion; }
/** * Fetches the version of the latest stable release. * * 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_PI this will fall back to * calling the classic style of version retrieval. * * * @see http://developer.github.com/v3/git/refs/#get-all-references * @link https://api.github.com/repos/pi-engine/pi/git/refs/tags/release- * @param string $service Version Service with which to retrieve version * @return string */ public static function getLatest($service = 'PI') { if (null === static::$latestVersion) { static::$latestVersion = false; $service = strtoupper($service); if ($service == 'GITHUB') { $url = static::$githubApiRelease; $apiResponse = Json::decode(file_get_contents($url), Json::TYPE_ARRAY); // Simplify the API response into a simple array of // version numbers // Reliable because we're filtering on 'refs/tags/release-' $tags = array_map(function ($tag) { return substr($tag['ref'], 18); }, $apiResponse); // Fetch the latest version number from the array static::$latestVersion = array_reduce($tags, function ($a, $b) { return version_compare($a, $b, '>') ? $a : $b; }); } elseif ($service == 'PI') { $handle = fopen(static::$piApiRelease, 'r'); if (false !== $handle) { static::$latestVersion = stream_get_contents($handle); fclose($handle); } } } return static::$latestVersion; }