XPressME Integration Kit

Trac

source: trunk/xpressme_integration_kit/wp-content/plugins/xpressme/include/xpress_upgrade.php @ 700

Last change on this file since 700 was 700, checked in by toemon, 14 years ago

Ver2.4.0alpha2(for auto update test)

File size: 13.0 KB
Line 
1<?php
2function  find_xpress_update( $version, $locale ){
3                $latest_version = get_option('xpressme_latest_version');
4                return (object)$latest_version;
5}
6       
7       
8function list_xpress_update( $update=null ) {
9        global $xoops_config,$xpress_config;
10       
11        $xpress_version = $xoops_config->module_version . $xoops_config->module_codename;
12        $lang = WPLANG;
13
14        $check_url = "http://ja.xpressme.info/version_check/index.php?version=$xpress_version&lang=$lang";
15
16        echo    '<div class="wrap">'."\n";
17        echo            '<div id="icon-options-general" class="icon32"><br /></div>'."\n";
18        echo            '<h2>' . __('XPressME Upgrade', 'xpressme') . "</h2><br>\n";
19        if( get_xpress_latest_version($check_url)){
20                $latest = get_option('xpressme_latest_version');
21                if ($latest) {
22                        $site_url=$latest['url'];
23                        $package=$latest['package'];
24                        $latest_version=$latest['latest_version'];
25                        $check_time=$latest['check_time'];
26                }
27
28
29                if (version_compare($xpress_version, $latest_version, '>')){
30                                echo '<h3 class="response">';
31                                printf(__('You are using a XPressME Integration Kit development version (%1$s). Cool! Please <a href="%2$s">stay updated</a>.', 'xpressme') , $xpress_version , $latest['develop_url']);
32                                echo '</h3>';
33
34                } else if (version_compare($xpress_version, $latest_version, '<')) {
35                        echo '<h3 class="response">';
36                        _e( 'An updated version of XPressME Integration Kit is available.' );
37                        echo '</h3>';
38
39                        if ($latest['diff_response'] == 'diff_exists'){
40//                              echo '<p>';
41//                              printf(__('You can download the differential file from version %s to %s and upgrade it manually:', 'xpressme'),$xpress_version,$latest['diff_latest_version']);
42//                              echo '</p>';
43                                $download_diff  ='<a class="button" href="' . $latest['diff_package'] . '">';
44//                              $download_diff .=       sprintf(__('Download differential file for %s', 'xpressme') , $latest['diff_latest_version']);
45                                $download_diff .=       sprintf(__('Download differential file for %s', 'xpressme') , $xpress_version);
46                                $download_diff .='</a>';
47                        }
48                        $message =      sprintf(__('You can update to <a href="http://codex.wordpress.org/Version_%1$s">XPressME Integration Kit Ver %2$s</a> automatically or download the package and install it manually:'), $update->current, $latest_version);
49                        $submit = __('Update Automatically');
50                        $form_action = 'admin.php?page=upgrade_page&action=do-xpress-upgrade';
51                        $download = sprintf(__('Download %s', 'xpressme') , $latest_version);
52                        $show_buttons = true;
53
54                } else {
55                        echo '<h3>';
56                        printf(__('You have the latest version of XPressME Integration Kit Ver.%s.'),$xpress_version);
57                        echo '</h3>';
58
59                        $message = __('You have the latest version of XPressME Integration Kit. You do not need to upgrade', 'xpressme');
60                        $submit = __('Re-install Automatically');
61                        $form_action = 'update-core.php?action=do-core-reinstall';
62
63                }
64               
65                // develop
66                if ($latest['develop_response'] == 'development_exists'
67                        && !empty($latest['develop_package'])
68                        )
69                {
70                        echo '<h3 class="response">';
71                        printf(__('You can use the development version %s download the package and install it manually:', 'xpressme'),$latest['develop_latest_version']);
72                        echo '</h3>';
73                        echo '<a class="button" href="' . $latest['develop_package'] . '">';
74                        printf(__('Download %s', 'xpressme') , $latest['develop_latest_version']);
75                        echo '</a>';
76                        // develop diff
77                        if ($latest['diff_develop_response'] == 'diff_develop_exists'
78                                && !empty($latest['diff_develop_package'])
79                                )
80                        {
81                                        echo '<p>';
82                                        printf(__('You can download the differential file from version %s to %s and upgrade it manually:', 'xpressme'),$xpress_version,$latest['diff_develop_latest_version']);
83                                        echo '</p>';
84                                        echo '<a class="button" href="' . $latest['diff_develop_package'] . '">';
85                                                printf(__('Download differential file for %s', 'xpressme') , $latest['diff_develop_latest_version']);
86                                        echo '</a>';
87                        }
88                }
89
90                echo '<p>';
91                echo $message;
92                echo '</p>';
93                echo '<form method="post" action="' . $form_action . '" name="upgrade" class="upgrade">';
94        //      wp_nonce_field('upgrade-core');
95                echo '<p>';
96                echo '<input name="version" value="'. esc_attr($update->current) .'" type="hidden"/>';
97                echo '<input name="locale" value="'. esc_attr($update->locale) .'" type="hidden"/>';
98                if ( $show_buttons ) {
99                        echo '<input id="upgrade" class="button" type="submit" value="' . esc_attr($submit) . '" name="upgrade" />&nbsp;';
100                        echo '<a href="' . esc_url($package) . '" class="button">' . $download . '</a>&nbsp;';
101                        echo $download_diff;
102                }
103                echo '</form>';
104        } else {
105                echo '<h3 class="response">';
106                printf(__('There is no response from <a href="%s">version check API</a> now. sorry, please confirm it after.', 'xpressme'),$check_url);
107                echo    "</div>\n";
108        }
109}
110
111
112function xpress_update_core($current) {
113        include_once ABSPATH . 'wp-content/plugins/xpressme/include/class-xpress-upgrader.php';
114        $upgrader = new Xpress_Upgrader();
115        return $upgrader->upgrade($current);
116}
117
118function do_xpress_upgrade( $reinstall = false ) {
119        global $wp_filesystem;
120
121        if ( $reinstall )
122                $url = 'update-xpress.php?action=do-xpress-reinstall';
123        else
124                $url = 'update-xpress.php?action=do-xpress-upgrade';
125        $url = wp_nonce_url($url, 'upgrade-xpress');
126        if ( false === ($credentials = request_filesystem_credentials($url, '', false, ABSPATH)) )
127                return;
128
129        $version = isset( $_POST['version'] )? $_POST['version'] : false;
130        $locale = isset( $_POST['locale'] )? $_POST['locale'] : 'en_US';
131        $update = find_xpress_update( $version, $locale );
132//      $update = true;
133        if ( !$update )
134                return;
135
136
137        if ( ! WP_Filesystem($credentials, ABSPATH) ) {
138                request_filesystem_credentials($url, '', true, ABSPATH); //Failed to connect, Error and request again
139                return;
140        }
141?>
142        <div class="wrap">
143        <?php screen_icon(); ?>
144        <h2><?php _e('Update XPressME Integration Kit'); ?></h2>
145<?php
146        if ( $wp_filesystem->errors->get_error_code() ) {
147                foreach ( $wp_filesystem->errors->get_error_messages() as $message )
148                        show_message($message);
149                echo '</div>';
150                return;
151        }
152
153        if ( $reinstall )
154                $update->response = 'reinstall';
155
156        $result = xpress_update_core($update, 'show_message');
157
158        if ( is_wp_error($result) ) {
159                show_message($result);
160                if ('up_to_date' != $result->get_error_code() )
161                        show_message( __('Installation Failed') );
162        } else {
163                show_message( __('XPressME Integration Kit updated successfully') );
164                $update_url = 'http://localhost/cube/modules/xp_test/admin/update.php';
165                show_message( '<strong>' . __('Actions:') . '</strong> <a href="' . esc_url( $update_url ) . '">' . __('Go to Module Update') . '</a>' );
166        }
167        echo '</div>';
168}
169
170
171
172
173function upgrade_page()
174{
175        if ( ! current_user_can('update_plugins') )
176        wp_die(__('You do not have sufficient permissions to update XPressME Integration Kit for this site.'));
177        $action = isset($_GET['action']) ? $_GET['action'] : 'upgrade-xpress';
178        $upgrade_error = false;
179        if ( 'upgrade-xpress' == $action ) {
180                list_xpress_update();
181        } elseif ( 'do-xpress-upgrade' == $action) {
182                do_xpress_upgrade();
183        }
184}
185
186function xp_remote_get($url, $headers = ""){
187        global $xoops_config;
188        $xpress_version = $xoops_config->module_version . $xoops_config->module_codename;
189
190        require_once( $xoops_config->module_path . '/wp-includes/class-snoopy.php');
191
192        // Snoopy is an HTTP client in PHP
193        $client = new Snoopy();
194        $client->agent = 'XPressME/' . $xpress_version;
195        $client->read_timeout = 2;
196        if (is_array($headers) ) {
197                $client->rawheaders = $headers;
198        }
199
200        @$client->fetch($url);
201        $response['response']['code'] = $client->status;
202        $response['body'] = $client->results;
203        return $response;
204        return $client;
205
206}
207
208function get_xpress_latest_version($check_url){
209        global $wp_version, $wpdb, $wp_local_package;
210        global $xoops_config;
211       
212        $xpress_version = $xoops_config->module_version . $xoops_config->module_codename;
213        $lang = WPLANG;
214
215//      $check_url = "http://ja.xpressme.info/version_check/index.php?version=$xpress_version&lang=$lang";
216        $request_options = array(
217        'timeout' => 3,
218        'user-agent' => 'WordPress/' . $wp_version . '; ' . get_bloginfo( 'url' )
219        );
220
221        if (! function_exists('wp_remote_get')) {
222                $response = xp_remote_get($check_url);
223               
224                if (empty($response['body'])) return false;
225        } else {
226       
227                $response = wp_remote_get($check_url, $request_options);
228               
229                if ( is_wp_error( $response ) )
230                        return false;
231        }
232        if ( 200 != $response['response']['code'] )
233                return false;
234        $body = trim( $response['body'] );
235        $body = str_replace(array("\r\n", "\r"), "\n", $body);
236        $returns = explode("\n", $body);
237
238        if ( isset( $returns[0] ) ) $response = $returns[0]; else $response = '';
239        if ( isset( $returns[1] ) ) $url = clean_url( $returns[1] ); else $url = '';
240        if ( isset( $returns[2] ) ) $package = clean_url( $returns[2] ); else $package = '';
241        if ( isset( $returns[3] ) ) $latest_version = $returns[3]; else  $latest_version = '';
242        if ( isset( $returns[4] ) ) $lang = $returns[4]; else $lang = '';
243       
244        // diff
245        if ( isset( $returns[6] ) ) $diff_response = $returns[6]; else $diff_response = '';
246        if ( isset( $returns[7] ) ) $diff_url = clean_url( $returns[7] ); else $diff_url = '';
247        if ( isset( $returns[8] ) ) $diff_package = clean_url( $returns[8] ); else $diff_package = '';
248        if ( isset( $returns[9] ) ) $diff_latest_version = $returns[9]; else  $diff_latest_version = '';
249        if ( isset( $returns[10] ) ) $diff_lang = $returns[10]; else $diff_lang = '';
250
251        // developer
252        if ( isset( $returns[12] ) ) $develop_response = $returns[12]; else $develop_response = '';
253        if ( isset( $returns[13] ) ) $develop_url = clean_url( $returns[13] ); else $develop_url = '';
254        if ( isset( $returns[14] ) ) $develop_package = clean_url( $returns[14] ); else $develop_package = '';
255        if ( isset( $returns[15] ) ) $develop_latest_version = $returns[15]; else  $develop_latest_version = '';
256        if ( isset( $returns[16] ) ) $develop_lang = $returns[16]; else $develop_lang = '';
257       
258        // developer diff
259        if ( isset( $returns[18] ) ) $diff_develop_response = $returns[18]; else $diff_develop_response = '';
260        if ( isset( $returns[19] ) ) $diff_develop_url = clean_url( $returns[19] ); else $diff_develop_url = '';
261        if ( isset( $returns[20] ) ) $diff_develop_package = clean_url( $returns[20] ); else $diff_develop_package = '';
262        if ( isset( $returns[21] ) ) $diff_develop_latest_version = $returns[21]; else  $diff_develop_latest_version = '';
263        if ( isset( $returns[22] ) ) $diff_develop_lang = $returns[22]; else $diff_develop_lang = '';
264
265        $write_options = array (
266                'response' => $response ,
267                'url' => $url ,
268                'package' => $package ,
269                'latest_version' => $latest_version ,
270                'lang' => $lang ,
271                'diff_response' => $diff_response ,
272                'diff_url' => $diff_url ,
273                'diff_package' => $diff_package ,
274                'diff_latest_version' => $diff_latest_version ,
275                'diff_lang' => $diff_lang ,
276                'develop_response' => $develop_response ,
277                'develop_url' => $develop_url ,
278                'develop_package' => $develop_package ,
279                'develop_latest_version' => $develop_latest_version ,
280                'develop_lang' => $develop_lang ,
281                'diff_develop_response' => $diff_develop_response ,
282                'diff_develop_url' => $diff_develop_url ,
283                'diff_develop_package' => $diff_develop_package ,
284                'diff_develop_latest_version' => $diff_develop_latest_version ,
285                'diff_develop_lang' => $diff_develop_lang ,
286                'check_time' => time()
287        );
288       
289        $latest_version = get_option('xpressme_latest_version');
290        if (!$latest_version) {
291                add_option('xpressme_latest_version', $write_options);
292        } else {
293                update_option('xpressme_latest_version', $write_options);
294        }
295        return true;
296}
297
298function xpress_update_check() {
299        if ( defined('WP_INSTALLING') )
300                return;
301        global $pagenow;
302
303        $php_query_string = $_SERVER['QUERY_STRING'];
304
305        if ( 'admin.php' == $pagenow && 'page=upgrade_page' == $php_query_string)
306                return;
307
308        global $wp_version, $wpdb, $wp_local_package;
309        global $xoops_config;
310
311        $php_query_string = $_SERVER['QUERY_STRING'];
312        $xpress_version = $xoops_config->module_version . $xoops_config->module_codename;
313
314        $latest = get_option('xpressme_latest_version');
315        if (!$latest ) {
316                get_xpress_latest_version();
317                $latest = get_option('xpressme_latest_version');
318        }
319
320        if ($latest) {
321                $next_check = $latest['check_time'] + (60*60*24);
322                $now_time = time();
323                if ($next_check < $now_time ){
324                        get_xpress_latest_version();
325                        $latest = get_option('xpressme_latest_version');
326                }
327        }
328
329        if ($latest) {
330                $url=$latest['url'];
331                $package=$latest['package'];
332                $latest_version=$latest['latest_version'];
333                $check_time=$latest['check_time'];
334                $upgrade_page = $xoops_config->module_url . "/wp-admin/admin.php?page=upgrade_page";
335
336                if (version_compare($xpress_version, $latest_version, '<')) {
337                        if ( current_user_can('manage_options') ){
338                                $msg = sprintf( __('XPressME Integration Kit Version %1$s is available! <a href="%2$s">Please update now</a>.', 'xpressme'), $latest_version, $upgrade_page );
339                        } else {
340                                $msg = sprintf( __('XPressME Integration Kit Version %1$s is available! Please notify the site administrator.', 'xpressme'), $latest_version );
341                        }
342                        echo "<div id='update-nag'>$msg </div>";
343                }
344        }
345}
346?>
Note: See TracBrowser for help on using the repository browser.