1ec191d88b
+YUCHENG HU+ git-svn-id: https://svn.code.sf.net/p/hawebs/svn@423 a2543c7e-f6e9-4f8a-8bff-1ffc34733512
76 lines
2.2 KiB
PHP
76 lines
2.2 KiB
PHP
<?php
|
|
/**
|
|
* Piwik - Open source web analytics
|
|
*
|
|
* @link http://piwik.org
|
|
* @license http://www.gnu.org/licenses/gpl-3.0.html Gpl v3 or later
|
|
* @version $Id: UpdateCheck.php 2058 2010-04-07 10:26:32Z matt $
|
|
*
|
|
* @category Piwik
|
|
* @package Piwik
|
|
*/
|
|
|
|
/**
|
|
* Class to check if a newer version of Piwik is available
|
|
*
|
|
* @package Piwik
|
|
*/
|
|
class Piwik_UpdateCheck
|
|
{
|
|
const CHECK_INTERVAL = 28800; // every 8 hours
|
|
const LAST_TIME_CHECKED = 'UpdateCheck_LastTimeChecked';
|
|
const LATEST_VERSION = 'UpdateCheck_LatestVersion';
|
|
const PIWIK_HOST = 'http://api.piwik.org/1.0/getLatestVersion/';
|
|
const SOCKET_TIMEOUT = 2;
|
|
|
|
/**
|
|
* Check for a newer version
|
|
*
|
|
* @param bool $force Force check
|
|
*/
|
|
public static function check($force = false)
|
|
{
|
|
$lastTimeChecked = Piwik_GetOption(self::LAST_TIME_CHECKED);
|
|
if($force || $lastTimeChecked === false
|
|
|| time() - self::CHECK_INTERVAL > $lastTimeChecked )
|
|
{
|
|
// set the time checked first, so that parallel Piwik requests don't all trigger the http requests
|
|
Piwik_SetOption(self::LAST_TIME_CHECKED, time(), $autoload = 1);
|
|
$parameters = array(
|
|
'piwik_version' => Piwik_Version::VERSION,
|
|
'php_version' => phpversion(),
|
|
'url' => Piwik_Url::getCurrentUrlWithoutQueryString(),
|
|
'trigger' => Piwik_Common::getRequestVar('module','','string'),
|
|
'timezone' => Piwik_SitesManager_API::getInstance()->getDefaultTimezone(),
|
|
);
|
|
|
|
$url = self::PIWIK_HOST . "?" . http_build_query($parameters, '', '&');
|
|
$timeout = self::SOCKET_TIMEOUT;
|
|
try {
|
|
$latestVersion = Piwik_Http::sendHttpRequest($url, $timeout);
|
|
Piwik_SetOption(self::LATEST_VERSION, $latestVersion);
|
|
} catch(Exception $e) {
|
|
// e.g., disable_functions = fsockopen; allow_url_open = Off
|
|
Piwik_SetOption(self::LATEST_VERSION, '');
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Returns version number of a newer Piwik release.
|
|
*
|
|
* @return string|false false if current version is the latest available,
|
|
* or the latest version number if a newest release is available
|
|
*/
|
|
public static function isNewestVersionAvailable()
|
|
{
|
|
$latestVersion = Piwik_GetOption(self::LATEST_VERSION);
|
|
if(!empty($latestVersion)
|
|
&& version_compare(Piwik_Version::VERSION, $latestVersion) == -1)
|
|
{
|
|
return $latestVersion;
|
|
}
|
|
return false;
|
|
}
|
|
}
|