false]);
$json = $http->get($url, ['timeout' => 30])->getBody()->getContents();
if (empty($json)) {
return $output;
}
$parsedown = new Parsedown();
$releases = json_decode($json);
foreach ($releases as $release) {
if (version_compare($release->tag_name, version('short'), '<=')) {
continue;
}
if ($release->prerelease == true) {
continue;
}
if (empty($release->body)) {
continue;
}
$output .= '
' . $release->tag_name . '
';
$output .= $parsedown->text($release->body);
$output .= '
';
}
return $output;
}
public static function latest($modules = array())
{
// Get data from cache
$data = Cache::get('versions');
if (!empty($data)) {
return $data;
}
$info = Info::all();
// No data in cache, grab them from remote
$data = [];
// Check core first
$url = 'core/version/' . $info['akaunting'] . '/' . $info['php'] . '/' . $info['mysql'] . '/' . $info['companies'];
$data['core'] = static::getLatestVersion($url, $info['akaunting']);
// Then modules
foreach ($modules as $module) {
$alias = $module->get('alias');
$version = $module->get('version');
$url = 'apps/' . $alias . '/version/' . $version . '/' . $info['akaunting'];
$data[$alias] = static::getLatestVersion($url, $version);
}
Cache::put('versions', $data, Date::now()->addHour(6));
return $data;
}
public static function getLatestVersion($url, $latest)
{
if (!$data = static::getResponseData('GET', $url, ['timeout' => 10])) {
return $latest;
}
if (!is_object($data)) {
return $latest;
}
return $data->latest;
}
}