1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
|
<?php $blog_id = isset( $_POST[ 'blog_id' ] ) ? absint( $_POST[ 'blog_id' ] ) : 0; switch_to_blog( $blog_id );
echo $this->status_box( 'Migrating files (media, plugins, themes, etc) . . .' ); echo '<div id="pb_importbuddy_working" style="width: 100px;"><center><img src="' . pb_backupbuddy::plugin_url() . '/images/working.gif" title="Working... Please wait as this may take a moment..."></center></div>'; pb_backupbuddy::flush();
// VERIFY THIS IS NOT A NETWORK BACKUP SINCE WE CANNOT IMPORT A NETWORK INTO A NETWORK. Not doing this on previous page due to time limitations. $this->load_backup_dat(); if ( isset( $this->_backupdata[ 'is_multisite' ] ) && ( ( $this->_backupdata[ 'is_multisite' ] === true ) || $this->_backupdata[ 'is_multisite' ] === 'true' ) ) { $error_9003 = 'The backup is of a full Multisite Network. You cannot import a Network into a Network. You may only import standalone sites and sites exported from a Multisite.'; $this->status( 'error', 'ERROR #9023: ' . $error_9003 ); pb_backupbuddy::alert( $error_9003, true, '9003' ); $this->status( 'error', 'Unable to continue. Import halted.' ); echo '<script type="text/javascript">jQuery("#pb_importbuddy_working").hide();</script>'; pb_backupbuddy::flush(); } else { // Not a network being imported. // Set up destination upload path and URL information. We must pass these on in form since importing database will overwrite these. $wp_upload_url = $this->get_ms_option( $blog_id, 'fileupload_url' ); // Ronalds: $site_uploads[ 'baseurl' ]; if ( $wp_upload_url == '' ) { $wp_upload_array = wp_upload_dir(); //pb_backupbuddy::status( 'details', 'wp_upload_dir response: `' . print_r( $wp_upload_array, true ) . '`.' ); $wp_upload_url = $wp_upload_array['baseurl']; $wp_upload_dir = $wp_upload_array['basedir']; pb_backupbuddy::status( 'details', 'Upload URL option not found. Using new method to determine both URL and path. (WP 3.5+). Baseurl: `' . $wp_upload_url . '`. Basepath: `' . $wp_upload_dir . '`.' ); } else { $wp_upload_dir = ABSPATH . $this->get_ms_option( $blog_id, 'upload_path' ); // Ronalds: $site_uploads[ 'basedir' ]; } $wp_upload_dir = rtrim( $wp_upload_dir, "\\/" ); // Trim trailing slash if there (shouldnt be by default but someone could have manually edited it) pb_backupbuddy::status( 'details', 'Destination site uploads real file path: ' . $wp_upload_dir ); $wp_upload_url = rtrim( $wp_upload_url, "\\/" ); // Trim trailing slash if there (shouldnt be by default but someone could have manually edited it) pb_backupbuddy::status( 'details', 'Destination site virtual uploads URL (URL; no trailing slash): ' . $wp_upload_url ); $migrate_items = array(); // ********** BEGIN MEDIA FILES ********** pb_backupbuddy::status( 'message', 'Migrating media files . . .' ); // Iterate through the temporary directory and get a list of files/directories to copy over. $source_uploads_dir = $this->import_options[ 'extract_to' ] . '/wp-content/uploads'; if ( is_dir( $source_uploads_dir ) ) { $root_dir = @ opendir( $source_uploads_dir ); while (($file = readdir( $root_dir ) ) !== false ) { // Loop through all files in directory. if ( substr( $file, 0, 11 ) != 'backupbuddy' && $file != '.' && $file != '..' ) { // Ignore ., .., and any directories starting with backupbuddy (temps, etc). $migrate_items[] = $source_uploads_dir . '/' . $file; } } } $this->status( 'details', 'Migrating media: ' . implode( ', ', $migrate_items ) ); // Creating media directory. pb_backupbuddy::status( 'details', 'Creating uploads directory `' . $wp_upload_dir . '`.' ); if ( true !== pb_backupbuddy::$filesystem->mkdir( $wp_upload_dir ) ) { pb_backupbuddy::status( 'error', 'Unable to create uploads directory. Verify file permissions.' ); } // Copy files… $this->status( 'message', 'Copying media into destination media directory: ' . $wp_upload_dir ); foreach ( $migrate_items as $filename ) { pb_backupbuddy::$filesystem->recursive_copy( $filename, $wp_upload_dir . '/' . basename( $filename ) ); } $this->status( 'message', 'Media files migrated.' ); // ********** END MEDIA FILES ********** // ********** BEGIN PLUGIN FILES ********** $this->status( 'message', 'Migrating plugin files . . .' ); $source_plugins_dir = $this->import_options[ 'extract_to' ] . '/wp-content/plugins'; if ( is_dir( $source_plugins_dir ) ) { $migrate_items = array(); $root_dir = @ opendir( $source_plugins_dir ); while (($file = readdir( $root_dir ) ) !== false ) { // Loop through all files in directory. if ( substr( $file, 0, 11 ) != 'backupbuddy' && $file != '.' && $file != '..' ) { // Ignore ., .., and any directories starting with backupbuddy (temps, etc). $migrate_items[] = $source_plugins_dir . '/' . $file; } } } $this->status( 'details', 'Migrating plugins: ' . implode( ', ', $migrate_items ) ); // Copy files… $destination_plugins_dir = dirname( pb_backupbuddy::plugin_path() ); $this->status( 'message', 'Copying plugins into destination plugin directory: ' . $destination_plugins_dir ); foreach ( $migrate_items as $filename ) { if ( file_exists( $destination_plugins_dir . '/' . basename( $filename ) ) ) continue; // If plugin already exists skip it. pb_backupbuddy::$filesystem->recursive_copy( $filename, $destination_plugins_dir . '/' . basename( $filename ) ); } $this->status( 'message', 'Plugin files migrated . . .' ); // ********** END PLUGIN FILES ********** // ********** BEGIN THEME FILES ********** $this->status( 'message', 'Migrating theme files . . .' ); $source_themes_dir = $this->import_options[ 'extract_to' ] . '/wp-content/themes'; if ( is_dir( $source_themes_dir ) ) { $migrate_items = array(); $root_dir = @ opendir( $source_themes_dir ); while (($file = readdir( $root_dir ) ) !== false ) { if ( substr( $file, 0, 11 ) != 'backupbuddy' && $file != '.' && $file != '..' ) { $migrate_items[] = $source_themes_dir . '/' . $file; } } } $this->status( 'details', 'Migrating themes: ' . implode( ', ', $migrate_items ) ); // Copy files... $destination_themes_dir = WP_CONTENT_DIR . '/themes'; $this->status( 'message', 'Copying themes into destination theme directory: ' . $destination_themes_dir ); foreach ( $migrate_items as $filename ) { if ( file_exists( $destination_themes_dir . '/' . basename( $filename ) ) ) continue; // If theme already exists skip it. pb_backupbuddy::$filesystem->recursive_copy( $filename, $destination_themes_dir . '/' . basename( $filename ) ); } global $current_site; $errors = false; $blog = $domain = $path = ''; $form_url = add_query_arg( array( 'step' => '5', 'action' => 'step5' ) , pb_backupbuddy::page_url() ); $this->status( 'message', 'Theme files migrated . . .' ); // ********** END THEME FILES ********** $this->status( 'message', 'Files migrated.' ); echo '<script type="text/javascript">jQuery("#pb_importbuddy_working").hide();</script>'; pb_backupbuddy::flush(); $this->status( 'message', __('Files, such as media, plugins, and themes, were successfully migrated.', 'it-l10n-backupbuddy' ) ); ?> <form method="post" action="<?php echo esc_url( $form_url ); ?>"> <?php wp_nonce_field( 'bbms-migration', 'pb_bbms_migrate' ); ?> <input type='hidden' name='backup_file' value='<?php echo esc_attr( $_POST[ 'backup_file' ] ); ?>' /> <input type='hidden' name='blog_id' value='<?php echo esc_attr( absint( $_POST[ 'blog_id' ] ) ); ?>' /> <input type='hidden' name='blog_path' value='<?php echo esc_attr( $_POST[ 'blog_path' ] ); ?>' /> <input type='hidden' name='upload_path' value='<?php echo esc_attr( $wp_upload_dir ); ?>' /> <input type='hidden' name='global_options' value='<?php echo base64_encode( serialize( $this->advanced_options ) ); ?>' /> <input type='hidden' name='fileupload_url' value='<?php echo esc_attr( $wp_upload_url ); ?>' /> <?php submit_button( __('Next Step') . ' »', 'primary', 'add-site' ); ?> </form> <?php } // end if not multisite network backup type ?>
|