static function checkNewVersionAvailable($auto = true, $messageafterredirect = false)
{
global $CFG_GLPI;
if (!$auto && !Session::haveRight('backup', Backup::CHECKUPDATE)) {
return false;
}
if (!$auto && !$messageafterredirect) {
echo "<br>";
}
//parse github releases (get last version number)
$error = "";
$json_gh_releases = self::getURLContent("https://api.github.com/repos/glpi-project/glpi/releases", $error);
$all_gh_releases = json_decode($json_gh_releases, true);
$released_tags = array();
foreach ($all_gh_releases as $release) {
if ($release['prerelease'] == false) {
$released_tags[] = $release['tag_name'];
}
}
usort($released_tags, 'version_compare');
$latest_version = array_pop($released_tags);
if (strlen(trim($latest_version)) == 0) {
if (!$auto) {
if ($messageafterredirect) {
Session::addMessageAfterRedirect($error, true, ERROR);
} else {
echo "<div class='center'>{$error}</div>";
}
} else {
return $error;
}
} else {
if (version_compare($CFG_GLPI["version"], $latest_version, '<')) {
$config_object = new Config();
$input["id"] = 1;
$input["founded_new_version"] = $latest_version;
$config_object->update($input);
if (!$auto) {
if ($messageafterredirect) {
Session::addMessageAfterRedirect(sprintf(__('A new version is available: %s.'), $latest_version));
Session::addMessageAfterRedirect(__('You will find it on the GLPI-PROJECT.org site.'));
} else {
echo "<div class='center'>" . sprintf(__('A new version is available: %s.'), $latest_version) . "</div>";
echo "<div class='center'>" . __('You will find it on the GLPI-PROJECT.org site.') . "</div>";
}
} else {
if ($messageafterredirect) {
Session::addMessageAfterRedirect(sprintf(__('A new version is available: %s.'), $latest_version));
} else {
return sprintf(__('A new version is available: %s.'), $latest_version);
}
}
} else {
if (!$auto) {
if ($messageafterredirect) {
Session::addMessageAfterRedirect(__('You have the latest available version'));
} else {
echo "<div class='center'>" . __('You have the latest available version') . "</div>";
}
} else {
if ($messageafterredirect) {
Session::addMessageAfterRedirect(__('You have the latest available version'));
} else {
return __('You have the latest available version');
}
}
}
}
return 1;
}