1 | <?php |
---|
2 | include_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php'; |
---|
3 | |
---|
4 | class Xpress_Upgrader extends WP_Upgrader { |
---|
5 | |
---|
6 | function upgrade_strings() { |
---|
7 | $this->strings['up_to_date'] = __('XPressME Integration Kit is at the latest version.', 'xpressme'); |
---|
8 | $this->strings['no_package'] = __('Upgrade package not available.', 'xpressme'); |
---|
9 | $this->strings['downloading_package'] = __('Downloading update from <span class="code">%s</span>…', 'xpressme'); |
---|
10 | $this->strings['unpack_package'] = __('Unpacking the update…', 'xpressme'); |
---|
11 | $this->strings['copy_failed'] = __('Could not copy files.', 'xpressme'); |
---|
12 | $this->strings['make_config'] = __('Delete source wp-config.php.', 'xpressme'); |
---|
13 | $this->strings['delete_failed'] = __('Could not delete files.', 'xpressme'); |
---|
14 | $this->strings['package_wrong'] = __('The structure of the package is wrong. ', 'xpressme'); |
---|
15 | } |
---|
16 | |
---|
17 | function upgrade($current) { |
---|
18 | global $wp_filesystem; |
---|
19 | |
---|
20 | $this->init(); |
---|
21 | $this->upgrade_strings(); |
---|
22 | |
---|
23 | if ( !empty($feedback) ) |
---|
24 | add_filter('update_feedback', $feedback); |
---|
25 | |
---|
26 | // Is an update available? |
---|
27 | if ( !isset( $current->response ) || $current->response == 'latest' ) |
---|
28 | return new WP_Error('up_to_date', $this->strings['up_to_date']); |
---|
29 | |
---|
30 | $res = $this->fs_connect( array(ABSPATH, WP_CONTENT_DIR) ); |
---|
31 | if ( is_wp_error($res) ) |
---|
32 | return $res; |
---|
33 | |
---|
34 | $wp_dir = trailingslashit($wp_filesystem->abspath()); |
---|
35 | |
---|
36 | $download = $this->download_package( $current->package ); |
---|
37 | if ( is_wp_error($download) ) |
---|
38 | return $download; |
---|
39 | |
---|
40 | $working_dir = $this->unpack_package( $download ); |
---|
41 | if ( is_wp_error($working_dir) ) |
---|
42 | return $working_dir; |
---|
43 | $kit_dir = $working_dir .'/xpressme_integration_kit/'; |
---|
44 | if (!$wp_filesystem->exists($kit_dir)){ // search sub dir. |
---|
45 | $kit_dir = ''; |
---|
46 | $subdirs = $wp_filesystem->dirlist($working_dir,false); |
---|
47 | foreach($subdirs as $subdir){ |
---|
48 | if ($wp_filesystem->exists($working_dir .'/' .$subdir['name'] .'/xpressme_integration_kit/')){ |
---|
49 | $kit_dir = $working_dir .'/' .$subdir['name'] .'/xpressme_integration_kit/'; |
---|
50 | continue; |
---|
51 | } |
---|
52 | } |
---|
53 | if (empty($kit_dir)){ |
---|
54 | $wp_filesystem->delete($working_dir, true); |
---|
55 | return new WP_Error('package_wrong', $this->strings['package_wrong']); |
---|
56 | } |
---|
57 | } |
---|
58 | // Copy update-core.php from the new version into place. |
---|
59 | $update_xpress_file = 'wp-content/plugins/xpressme/include/update_xpress.php'; |
---|
60 | if ( !$wp_filesystem->copy($kit_dir . $update_xpress_file, $wp_dir . $update_xpress_file, true) ) { |
---|
61 | $wp_filesystem->delete($working_dir, true); |
---|
62 | return new WP_Error('copy_failed', $this->strings['copy_failed']); |
---|
63 | } |
---|
64 | $wp_filesystem->chmod($wp_dir . $update_xpress_file, FS_CHMOD_FILE); |
---|
65 | |
---|
66 | require(ABSPATH . $update_xpress_file); |
---|
67 | return update_xpress($kit_dir, $wp_dir); |
---|
68 | } |
---|
69 | } |
---|
70 | ?> |
---|