2011-11-19 10:56:40 +00:00
< ? php
/**
* ownCloud
*
* @ author Frank Karlitschek
2012-05-26 17:14:24 +00:00
* @ copyright 2012 Frank Karlitschek frank @ owncloud . org
2011-11-19 10:56:40 +00:00
*
* This library is free software ; you can redistribute it and / or
* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
* License as published by the Free Software Foundation ; either
* version 3 of the License , or any later version .
*
* This library is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU AFFERO GENERAL PUBLIC LICENSE for more details .
*
* You should have received a copy of the GNU Affero General Public
* License along with this library . If not , see < http :// www . gnu . org / licenses />.
*
*/
/**
* Class that handels autoupdating of ownCloud
*/
class OC_Updater {
/**
* Check if a new version is available
*/
2012-09-07 13:22:01 +00:00
public static function check () {
2012-02-17 20:59:43 +00:00
OC_Appconfig :: setValue ( 'core' , 'lastupdatedat' , microtime ( true ));
2012-06-09 15:56:23 +00:00
if ( OC_Appconfig :: getValue ( 'core' , 'installedat' , '' ) == '' ) OC_Appconfig :: setValue ( 'core' , 'installedat' , microtime ( true ));
2011-11-19 10:56:40 +00:00
$updaterurl = 'http://apps.owncloud.com/updater.php' ;
$version = OC_Util :: getVersion ();
2012-06-09 15:56:23 +00:00
$version [ 'installed' ] = OC_Appconfig :: getValue ( 'core' , 'installedat' );
$version [ 'updated' ] = OC_Appconfig :: getValue ( 'core' , 'lastupdatedat' );
2011-11-19 10:56:40 +00:00
$version [ 'updatechannel' ] = 'stable' ;
2012-04-01 09:20:12 +00:00
$version [ 'edition' ] = OC_Util :: getEditionString ();
2011-11-19 10:56:40 +00:00
$versionstring = implode ( 'x' , $version );
//fetch xml data from updater
$url = $updaterurl . '?version=' . $versionstring ;
2012-10-08 09:53:00 +00:00
// set a sensible timeout of 10 sec to stay responsive even if the update server is down.
$ctx = stream_context_create (
2012-10-14 19:04:08 +00:00
array (
'http' => array (
'timeout' => 10
)
)
);
2012-10-08 09:53:00 +00:00
$xml =@ file_get_contents ( $url , 0 , $ctx );
2012-09-07 13:22:01 +00:00
if ( $xml == FALSE ) {
2011-11-19 10:56:40 +00:00
return array ();
}
$data =@ simplexml_load_string ( $xml );
$tmp = array ();
$tmp [ 'version' ] = $data -> version ;
$tmp [ 'versionstring' ] = $data -> versionstring ;
$tmp [ 'url' ] = $data -> url ;
$tmp [ 'web' ] = $data -> web ;
return $tmp ;
}
2012-09-07 13:22:01 +00:00
public static function ShowUpdatingHint () {
2012-08-31 08:51:35 +00:00
$l = OC_L10N :: get ( 'lib' );
2012-09-07 13:22:01 +00:00
if ( OC_Config :: getValue ( 'updatechecker' , true ) == true ) {
2012-06-09 15:56:23 +00:00
$data = OC_Updater :: check ();
if ( isset ( $data [ 'version' ]) and $data [ 'version' ] <> '' ) {
2012-08-31 08:51:35 +00:00
$txt = '<span style="color:#AA0000; font-weight:bold;">' . $l -> t ( '%s is available. Get <a href="%s">more information</a>' , array ( $data [ 'versionstring' ], $data [ 'web' ])) . '</span>' ;
2012-06-09 15:56:23 +00:00
} else {
2012-08-31 08:51:35 +00:00
$txt = $l -> t ( 'up to date' );
2012-06-09 15:56:23 +00:00
}
2011-11-19 10:56:40 +00:00
} else {
2012-08-31 08:51:35 +00:00
$txt = $l -> t ( 'updates check is disabled' );
2011-11-19 10:56:40 +00:00
}
return ( $txt );
}
2012-06-09 15:56:23 +00:00
2011-11-19 10:56:40 +00:00
/**
* do ownCloud update
*/
2012-09-07 13:22:01 +00:00
public static function doUpdate () {
2011-11-19 10:56:40 +00:00
//update ownCloud core
//update all apps
//update version in config
}
}