diff --git a/modules/core/www/frontpage_config.php b/modules/core/www/frontpage_config.php index 871c29bdb61090f1122e470c4cbda5f2edf9f8a7..0ac8d7c7df01ececf9296fd444ebcfb465a822d9 100644 --- a/modules/core/www/frontpage_config.php +++ b/modules/core/www/frontpage_config.php @@ -70,27 +70,34 @@ $allLinks = array( ); SimpleSAML\Module::callHooks('frontpage', $allLinks); -// check for updates -if ($config->getBoolean('admin.checkforupdates', true)) { - $api_url = 'https://api.github.com/repos/simplesamlphp/simplesamlphp/releases'; - $ch = curl_init($api_url.'/latest'); - curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); - curl_setopt($ch, CURLOPT_USERAGENT, 'SimpleSAMLphp'); - curl_setopt($ch, CURLOPT_TIMEOUT, 2); - $response = curl_exec($ch); - - if (curl_getinfo($ch, CURLINFO_HTTP_CODE) === 200) { - $latest = json_decode($response, true); - $current = $config->getVersion(); - if ($current !== 'master' && version_compare($current, ltrim($latest['tag_name'], 'v'), 'lt')) { - $outdated = true; - $warnings[] = array( - '{core:frontpage:warnings_outdated}', - array('%LATEST_URL%' => $latest['html_url']) - ); +// Check for updates. Store the remote result in the session so we +// don't need to fetch it on every access of this page. +$current = $config->getVersion(); +if ($config->getBoolean('admin.checkforupdates', true) && $current !== 'master') { + $latest = $session->getData("core:latest_simplesamlphp_version", "version"); + + if (!$latest) { + $api_url = 'https://api.github.com/repos/simplesamlphp/simplesamlphp/releases'; + $ch = curl_init($api_url.'/latest'); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); + curl_setopt($ch, CURLOPT_USERAGENT, 'SimpleSAMLphp'); + curl_setopt($ch, CURLOPT_TIMEOUT, 2); + $response = curl_exec($ch); + + if (curl_getinfo($ch, CURLINFO_HTTP_CODE) === 200) { + $latest = json_decode($response, true); + $session->setData("core:latest_simplesamlphp_version", "version", $latest); } + curl_close($ch); + } + + if ($latest && version_compare($current, ltrim($latest['tag_name'], 'v'), 'lt')) { + $outdated = true; + $warnings[] = array( + '{core:frontpage:warnings_outdated}', + array('%LATEST_URL%' => $latest['html_url']) + ); } - curl_close($ch); } $enablematrix = array(