XPressME Integration Kit

Trac

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

Last change on this file since 702 was 702, checked in by toemon, 13 years ago

Fix Warning: Missing argument 1 for get_xpress_latest_version()

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