109
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
1 |
<?php |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
2 |
/** |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
3 |
* WordPress Importer |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
4 |
* |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
5 |
* @package WordPress |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
6 |
* @subpackage Importer |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
7 |
*/ |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
8 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
9 |
/** |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
10 |
* WordPress Importer |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
11 |
* |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
12 |
* Will process the WordPress eXtended RSS files that you upload from the export |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
13 |
* file. |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
14 |
* |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
15 |
* @since unknown |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
16 |
*/ |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
17 |
class WP_Import { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
18 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
19 |
var $post_ids_processed = array (); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
20 |
var $orphans = array (); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
21 |
var $file; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
22 |
var $id; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
23 |
var $mtnames = array (); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
24 |
var $newauthornames = array (); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
25 |
var $allauthornames = array (); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
26 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
27 |
var $author_ids = array (); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
28 |
var $tags = array (); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
29 |
var $categories = array (); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
30 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
31 |
var $j = -1; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
32 |
var $fetch_attachments = false; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
33 |
var $url_remap = array (); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
34 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
35 |
function header() { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
36 |
echo '<div class="wrap">'; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
37 |
screen_icon(); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
38 |
echo '<h2>'.__('Import WordPress').'</h2>'; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
39 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
40 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
41 |
function footer() { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
42 |
echo '</div>'; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
43 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
44 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
45 |
function unhtmlentities($string) { // From php.net for < 4.3 compat |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
46 |
$trans_tbl = get_html_translation_table(HTML_ENTITIES); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
47 |
$trans_tbl = array_flip($trans_tbl); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
48 |
return strtr($string, $trans_tbl); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
49 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
50 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
51 |
function greet() { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
52 |
echo '<div class="narrow">'; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
53 |
echo '<p>'.__('Howdy! Upload your WordPress eXtended RSS (WXR) file and we’ll import the posts, pages, comments, custom fields, categories, and tags into this blog.').'</p>'; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
54 |
echo '<p>'.__('Choose a WordPress WXR file to upload, then click Upload file and import.').'</p>'; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
55 |
wp_import_upload_form("admin.php?import=wordpress&step=1"); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
56 |
echo '</div>'; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
57 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
58 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
59 |
function get_tag( $string, $tag ) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
60 |
global $wpdb; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
61 |
preg_match("|<$tag.*?>(.*?)</$tag>|is", $string, $return); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
62 |
$return = preg_replace('|^<!\[CDATA\[(.*)\]\]>$|s', '$1', $return[1]); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
63 |
$return = $wpdb->escape( trim( $return ) ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
64 |
return $return; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
65 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
66 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
67 |
function has_gzip() { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
68 |
return is_callable('gzopen'); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
69 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
70 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
71 |
function fopen($filename, $mode='r') { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
72 |
if ( $this->has_gzip() ) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
73 |
return gzopen($filename, $mode); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
74 |
return fopen($filename, $mode); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
75 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
76 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
77 |
function feof($fp) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
78 |
if ( $this->has_gzip() ) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
79 |
return gzeof($fp); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
80 |
return feof($fp); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
81 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
82 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
83 |
function fgets($fp, $len=8192) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
84 |
if ( $this->has_gzip() ) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
85 |
return gzgets($fp, $len); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
86 |
return fgets($fp, $len); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
87 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
88 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
89 |
function fclose($fp) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
90 |
if ( $this->has_gzip() ) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
91 |
return gzclose($fp); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
92 |
return fclose($fp); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
93 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
94 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
95 |
function get_entries($process_post_func=NULL) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
96 |
set_magic_quotes_runtime(0); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
97 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
98 |
$doing_entry = false; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
99 |
$is_wxr_file = false; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
100 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
101 |
$fp = $this->fopen($this->file, 'r'); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
102 |
if ($fp) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
103 |
while ( !$this->feof($fp) ) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
104 |
$importline = rtrim($this->fgets($fp)); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
105 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
106 |
// this doesn't check that the file is perfectly valid but will at least confirm that it's not the wrong format altogether |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
107 |
if ( !$is_wxr_file && preg_match('|xmlns:wp="http://wordpress[.]org/export/\d+[.]\d+/"|', $importline) ) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
108 |
$is_wxr_file = true; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
109 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
110 |
if ( false !== strpos($importline, '<wp:base_site_url>') ) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
111 |
preg_match('|<wp:base_site_url>(.*?)</wp:base_site_url>|is', $importline, $url); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
112 |
$this->base_url = $url[1]; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
113 |
continue; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
114 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
115 |
if ( false !== strpos($importline, '<wp:category>') ) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
116 |
preg_match('|<wp:category>(.*?)</wp:category>|is', $importline, $category); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
117 |
$this->categories[] = $category[1]; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
118 |
continue; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
119 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
120 |
if ( false !== strpos($importline, '<wp:tag>') ) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
121 |
preg_match('|<wp:tag>(.*?)</wp:tag>|is', $importline, $tag); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
122 |
$this->tags[] = $tag[1]; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
123 |
continue; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
124 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
125 |
if ( false !== strpos($importline, '<item>') ) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
126 |
$this->post = ''; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
127 |
$doing_entry = true; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
128 |
continue; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
129 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
130 |
if ( false !== strpos($importline, '</item>') ) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
131 |
$doing_entry = false; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
132 |
if ($process_post_func) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
133 |
call_user_func($process_post_func, $this->post); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
134 |
continue; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
135 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
136 |
if ( $doing_entry ) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
137 |
$this->post .= $importline . "\n"; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
138 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
139 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
140 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
141 |
$this->fclose($fp); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
142 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
143 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
144 |
return $is_wxr_file; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
145 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
146 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
147 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
148 |
function get_wp_authors() { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
149 |
// We need to find unique values of author names, while preserving the order, so this function emulates the unique_value(); php function, without the sorting. |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
150 |
$temp = $this->allauthornames; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
151 |
$authors[0] = array_shift($temp); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
152 |
$y = count($temp) + 1; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
153 |
for ($x = 1; $x < $y; $x ++) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
154 |
$next = array_shift($temp); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
155 |
if (!(in_array($next, $authors))) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
156 |
array_push($authors, "$next"); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
157 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
158 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
159 |
return $authors; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
160 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
161 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
162 |
function get_authors_from_post() { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
163 |
global $current_user; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
164 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
165 |
// this will populate $this->author_ids with a list of author_names => user_ids |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
166 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
167 |
foreach ( $_POST['author_in'] as $i => $in_author_name ) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
168 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
169 |
if ( !empty($_POST['user_select'][$i]) ) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
170 |
// an existing user was selected in the dropdown list |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
171 |
$user = get_userdata( intval($_POST['user_select'][$i]) ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
172 |
if ( isset($user->ID) ) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
173 |
$this->author_ids[$in_author_name] = $user->ID; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
174 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
175 |
elseif ( $this->allow_create_users() ) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
176 |
// nothing was selected in the dropdown list, so we'll use the name in the text field |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
177 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
178 |
$new_author_name = trim($_POST['user_create'][$i]); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
179 |
// if the user didn't enter a name, assume they want to use the same name as in the import file |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
180 |
if ( empty($new_author_name) ) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
181 |
$new_author_name = $in_author_name; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
182 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
183 |
$user_id = username_exists($new_author_name); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
184 |
if ( !$user_id ) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
185 |
$user_id = wp_create_user($new_author_name, wp_generate_password()); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
186 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
187 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
188 |
$this->author_ids[$in_author_name] = $user_id; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
189 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
190 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
191 |
// failsafe: if the user_id was invalid, default to the current user |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
192 |
if ( empty($this->author_ids[$in_author_name]) ) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
193 |
$this->author_ids[$in_author_name] = intval($current_user->ID); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
194 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
195 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
196 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
197 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
198 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
199 |
function wp_authors_form() { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
200 |
?> |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
201 |
<?php screen_icon(); ?> |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
202 |
<h2><?php _e('Assign Authors'); ?></h2> |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
203 |
<p><?php _e('To make it easier for you to edit and save the imported posts and drafts, you may want to change the name of the author of the posts. For example, you may want to import all the entries as <code>admin</code>s entries.'); ?></p> |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
204 |
<?php |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
205 |
if ( $this->allow_create_users() ) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
206 |
echo '<p>'.__('If a new user is created by WordPress, a password will be randomly generated. Manually change the user’s details if necessary.')."</p>\n"; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
207 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
208 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
209 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
210 |
$authors = $this->get_wp_authors(); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
211 |
echo '<form action="?import=wordpress&step=2&id=' . $this->id . '" method="post">'; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
212 |
wp_nonce_field('import-wordpress'); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
213 |
echo '<ol id="authors">'; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
214 |
$j = -1; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
215 |
foreach ($authors as $author) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
216 |
++ $j; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
217 |
echo '<li>'.__('Import author:').' <strong>'.$author.'</strong><br />'; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
218 |
$this->users_form($j, $author); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
219 |
echo '</li>'; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
220 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
221 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
222 |
if ( $this->allow_fetch_attachments() ) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
223 |
?> |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
224 |
</ol> |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
225 |
<?php screen_icon(); ?> |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
226 |
<h2><?php _e('Import Attachments'); ?></h2> |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
227 |
<p> |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
228 |
<input type="checkbox" value="1" name="attachments" id="import-attachments" /> |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
229 |
<label for="import-attachments"><?php _e('Download and import file attachments') ?></label> |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
230 |
</p> |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
231 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
232 |
<?php |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
233 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
234 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
235 |
echo '<p class="submit">'; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
236 |
echo '<input type="submit" class="button" value="'. esc_attr__('Submit') .'" />'.'<br />'; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
237 |
echo '</p>'; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
238 |
echo '</form>'; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
239 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
240 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
241 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
242 |
function users_form($n, $author) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
243 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
244 |
if ( $this->allow_create_users() ) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
245 |
printf('<label>'.__('Create user %1$s or map to existing'), ' <input type="text" value="'. esc_attr($author) .'" name="'.'user_create['.intval($n).']'.'" maxlength="30" /></label> <br />'); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
246 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
247 |
else { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
248 |
echo __('Map to existing').'<br />'; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
249 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
250 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
251 |
// keep track of $n => $author name |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
252 |
echo '<input type="hidden" name="author_in['.intval($n).']" value="' . esc_attr($author).'" />'; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
253 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
254 |
$users = get_users_of_blog(); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
255 |
?><select name="user_select[<?php echo $n; ?>]"> |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
256 |
<option value="0"><?php _e('- Select -'); ?></option> |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
257 |
<?php |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
258 |
foreach ($users as $user) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
259 |
echo '<option value="'.$user->user_id.'">'.$user->user_login.'</option>'; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
260 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
261 |
?> |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
262 |
</select> |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
263 |
<?php |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
264 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
265 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
266 |
function select_authors() { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
267 |
$is_wxr_file = $this->get_entries(array(&$this, 'process_author')); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
268 |
if ( $is_wxr_file ) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
269 |
$this->wp_authors_form(); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
270 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
271 |
else { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
272 |
echo '<h2>'.__('Invalid file').'</h2>'; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
273 |
echo '<p>'.__('Please upload a valid WXR (WordPress eXtended RSS) export file.').'</p>'; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
274 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
275 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
276 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
277 |
// fetch the user ID for a given author name, respecting the mapping preferences |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
278 |
function checkauthor($author) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
279 |
global $current_user; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
280 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
281 |
if ( !empty($this->author_ids[$author]) ) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
282 |
return $this->author_ids[$author]; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
283 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
284 |
// failsafe: map to the current user |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
285 |
return $current_user->ID; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
286 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
287 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
288 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
289 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
290 |
function process_categories() { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
291 |
global $wpdb; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
292 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
293 |
$cat_names = (array) get_terms('category', 'fields=names'); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
294 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
295 |
while ( $c = array_shift($this->categories) ) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
296 |
$cat_name = trim($this->get_tag( $c, 'wp:cat_name' )); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
297 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
298 |
// If the category exists we leave it alone |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
299 |
if ( in_array($cat_name, $cat_names) ) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
300 |
continue; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
301 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
302 |
$category_nicename = $this->get_tag( $c, 'wp:category_nicename' ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
303 |
$category_description = $this->get_tag( $c, 'wp:category_description' ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
304 |
$posts_private = (int) $this->get_tag( $c, 'wp:posts_private' ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
305 |
$links_private = (int) $this->get_tag( $c, 'wp:links_private' ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
306 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
307 |
$parent = $this->get_tag( $c, 'wp:category_parent' ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
308 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
309 |
if ( empty($parent) ) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
310 |
$category_parent = '0'; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
311 |
else |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
312 |
$category_parent = category_exists($parent); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
313 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
314 |
$catarr = compact('category_nicename', 'category_parent', 'posts_private', 'links_private', 'posts_private', 'cat_name', 'category_description'); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
315 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
316 |
$cat_ID = wp_insert_category($catarr); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
317 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
318 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
319 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
320 |
function process_tags() { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
321 |
global $wpdb; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
322 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
323 |
$tag_names = (array) get_terms('post_tag', 'fields=names'); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
324 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
325 |
while ( $c = array_shift($this->tags) ) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
326 |
$tag_name = trim($this->get_tag( $c, 'wp:tag_name' )); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
327 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
328 |
// If the category exists we leave it alone |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
329 |
if ( in_array($tag_name, $tag_names) ) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
330 |
continue; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
331 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
332 |
$slug = $this->get_tag( $c, 'wp:tag_slug' ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
333 |
$description = $this->get_tag( $c, 'wp:tag_description' ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
334 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
335 |
$tagarr = compact('slug', 'description'); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
336 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
337 |
$tag_ID = wp_insert_term($tag_name, 'post_tag', $tagarr); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
338 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
339 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
340 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
341 |
function process_author($post) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
342 |
$author = $this->get_tag( $post, 'dc:creator' ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
343 |
if ($author) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
344 |
$this->allauthornames[] = $author; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
345 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
346 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
347 |
function process_posts() { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
348 |
echo '<ol>'; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
349 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
350 |
$this->get_entries(array(&$this, 'process_post')); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
351 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
352 |
echo '</ol>'; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
353 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
354 |
wp_import_cleanup($this->id); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
355 |
do_action('import_done', 'wordpress'); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
356 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
357 |
echo '<h3>'.sprintf(__('All done.').' <a href="%s">'.__('Have fun!').'</a>', get_option('home')).'</h3>'; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
358 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
359 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
360 |
function process_post($post) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
361 |
global $wpdb; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
362 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
363 |
$post_ID = (int) $this->get_tag( $post, 'wp:post_id' ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
364 |
if ( $post_ID && !empty($this->post_ids_processed[$post_ID]) ) // Processed already |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
365 |
return 0; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
366 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
367 |
set_time_limit( 60 ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
368 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
369 |
// There are only ever one of these |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
370 |
$post_title = $this->get_tag( $post, 'title' ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
371 |
$post_date = $this->get_tag( $post, 'wp:post_date' ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
372 |
$post_date_gmt = $this->get_tag( $post, 'wp:post_date_gmt' ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
373 |
$comment_status = $this->get_tag( $post, 'wp:comment_status' ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
374 |
$ping_status = $this->get_tag( $post, 'wp:ping_status' ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
375 |
$post_status = $this->get_tag( $post, 'wp:status' ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
376 |
$post_name = $this->get_tag( $post, 'wp:post_name' ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
377 |
$post_parent = $this->get_tag( $post, 'wp:post_parent' ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
378 |
$menu_order = $this->get_tag( $post, 'wp:menu_order' ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
379 |
$post_type = $this->get_tag( $post, 'wp:post_type' ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
380 |
$post_password = $this->get_tag( $post, 'wp:post_password' ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
381 |
$guid = $this->get_tag( $post, 'guid' ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
382 |
$post_author = $this->get_tag( $post, 'dc:creator' ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
383 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
384 |
$post_excerpt = $this->get_tag( $post, 'excerpt:encoded' ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
385 |
$post_excerpt = preg_replace_callback('|<(/?[A-Z]+)|', create_function('$match', 'return "<" . strtolower($match[1]);'), $post_excerpt); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
386 |
$post_excerpt = str_replace('<br>', '<br />', $post_excerpt); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
387 |
$post_excerpt = str_replace('<hr>', '<hr />', $post_excerpt); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
388 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
389 |
$post_content = $this->get_tag( $post, 'content:encoded' ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
390 |
$post_content = preg_replace_callback('|<(/?[A-Z]+)|', create_function('$match', 'return "<" . strtolower($match[1]);'), $post_content); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
391 |
$post_content = str_replace('<br>', '<br />', $post_content); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
392 |
$post_content = str_replace('<hr>', '<hr />', $post_content); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
393 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
394 |
preg_match_all('|<category domain="tag">(.*?)</category>|is', $post, $tags); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
395 |
$tags = $tags[1]; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
396 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
397 |
$tag_index = 0; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
398 |
foreach ($tags as $tag) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
399 |
$tags[$tag_index] = $wpdb->escape($this->unhtmlentities(str_replace(array ('<![CDATA[', ']]>'), '', $tag))); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
400 |
$tag_index++; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
401 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
402 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
403 |
preg_match_all('|<category>(.*?)</category>|is', $post, $categories); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
404 |
$categories = $categories[1]; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
405 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
406 |
$cat_index = 0; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
407 |
foreach ($categories as $category) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
408 |
$categories[$cat_index] = $wpdb->escape($this->unhtmlentities(str_replace(array ('<![CDATA[', ']]>'), '', $category))); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
409 |
$cat_index++; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
410 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
411 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
412 |
$post_exists = post_exists($post_title, '', $post_date); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
413 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
414 |
if ( $post_exists ) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
415 |
echo '<li>'; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
416 |
printf(__('Post <em>%s</em> already exists.'), stripslashes($post_title)); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
417 |
$comment_post_ID = $post_id = $post_exists; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
418 |
} else { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
419 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
420 |
// If it has parent, process parent first. |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
421 |
$post_parent = (int) $post_parent; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
422 |
if ($post_parent) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
423 |
// if we already know the parent, map it to the local ID |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
424 |
if ( $parent = $this->post_ids_processed[$post_parent] ) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
425 |
$post_parent = $parent; // new ID of the parent |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
426 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
427 |
else { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
428 |
// record the parent for later |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
429 |
$this->orphans[intval($post_ID)] = $post_parent; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
430 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
431 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
432 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
433 |
echo '<li>'; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
434 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
435 |
$post_author = $this->checkauthor($post_author); //just so that if a post already exists, new users are not created by checkauthor |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
436 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
437 |
$postdata = compact('post_author', 'post_date', 'post_date_gmt', 'post_content', 'post_excerpt', 'post_title', 'post_status', 'post_name', 'comment_status', 'ping_status', 'guid', 'post_parent', 'menu_order', 'post_type', 'post_password'); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
438 |
$postdata['import_id'] = $post_ID; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
439 |
if ($post_type == 'attachment') { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
440 |
$remote_url = $this->get_tag( $post, 'wp:attachment_url' ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
441 |
if ( !$remote_url ) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
442 |
$remote_url = $guid; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
443 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
444 |
$comment_post_ID = $post_id = $this->process_attachment($postdata, $remote_url); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
445 |
if ( !$post_id or is_wp_error($post_id) ) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
446 |
return $post_id; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
447 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
448 |
else { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
449 |
printf(__('Importing post <em>%s</em>...'), stripslashes($post_title)); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
450 |
$comment_post_ID = $post_id = wp_insert_post($postdata); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
451 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
452 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
453 |
if ( is_wp_error( $post_id ) ) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
454 |
return $post_id; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
455 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
456 |
// Memorize old and new ID. |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
457 |
if ( $post_id && $post_ID ) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
458 |
$this->post_ids_processed[intval($post_ID)] = intval($post_id); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
459 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
460 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
461 |
// Add categories. |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
462 |
if (count($categories) > 0) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
463 |
$post_cats = array(); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
464 |
foreach ($categories as $category) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
465 |
if ( '' == $category ) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
466 |
continue; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
467 |
$slug = sanitize_term_field('slug', $category, 0, 'category', 'db'); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
468 |
$cat = get_term_by('slug', $slug, 'category'); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
469 |
$cat_ID = 0; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
470 |
if ( ! empty($cat) ) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
471 |
$cat_ID = $cat->term_id; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
472 |
if ($cat_ID == 0) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
473 |
$category = $wpdb->escape($category); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
474 |
$cat_ID = wp_insert_category(array('cat_name' => $category)); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
475 |
if ( is_wp_error($cat_ID) ) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
476 |
continue; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
477 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
478 |
$post_cats[] = $cat_ID; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
479 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
480 |
wp_set_post_categories($post_id, $post_cats); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
481 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
482 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
483 |
// Add tags. |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
484 |
if (count($tags) > 0) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
485 |
$post_tags = array(); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
486 |
foreach ($tags as $tag) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
487 |
if ( '' == $tag ) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
488 |
continue; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
489 |
$slug = sanitize_term_field('slug', $tag, 0, 'post_tag', 'db'); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
490 |
$tag_obj = get_term_by('slug', $slug, 'post_tag'); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
491 |
$tag_id = 0; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
492 |
if ( ! empty($tag_obj) ) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
493 |
$tag_id = $tag_obj->term_id; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
494 |
if ( $tag_id == 0 ) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
495 |
$tag = $wpdb->escape($tag); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
496 |
$tag_id = wp_insert_term($tag, 'post_tag'); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
497 |
if ( is_wp_error($tag_id) ) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
498 |
continue; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
499 |
$tag_id = $tag_id['term_id']; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
500 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
501 |
$post_tags[] = intval($tag_id); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
502 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
503 |
wp_set_post_tags($post_id, $post_tags); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
504 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
505 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
506 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
507 |
// Now for comments |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
508 |
preg_match_all('|<wp:comment>(.*?)</wp:comment>|is', $post, $comments); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
509 |
$comments = $comments[1]; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
510 |
$num_comments = 0; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
511 |
if ( $comments) { foreach ($comments as $comment) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
512 |
$comment_author = $this->get_tag( $comment, 'wp:comment_author'); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
513 |
$comment_author_email = $this->get_tag( $comment, 'wp:comment_author_email'); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
514 |
$comment_author_IP = $this->get_tag( $comment, 'wp:comment_author_IP'); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
515 |
$comment_author_url = $this->get_tag( $comment, 'wp:comment_author_url'); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
516 |
$comment_date = $this->get_tag( $comment, 'wp:comment_date'); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
517 |
$comment_date_gmt = $this->get_tag( $comment, 'wp:comment_date_gmt'); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
518 |
$comment_content = $this->get_tag( $comment, 'wp:comment_content'); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
519 |
$comment_approved = $this->get_tag( $comment, 'wp:comment_approved'); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
520 |
$comment_type = $this->get_tag( $comment, 'wp:comment_type'); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
521 |
$comment_parent = $this->get_tag( $comment, 'wp:comment_parent'); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
522 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
523 |
// if this is a new post we can skip the comment_exists() check |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
524 |
if ( !$post_exists || !comment_exists($comment_author, $comment_date) ) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
525 |
$commentdata = compact('comment_post_ID', 'comment_author', 'comment_author_url', 'comment_author_email', 'comment_author_IP', 'comment_date', 'comment_date_gmt', 'comment_content', 'comment_approved', 'comment_type', 'comment_parent'); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
526 |
wp_insert_comment($commentdata); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
527 |
$num_comments++; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
528 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
529 |
} } |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
530 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
531 |
if ( $num_comments ) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
532 |
printf(' '._n('(%s comment)', '(%s comments)', $num_comments), $num_comments); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
533 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
534 |
// Now for post meta |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
535 |
preg_match_all('|<wp:postmeta>(.*?)</wp:postmeta>|is', $post, $postmeta); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
536 |
$postmeta = $postmeta[1]; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
537 |
if ( $postmeta) { foreach ($postmeta as $p) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
538 |
$key = $this->get_tag( $p, 'wp:meta_key' ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
539 |
$value = $this->get_tag( $p, 'wp:meta_value' ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
540 |
$value = stripslashes($value); // add_post_meta() will escape. |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
541 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
542 |
$this->process_post_meta($post_id, $key, $value); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
543 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
544 |
} } |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
545 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
546 |
do_action('import_post_added', $post_id); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
547 |
print "</li>\n"; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
548 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
549 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
550 |
function process_post_meta($post_id, $key, $value) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
551 |
// the filter can return false to skip a particular metadata key |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
552 |
$_key = apply_filters('import_post_meta_key', $key); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
553 |
if ( $_key ) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
554 |
add_post_meta( $post_id, $_key, $value ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
555 |
do_action('import_post_meta', $post_id, $_key, $value); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
556 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
557 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
558 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
559 |
function process_attachment($postdata, $remote_url) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
560 |
if ($this->fetch_attachments and $remote_url) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
561 |
printf( __('Importing attachment <em>%s</em>... '), htmlspecialchars($remote_url) ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
562 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
563 |
// If the URL is absolute, but does not contain http, upload it assuming the base_site_url variable |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
564 |
if ( preg_match('/^\/[\w\W]+$/', $remote_url) ) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
565 |
$remote_url = rtrim($this->base_url,'/').$remote_url; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
566 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
567 |
$upload = $this->fetch_remote_file($postdata, $remote_url); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
568 |
if ( is_wp_error($upload) ) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
569 |
printf( __('Remote file error: %s'), htmlspecialchars($upload->get_error_message()) ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
570 |
return $upload; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
571 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
572 |
else { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
573 |
print '('.size_format(filesize($upload['file'])).')'; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
574 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
575 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
576 |
if ( $info = wp_check_filetype($upload['file']) ) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
577 |
$postdata['post_mime_type'] = $info['type']; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
578 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
579 |
else { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
580 |
print __('Invalid file type'); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
581 |
return; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
582 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
583 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
584 |
$postdata['guid'] = $upload['url']; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
585 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
586 |
// as per wp-admin/includes/upload.php |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
587 |
$post_id = wp_insert_attachment($postdata, $upload['file']); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
588 |
wp_update_attachment_metadata( $post_id, wp_generate_attachment_metadata( $post_id, $upload['file'] ) ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
589 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
590 |
// remap the thumbnail url. this isn't perfect because we're just guessing the original url. |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
591 |
if ( preg_match('@^image/@', $info['type']) && $thumb_url = wp_get_attachment_thumb_url($post_id) ) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
592 |
$parts = pathinfo($remote_url); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
593 |
$ext = $parts['extension']; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
594 |
$name = basename($parts['basename'], ".{$ext}"); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
595 |
$this->url_remap[$parts['dirname'] . '/' . $name . '.thumbnail.' . $ext] = $thumb_url; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
596 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
597 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
598 |
return $post_id; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
599 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
600 |
else { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
601 |
printf( __('Skipping attachment <em>%s</em>'), htmlspecialchars($remote_url) ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
602 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
603 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
604 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
605 |
function fetch_remote_file($post, $url) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
606 |
$upload = wp_upload_dir($post['post_date']); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
607 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
608 |
// extract the file name and extension from the url |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
609 |
$file_name = basename($url); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
610 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
611 |
// get placeholder file in the upload dir with a unique sanitized filename |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
612 |
$upload = wp_upload_bits( $file_name, 0, '', $post['post_date']); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
613 |
if ( $upload['error'] ) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
614 |
echo $upload['error']; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
615 |
return new WP_Error( 'upload_dir_error', $upload['error'] ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
616 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
617 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
618 |
// fetch the remote url and write it to the placeholder file |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
619 |
$headers = wp_get_http($url, $upload['file']); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
620 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
621 |
//Request failed |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
622 |
if ( ! $headers ) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
623 |
@unlink($upload['file']); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
624 |
return new WP_Error( 'import_file_error', __('Remote server did not respond') ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
625 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
626 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
627 |
// make sure the fetch was successful |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
628 |
if ( $headers['response'] != '200' ) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
629 |
@unlink($upload['file']); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
630 |
return new WP_Error( 'import_file_error', sprintf(__('Remote file returned error response %1$d %2$s'), $headers['response'], get_status_header_desc($headers['response']) ) ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
631 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
632 |
elseif ( isset($headers['content-length']) && filesize($upload['file']) != $headers['content-length'] ) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
633 |
@unlink($upload['file']); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
634 |
return new WP_Error( 'import_file_error', __('Remote file is incorrect size') ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
635 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
636 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
637 |
$max_size = $this->max_attachment_size(); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
638 |
if ( !empty($max_size) and filesize($upload['file']) > $max_size ) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
639 |
@unlink($upload['file']); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
640 |
return new WP_Error( 'import_file_error', sprintf(__('Remote file is too large, limit is %s', size_format($max_size))) ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
641 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
642 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
643 |
// keep track of the old and new urls so we can substitute them later |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
644 |
$this->url_remap[$url] = $upload['url']; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
645 |
// if the remote url is redirected somewhere else, keep track of the destination too |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
646 |
if ( $headers['x-final-location'] != $url ) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
647 |
$this->url_remap[$headers['x-final-location']] = $upload['url']; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
648 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
649 |
return $upload; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
650 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
651 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
652 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
653 |
// sort by strlen, longest string first |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
654 |
function cmpr_strlen($a, $b) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
655 |
return strlen($b) - strlen($a); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
656 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
657 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
658 |
// update url references in post bodies to point to the new local files |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
659 |
function backfill_attachment_urls() { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
660 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
661 |
// make sure we do the longest urls first, in case one is a substring of another |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
662 |
uksort($this->url_remap, array(&$this, 'cmpr_strlen')); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
663 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
664 |
global $wpdb; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
665 |
foreach ($this->url_remap as $from_url => $to_url) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
666 |
// remap urls in post_content |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
667 |
$wpdb->query( $wpdb->prepare("UPDATE {$wpdb->posts} SET post_content = REPLACE(post_content, '%s', '%s')", $from_url, $to_url) ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
668 |
// remap enclosure urls |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
669 |
$result = $wpdb->query( $wpdb->prepare("UPDATE {$wpdb->postmeta} SET meta_value = REPLACE(meta_value, '%s', '%s') WHERE meta_key='enclosure'", $from_url, $to_url) ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
670 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
671 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
672 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
673 |
// update the post_parent of orphans now that we know the local id's of all parents |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
674 |
function backfill_parents() { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
675 |
global $wpdb; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
676 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
677 |
foreach ($this->orphans as $child_id => $parent_id) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
678 |
$local_child_id = $this->post_ids_processed[$child_id]; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
679 |
$local_parent_id = $this->post_ids_processed[$parent_id]; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
680 |
if ($local_child_id and $local_parent_id) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
681 |
$wpdb->query( $wpdb->prepare("UPDATE {$wpdb->posts} SET post_parent = %d WHERE ID = %d", $local_parent_id, $local_child_id)); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
682 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
683 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
684 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
685 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
686 |
function is_valid_meta_key($key) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
687 |
// skip attachment metadata since we'll regenerate it from scratch |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
688 |
if ( $key == '_wp_attached_file' || $key == '_wp_attachment_metadata' ) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
689 |
return false; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
690 |
return $key; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
691 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
692 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
693 |
// give the user the option of creating new users to represent authors in the import file? |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
694 |
function allow_create_users() { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
695 |
return apply_filters('import_allow_create_users', true); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
696 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
697 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
698 |
// give the user the option of downloading and importing attached files |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
699 |
function allow_fetch_attachments() { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
700 |
return apply_filters('import_allow_fetch_attachments', true); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
701 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
702 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
703 |
function max_attachment_size() { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
704 |
// can be overridden with a filter - 0 means no limit |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
705 |
return apply_filters('import_attachment_size_limit', 0); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
706 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
707 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
708 |
function import_start() { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
709 |
wp_defer_term_counting(true); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
710 |
wp_defer_comment_counting(true); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
711 |
do_action('import_start'); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
712 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
713 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
714 |
function import_end() { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
715 |
do_action('import_end'); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
716 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
717 |
// clear the caches after backfilling |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
718 |
foreach ($this->post_ids_processed as $post_id) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
719 |
clean_post_cache($post_id); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
720 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
721 |
wp_defer_term_counting(false); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
722 |
wp_defer_comment_counting(false); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
723 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
724 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
725 |
function import($id, $fetch_attachments = false) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
726 |
$this->id = (int) $id; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
727 |
$this->fetch_attachments = ($this->allow_fetch_attachments() && (bool) $fetch_attachments); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
728 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
729 |
add_filter('import_post_meta_key', array($this, 'is_valid_meta_key')); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
730 |
$file = get_attached_file($this->id); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
731 |
$this->import_file($file); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
732 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
733 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
734 |
function import_file($file) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
735 |
$this->file = $file; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
736 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
737 |
$this->import_start(); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
738 |
$this->get_authors_from_post(); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
739 |
wp_suspend_cache_invalidation(true); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
740 |
$this->get_entries(); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
741 |
$this->process_categories(); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
742 |
$this->process_tags(); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
743 |
$result = $this->process_posts(); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
744 |
wp_suspend_cache_invalidation(false); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
745 |
$this->backfill_parents(); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
746 |
$this->backfill_attachment_urls(); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
747 |
$this->import_end(); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
748 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
749 |
if ( is_wp_error( $result ) ) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
750 |
return $result; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
751 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
752 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
753 |
function handle_upload() { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
754 |
$file = wp_import_handle_upload(); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
755 |
if ( isset($file['error']) ) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
756 |
echo '<p>'.__('Sorry, there has been an error.').'</p>'; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
757 |
echo '<p><strong>' . $file['error'] . '</strong></p>'; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
758 |
return false; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
759 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
760 |
$this->file = $file['file']; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
761 |
$this->id = (int) $file['id']; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
762 |
return true; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
763 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
764 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
765 |
function dispatch() { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
766 |
if (empty ($_GET['step'])) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
767 |
$step = 0; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
768 |
else |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
769 |
$step = (int) $_GET['step']; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
770 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
771 |
$this->header(); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
772 |
switch ($step) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
773 |
case 0 : |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
774 |
$this->greet(); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
775 |
break; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
776 |
case 1 : |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
777 |
check_admin_referer('import-upload'); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
778 |
if ( $this->handle_upload() ) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
779 |
$this->select_authors(); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
780 |
break; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
781 |
case 2: |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
782 |
check_admin_referer('import-wordpress'); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
783 |
$result = $this->import( $_GET['id'], $_POST['attachments'] ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
784 |
if ( is_wp_error( $result ) ) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
785 |
echo $result->get_error_message(); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
786 |
break; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
787 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
788 |
$this->footer(); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
789 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
790 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
791 |
function WP_Import() { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
792 |
// Nothing. |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
793 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
794 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
795 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
796 |
/** |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
797 |
* Register WordPress Importer |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
798 |
* |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
799 |
* @since unknown |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
800 |
* @var WP_Import |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
801 |
* @name $wp_import |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
802 |
*/ |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
803 |
$wp_import = new WP_Import(); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
804 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
805 |
register_importer('wordpress', 'WordPress', __('Import <strong>posts, pages, comments, custom fields, categories, and tags</strong> from a WordPress export file.'), array ($wp_import, 'dispatch')); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
806 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
807 |
?> |