Projects : mp-wp : mp-wp_genesis

mp-wp/wp-includes/update.php

Dir - Raw

1<?php
2/**
3 * A simple set of functions to check our version 1.0 update service.
4 *
5 * @package WordPress
6 * @since 2.3.0
7 */
8
9/**
10 * Check WordPress version against the newest version.
11 *
12 * The WordPress version, PHP version, and Locale is sent. Checks against the
13 * WordPress server at polimedia.us/muiewp server. Will only check if WordPress
14 * isn't installing.
15 *
16 * @package WordPress
17 * @since 2.3.0
18 * @uses $wp_version Used to check against the newest WordPress version.
19 *
20 * @return mixed Returns null if update is unsupported. Returns false if check is too soon.
21 */
22function wp_version_check() {
23 if ( defined('WP_INSTALLING') )
24 return;
25
26 global $wp_version, $wpdb, $wp_local_package;
27 $php_version = phpversion();
28
29 $current = get_option( 'update_core' );
30 if ( ! is_object($current) )
31 $current = new stdClass;
32
33 $locale = get_locale();
34 if (
35 isset( $current->last_checked ) &&
36 43200 > ( time() - $current->last_checked ) &&
37 $current->version_checked == $wp_version
38 )
39 return false;
40
41 // Update last_checked for current to prevent multiple blocking requests if request hangs
42 $current->last_checked = time();
43 update_option( 'update_core', $current );
44
45 if ( method_exists( $wpdb, 'db_version' ) )
46 $mysql_version = preg_replace('/[^0-9.].*/', '', $wpdb->db_version($wpdb->users));
47 else
48 $mysql_version = 'N/A';
49 $local_package = isset( $wp_local_package )? $wp_local_package : '';
50 $url = "http://polimedia.us/muiewp/core/version-check/1.3/?version=$wp_version&php=$php_version&locale=$locale&mysql=$mysql_version&local_package=$local_package";
51
52 $options = array('timeout' => 3);
53 $options['headers'] = array(
54 'Content-Type' => 'application/x-www-form-urlencoded; charset=' . get_option('blog_charset'),
55 'User-Agent' => 'WordPress/' . $wp_version . '; ' . get_bloginfo('url')
56 );
57
58 $response = wp_remote_request($url, $options);
59
60 if ( is_wp_error( $response ) )
61 return false;
62
63 if ( 200 != $response['response']['code'] )
64 return false;
65
66 $body = trim( $response['body'] );
67 $body = str_replace(array("\r\n", "\r"), "\n", $body);
68 $new_options = array();
69 foreach( explode( "\n\n", $body ) as $entry) {
70 $returns = explode("\n", $entry);
71 $new_option = new stdClass();
72 $new_option->response = attribute_escape( $returns[0] );
73 if ( isset( $returns[1] ) )
74 $new_option->url = clean_url( $returns[1] );
75 if ( isset( $returns[2] ) )
76 $new_option->package = clean_url( $returns[2] );
77 if ( isset( $returns[3] ) )
78 $new_option->current = attribute_escape( $returns[3] );
79 if ( isset( $returns[4] ) )
80 $new_option->locale = attribute_escape( $returns[4] );
81 $new_options[] = $new_option;
82 }
83
84 $updates = new stdClass();
85 $updates->updates = $new_options;
86 $updates->last_checked = time();
87 $updates->version_checked = $wp_version;
88 update_option( 'update_core', $updates);
89}
90add_action( 'init', 'wp_version_check' );
91
92/**
93 * Check plugin versions against the latest versions hosted on WordPress.org.
94 *
95 * The WordPress version, PHP version, and Locale is sent along with a list of
96 * all plugins installed. Checks against the WordPress server at
97 * polimedia.us/muiewp. Will only check if WordPress isn't installing.
98 *
99 * @package WordPress
100 * @since 2.3.0
101 * @uses $wp_version Used to notidy the WordPress version.
102 *
103 * @return mixed Returns null if update is unsupported. Returns false if check is too soon.
104 */
105function wp_update_plugins() {
106 global $wp_version;
107
108 if ( defined('WP_INSTALLING') )
109 return false;
110
111 // If running blog-side, bail unless we've not checked in the last 12 hours
112 if ( !function_exists( 'get_plugins' ) )
113 require_once( ABSPATH . 'wp-admin/includes/plugin.php' );
114
115 $plugins = get_plugins();
116 $active = get_option( 'active_plugins' );
117 $current = get_option( 'update_plugins' );
118 if ( ! is_object($current) )
119 $current = new stdClass;
120
121 $new_option = '';
122 $new_option->last_checked = time();
123 $time_not_changed = isset( $current->last_checked ) && 43200 > ( time() - $current->last_checked );
124
125 $plugin_changed = false;
126 foreach ( $plugins as $file => $p ) {
127 $new_option->checked[ $file ] = $p['Version'];
128
129 if ( !isset( $current->checked[ $file ] ) ) {
130 $plugin_changed = true;
131 continue;
132 }
133
134 if ( strval($current->checked[ $file ]) !== strval($p['Version']) )
135 $plugin_changed = true;
136 }
137
138 if ( isset ( $current->response ) && is_array( $current->response ) ) {
139 foreach ( $current->response as $plugin_file => $update_details ) {
140 if ( ! isset($plugins[ $plugin_file ]) ) {
141 $plugin_changed = true;
142 }
143 }
144 }
145
146 // Bail if we've checked in the last 12 hours and if nothing has changed
147 if ( $time_not_changed && !$plugin_changed )
148 return false;
149
150 // Update last_checked for current to prevent multiple blocking requests if request hangs
151 $current->last_checked = time();
152 update_option( 'update_plugins', $current );
153
154 $to_send->plugins = $plugins;
155 $to_send->active = $active;
156 $send = serialize( $to_send );
157 $body = 'plugins=' . urlencode( $send );
158
159 $options = array('method' => 'POST', 'timeout' => 3, 'body' => $body);
160 $options['headers'] = array(
161 'Content-Type' => 'application/x-www-form-urlencoded; charset=' . get_option('blog_charset'),
162 'Content-Length' => strlen($body),
163 'User-Agent' => 'WordPress/' . $wp_version . '; ' . get_bloginfo('url')
164 );
165
166 $raw_response = wp_remote_request('http://polimedia.us/muiewp/plugins/update-check/1.0/', $options);
167
168 if ( is_wp_error( $raw_response ) )
169 return false;
170
171 if( 200 != $raw_response['response']['code'] ) {
172 return false;
173 }
174
175 $response = unserialize( $raw_response['body'] );
176
177 if ( false !== $response )
178 $new_option->response = $response;
179 else
180 $new_option->response = array();
181
182 update_option( 'update_plugins', $new_option );
183}
184
185/**
186 * Check theme versions against the latest versions hosted on WordPress.org.
187 *
188 * A list of all themes installed in sent to WP. Checks against the
189 * WordPress server at polimedia.us/muiewp. Will only check if WordPress isn't
190 * installing.
191 *
192 * @package WordPress
193 * @since 2.7.0
194 * @uses $wp_version Used to notidy the WordPress version.
195 *
196 * @return mixed Returns null if update is unsupported. Returns false if check is too soon.
197 */
198function wp_update_themes( ) {
199 global $wp_version;
200
201 if( defined( 'WP_INSTALLING' ) )
202 return false;
203
204 if( !function_exists( 'get_themes' ) )
205 require_once( ABSPATH . 'wp-includes/theme.php' );
206
207 $installed_themes = get_themes( );
208 $current_theme = get_option( 'update_themes' );
209 if ( ! is_object($current_theme) )
210 $current_theme = new stdClass;
211
212 $new_option = '';
213 $new_option->last_checked = time( );
214 $time_not_changed = isset( $current_theme->last_checked ) && 43200 > ( time( ) - $current_theme->last_checked );
215
216 if( $time_not_changed )
217 return false;
218
219 // Update last_checked for current to prevent multiple blocking requests if request hangs
220 $current_theme->last_checked = time();
221 update_option( 'update_themes', $current_theme );
222
223 $themes = array( );
224 $themes['current_theme'] = $current_theme;
225 foreach( (array) $installed_themes as $theme_title => $theme ) {
226 $themes[$theme['Template']] = array( );
227
228 foreach( (array) $theme as $key => $value ) {
229 $themes[$theme['Template']][$key] = $value;
230 }
231 }
232
233 $options = array(
234 'method' => 'POST',
235 'timeout' => 3,
236 'body' => 'themes=' . urlencode( serialize( $themes ) )
237 );
238 $options['headers'] = array(
239 'Content-Type' => 'application/x-www-form-urlencoded; charset=' . get_option( 'blog_charset' ),
240 'Content-Length' => strlen( $options['body'] ),
241 'User-Agent' => 'WordPress/' . $wp_version . '; ' . get_bloginfo( 'url' )
242 );
243
244 $raw_response = wp_remote_request( 'http://polimedia.us/muiewp/themes/update-check/1.0/', $options );
245
246 if( is_wp_error( $raw_response ) )
247 return false;
248
249 if( 200 != $raw_response['response']['code'] )
250 return false;
251
252 $response = unserialize( $raw_response['body'] );
253 if( $response )
254 $new_option->response = $response;
255
256 update_option( 'update_themes', $new_option );
257}
258
259/**
260 * Check the last time plugins were run before checking plugin versions.
261 *
262 * This might have been backported to WordPress 2.6.1 for performance reasons.
263 * This is used for the wp-admin to check only so often instead of every page
264 * load.
265 *
266 * @since 2.7.0
267 * @access private
268 */
269function _maybe_update_plugins() {
270 $current = get_option( 'update_plugins' );
271 if ( isset( $current->last_checked ) && 43200 > ( time() - $current->last_checked ) )
272 return;
273 wp_update_plugins();
274}
275
276/**
277 * Check themes versions only after a duration of time.
278 *
279 * This is for performance reasons to make sure that on the theme version
280 * checker is not run on every page load.
281 *
282 * @since 2.7.0
283 * @access private
284 */
285function _maybe_update_themes( ) {
286 $current = get_option( 'update_themes' );
287 if( isset( $current->last_checked ) && 43200 > ( time( ) - $current->last_checked ) )
288 return;
289
290 wp_update_themes( );
291}
292
293add_action( 'load-plugins.php', 'wp_update_plugins' );
294add_action( 'load-update.php', 'wp_update_plugins' );
295add_action( 'admin_init', '_maybe_update_plugins' );
296add_action( 'wp_update_plugins', 'wp_update_plugins' );
297
298add_action( 'admin_init', '_maybe_update_themes' );
299add_action( 'wp_update_themes', 'wp_update_themes' );
300
301if ( !wp_next_scheduled('wp_update_plugins') && !defined('WP_INSTALLING') )
302 wp_schedule_event(time(), 'twicedaily', 'wp_update_plugins');
303
304
305if ( !wp_next_scheduled('wp_update_themes') && !defined('WP_INSTALLING') )
306 wp_schedule_event(time(), 'twicedaily', 'wp_update_themes');
307
308?>