forked from WordPress/wordpress-develop
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbase.php
More file actions
61 lines (53 loc) · 1.78 KB
/
base.php
File metadata and controls
61 lines (53 loc) · 1.78 KB
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
<?php
abstract class WP_Import_UnitTestCase extends WP_UnitTestCase {
/**
* Import a WXR file.
*
* The $users parameter provides information on how users specified in the import
* file should be imported. Each key is a user login name and indicates if the user
* should be mapped to an existing user, created as a new user with a particular login
* or imported with the information held in the WXR file. An example of this:
*
* <code>
* $users = array(
* 'alice' => 1, // alice will be mapped to user ID 1.
* 'bob' => 'john', // bob will be transformed into john.
* 'eve' => false // eve will be imported as is.
* );</code>
*
* @param string $filename Full path of the file to import
* @param array $users User import settings
* @param bool $fetch_files Whether or not do download remote attachments
*/
protected function _import_wp( $filename, $users = array(), $fetch_files = true ) {
$importer = new WP_Import();
$file = realpath( $filename );
$this->assertNotEmpty( $file, 'Path to import file is empty.' );
$this->assertTrue( is_file( $file ), 'Import file is not a file.' );
$authors = array();
$mapping = array();
$new = array();
$i = 0;
// Each user is either mapped to a given ID, mapped to a new user
// with given login or imported using details in WXR file.
foreach ( $users as $user => $map ) {
$authors[ $i ] = $user;
if ( is_int( $map ) ) {
$mapping[ $i ] = $map;
} elseif ( is_string( $map ) ) {
$new[ $i ] = $map;
}
$i++;
}
$_POST = array(
'imported_authors' => $authors,
'user_map' => $mapping,
'user_new' => $new,
);
ob_start();
$importer->fetch_attachments = $fetch_files;
$importer->import( $file );
ob_end_clean();
$_POST = array();
}
}