/** * Tries several methods and sources of determining latest Elgg release. * @return string|boolean returns release string or false on failure */ static function getLatestRelease($overrideCache = false) { if (self::$latestRelease !== null) { return self::$latestRelease; } //fetch from datalist if caching period not reached $lastChecked = datalist_get('version_last_checked'); $cachedRelease = datalist_get('version_newest'); $time = time(); if ($cachedRelease && !$overrideCache && $lastChecked + self::$cachingPeriod > $time) { self::$latestRelease = $cachedRelease; return $cachedRelease; } $release = false; $mt = microtime(true); if (!($release = self::getLatestFromGithub())) { // github is wrong, maybe missing https support, try elgg.org $release = self::getLatestFromElggOrg(); } datalist_set('version_last_checked', $time); datalist_set('version_newest', $release); self::$latestRelease = $release; return $release; }
<?php try { $override = get_input('refresh', false); $localRelease = ElggVersion::getVersion(true); $latestRelease = ElggVersion::getLatestRelease($override); $isLatest = ElggVersion::isLatestRelease($localRelease); $time = ElggVersion::getLatestReleaseLastChecked(); if (!$isLatest) { echo '<p>'; echo elgg_echo('admin:widget:version:newer_found'); echo elgg_view('output/url', array('href' => 'http://elgg.org/getelgg.php?forward=elgg-' . $latestRelease . '.zip', 'class' => 'elgg-button elgg-button-action', 'text' => elgg_echo('admin:version:download', array($latestRelease)))); echo '</p>'; $class = "elgg-state-error elgg-version"; } else { $class = "elgg-state-success elgg-version"; } $data = array('local_release' => $localRelease, 'latest_release' => $latestRelease, 'last_checked' => elgg_view_friendly_time($time), 'status' => elgg_echo('admin:widget:version:status:' . ($isLatest ? 'ok' : 'bad'))); echo '<table class="elgg-table-alt elgg-version">'; foreach ($data as $column => $value) { $column = elgg_echo("admin:version:{$column}"); echo "<tr><td><strong>{$column}</strong></td><td class=\"{$class}\">{$value}</td></tr>"; } echo '</table>'; echo '<br/>'; echo elgg_view('output/url', array('href' => '?refresh=1', 'class' => 'elgg-button elgg-button-action elgg-widget-refresh', 'text' => elgg_echo('admin:widget:version:check'))); } catch (IOException $e) { echo $e->getMessage(); }