2007-08-17 12:33:52 +02:00
< ? php
2007-10-30 22:40:30 +01:00
/**
* A simple set of functions to check our version 1.0 update service
*
* @ package WordPress
* @ since 2.3
*/
2007-08-17 12:33:52 +02:00
2007-10-30 22:40:30 +01:00
/**
* wp_version_check () - Check WordPress version against the newest version .
*
2008-02-05 07:47:27 +01:00
* The WordPress version , PHP version , and Locale is sent . Checks against the WordPress server at
2007-10-30 22:40:30 +01:00
* api . wordpress . org server . Will only check if PHP has fsockopen enabled and WordPress isn ' t installing .
*
* @ package WordPress
* @ since 2.3
* @ uses $wp_version Used to check against the newest WordPress version .
*
* @ return mixed Returns null if update is unsupported . Returns false if check is too soon .
*/
2007-08-17 12:33:52 +02:00
function wp_version_check () {
2007-09-22 02:08:50 +02:00
if ( ! function_exists ( 'fsockopen' ) || strpos ( $_SERVER [ 'PHP_SELF' ], 'install.php' ) !== false || defined ( 'WP_INSTALLING' ) )
2007-08-19 06:27:04 +02:00
return ;
2007-08-17 12:33:52 +02:00
global $wp_version ;
$php_version = phpversion ();
2007-09-04 01:19:20 +02:00
2007-08-17 12:33:52 +02:00
$current = get_option ( 'update_core' );
$locale = get_locale ();
2007-09-04 01:32:58 +02:00
if (
isset ( $current -> last_checked ) &&
43200 > ( time () - $current -> last_checked ) &&
2007-08-17 12:33:52 +02:00
$current -> version_checked == $wp_version
)
return false ;
$new_option = '' ;
$new_option -> last_checked = time (); // this gets set whether we get a response or not, so if something is down or misconfigured it won't delay the page load for more than 3 seconds, twice a day
$new_option -> version_checked = $wp_version ;
2008-03-11 17:13:07 +01:00
$http_request = " GET /core/version-check/1.1/?version= $wp_version &php= $php_version &locale= $locale HTTP/1.0 \r \n " ;
2007-08-17 12:33:52 +02:00
$http_request .= " Host: api.wordpress.org \r \n " ;
$http_request .= 'Content-Type: application/x-www-form-urlencoded; charset=' . get_option ( 'blog_charset' ) . " \r \n " ;
$http_request .= 'User-Agent: WordPress/' . $wp_version . '; ' . get_bloginfo ( 'url' ) . " \r \n " ;
$http_request .= " \r \n " ;
$response = '' ;
2007-09-22 02:08:50 +02:00
if ( false !== ( $fs = @ fsockopen ( 'api.wordpress.org' , 80 , $errno , $errstr , 3 ) ) && is_resource ( $fs ) ) {
2007-08-17 12:33:52 +02:00
fwrite ( $fs , $http_request );
while ( ! feof ( $fs ) )
$response .= fgets ( $fs , 1160 ); // One TCP-IP packet
fclose ( $fs );
2007-09-04 01:19:20 +02:00
2007-08-17 12:33:52 +02:00
$response = explode ( " \r \n \r \n " , $response , 2 );
2008-03-11 17:13:07 +01:00
if ( ! preg_match ( '|HTTP/.*? 200|' , $response [ 0 ] ) )
return false ;
2007-08-17 12:33:52 +02:00
$body = trim ( $response [ 1 ] );
$body = str_replace ( array ( " \r \n " , " \r " ), " \n " , $body );
2007-09-04 01:19:20 +02:00
2007-08-17 12:33:52 +02:00
$returns = explode ( " \n " , $body );
2008-03-11 17:13:07 +01:00
$new_option -> response = attribute_escape ( $returns [ 0 ] );
2007-08-17 12:33:52 +02:00
if ( isset ( $returns [ 1 ] ) )
2008-03-11 17:13:07 +01:00
$new_option -> url = clean_url ( $returns [ 1 ] );
if ( isset ( $returns [ 2 ] ) )
$new_option -> current = attribute_escape ( $returns [ 2 ] );
2007-08-17 12:33:52 +02:00
}
update_option ( 'update_core' , $new_option );
}
2008-02-20 03:55:36 +01:00
add_action ( 'init' , 'wp_version_check' );
2007-08-17 12:33:52 +02:00
?>