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 |
* Blogger 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 |
* How many records per GData query |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
11 |
* |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
12 |
* @package WordPress |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
13 |
* @subpackage Blogger_Import |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
14 |
* @var int |
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 |
define( 'MAX_RESULTS', 50 ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
18 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
19 |
/** |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
20 |
* How many seconds to let the script run |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
21 |
* |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
22 |
* @package WordPress |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
23 |
* @subpackage Blogger_Import |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
24 |
* @var int |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
25 |
* @since unknown |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
26 |
*/ |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
27 |
define( 'MAX_EXECUTION_TIME', 20 ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
28 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
29 |
/** |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
30 |
* How many seconds between status bar updates |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
31 |
* |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
32 |
* @package WordPress |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
33 |
* @subpackage Blogger_Import |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
34 |
* @var int |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
35 |
* @since unknown |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
36 |
*/ |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
37 |
define( 'STATUS_INTERVAL', 3 ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
38 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
39 |
/** |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
40 |
* Blogger Importer class |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
41 |
* |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
42 |
* @since unknown |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
43 |
*/ |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
44 |
class Blogger_Import { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
45 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
46 |
// Shows the welcome screen and the magic auth link. |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
47 |
function greet() { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
48 |
$next_url = get_option('siteurl') . '/wp-admin/index.php?import=blogger&noheader=true'; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
49 |
$auth_url = "https://www.google.com/accounts/AuthSubRequest"; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
50 |
$title = __('Import Blogger'); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
51 |
$welcome = __('Howdy! This importer allows you to import posts and comments from your Blogger account into your WordPress blog.'); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
52 |
$prereqs = __('To use this importer, you must have a Google account and an upgraded (New, was Beta) blog hosted on blogspot.com or a custom domain (not FTP).'); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
53 |
$stepone = __('The first thing you need to do is tell Blogger to let WordPress access your account. You will be sent back here after providing authorization.'); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
54 |
$auth = esc_attr__('Authorize'); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
55 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
56 |
echo " |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
57 |
<div class='wrap'> |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
58 |
".screen_icon()." |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
59 |
<h2>$title</h2> |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
60 |
<p>$welcome</p><p>$prereqs</p><p>$stepone</p> |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
61 |
<form action='$auth_url' method='get'> |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
62 |
<p class='submit' style='text-align:left;'> |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
63 |
<input type='submit' class='button' value='$auth' /> |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
64 |
<input type='hidden' name='scope' value='http://www.blogger.com/feeds/' /> |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
65 |
<input type='hidden' name='session' value='1' /> |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
66 |
<input type='hidden' name='secure' value='0' /> |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
67 |
<input type='hidden' name='next' value='$next_url' /> |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
68 |
</p> |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
69 |
</form> |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
70 |
</div>\n"; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
71 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
72 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
73 |
function uh_oh($title, $message, $info) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
74 |
echo "<div class='wrap'>"; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
75 |
screen_icon(); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
76 |
echo "<h2>$title</h2><p>$message</p><pre>$info</pre></div>"; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
77 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
78 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
79 |
function auth() { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
80 |
// We have a single-use token that must be upgraded to a session token. |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
81 |
$token = preg_replace( '/[^-_0-9a-zA-Z]/', '', $_GET['token'] ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
82 |
$headers = array( |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
83 |
"GET /accounts/AuthSubSessionToken HTTP/1.0", |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
84 |
"Authorization: AuthSub token=\"$token\"" |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
85 |
); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
86 |
$request = join( "\r\n", $headers ) . "\r\n\r\n"; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
87 |
$sock = $this->_get_auth_sock( ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
88 |
if ( ! $sock ) return false; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
89 |
$response = $this->_txrx( $sock, $request ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
90 |
preg_match( '/token=([-_0-9a-z]+)/i', $response, $matches ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
91 |
if ( empty( $matches[1] ) ) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
92 |
$this->uh_oh( |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
93 |
__( 'Authorization failed' ), |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
94 |
__( 'Something went wrong. If the problem persists, send this info to support:' ), |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
95 |
htmlspecialchars($response) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
96 |
); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
97 |
return false; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
98 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
99 |
$this->token = $matches[1]; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
100 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
101 |
wp_redirect( remove_query_arg( array( 'token', 'noheader' ) ) ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
102 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
103 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
104 |
function get_token_info() { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
105 |
$headers = array( |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
106 |
"GET /accounts/AuthSubTokenInfo HTTP/1.0", |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
107 |
"Authorization: AuthSub token=\"$this->token\"" |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
108 |
); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
109 |
$request = join( "\r\n", $headers ) . "\r\n\r\n"; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
110 |
$sock = $this->_get_auth_sock( ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
111 |
if ( ! $sock ) return; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
112 |
$response = $this->_txrx( $sock, $request ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
113 |
return $this->parse_response($response); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
114 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
115 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
116 |
function token_is_valid() { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
117 |
$info = $this->get_token_info(); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
118 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
119 |
if ( $info['code'] == 200 ) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
120 |
return true; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
121 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
122 |
return false; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
123 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
124 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
125 |
function show_blogs($iter = 0) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
126 |
if ( empty($this->blogs) ) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
127 |
$headers = array( |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
128 |
"GET /feeds/default/blogs HTTP/1.0", |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
129 |
"Host: www.blogger.com", |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
130 |
"Authorization: AuthSub token=\"$this->token\"" |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
131 |
); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
132 |
$request = join( "\r\n", $headers ) . "\r\n\r\n"; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
133 |
$sock = $this->_get_blogger_sock( ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
134 |
if ( ! $sock ) return; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
135 |
$response = $this->_txrx( $sock, $request ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
136 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
137 |
// Quick and dirty XML mining. |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
138 |
list( $headers, $xml ) = explode( "\r\n\r\n", $response ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
139 |
$p = xml_parser_create(); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
140 |
xml_parse_into_struct($p, $xml, $vals, $index); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
141 |
xml_parser_free($p); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
142 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
143 |
$this->title = $vals[$index['TITLE'][0]]['value']; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
144 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
145 |
// Give it a few retries... this step often flakes out the first time. |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
146 |
if ( empty( $index['ENTRY'] ) ) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
147 |
if ( $iter < 3 ) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
148 |
return $this->show_blogs($iter + 1); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
149 |
} else { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
150 |
$this->uh_oh( |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
151 |
__('Trouble signing in'), |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
152 |
__('We were not able to gain access to your account. Try starting over.'), |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
153 |
'' |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
154 |
); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
155 |
return false; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
156 |
} |
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 |
foreach ( $index['ENTRY'] as $i ) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
160 |
$blog = array(); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
161 |
while ( ( $tag = $vals[$i] ) && ! ( $tag['tag'] == 'ENTRY' && $tag['type'] == 'close' ) ) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
162 |
if ( $tag['tag'] == 'TITLE' ) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
163 |
$blog['title'] = $tag['value']; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
164 |
} elseif ( $tag['tag'] == 'SUMMARY' ) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
165 |
$blog['summary'] == $tag['value']; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
166 |
} elseif ( $tag['tag'] == 'LINK' ) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
167 |
if ( $tag['attributes']['REL'] == 'alternate' && $tag['attributes']['TYPE'] == 'text/html' ) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
168 |
$parts = parse_url( $tag['attributes']['HREF'] ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
169 |
$blog['host'] = $parts['host']; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
170 |
} elseif ( $tag['attributes']['REL'] == 'edit' ) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
171 |
$blog['gateway'] = $tag['attributes']['HREF']; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
172 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
173 |
++$i; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
174 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
175 |
if ( ! empty ( $blog ) ) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
176 |
$blog['total_posts'] = $this->get_total_results('posts', $blog['host']); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
177 |
$blog['total_comments'] = $this->get_total_results('comments', $blog['host']); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
178 |
$blog['mode'] = 'init'; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
179 |
$this->blogs[] = $blog; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
180 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
181 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
182 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
183 |
if ( empty( $this->blogs ) ) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
184 |
$this->uh_oh( |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
185 |
__('No blogs found'), |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
186 |
__('We were able to log in but there were no blogs. Try a different account next time.'), |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
187 |
'' |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
188 |
); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
189 |
return false; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
190 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
191 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
192 |
//echo '<pre>'.print_r($this,1).'</pre>'; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
193 |
$start = esc_js( __('Import') ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
194 |
$continue = esc_js( __('Continue') ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
195 |
$stop = esc_js( __('Importing...') ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
196 |
$authors = esc_js( __('Set Authors') ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
197 |
$loadauth = esc_js( __('Preparing author mapping form...') ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
198 |
$authhead = esc_js( __('Final Step: Author Mapping') ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
199 |
$nothing = esc_js( __('Nothing was imported. Had you already imported this blog?') ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
200 |
$title = __('Blogger Blogs'); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
201 |
$name = __('Blog Name'); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
202 |
$url = __('Blog URL'); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
203 |
$action = __('The Magic Button'); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
204 |
$posts = __('Posts'); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
205 |
$comments = __('Comments'); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
206 |
$noscript = __('This feature requires Javascript but it seems to be disabled. Please enable Javascript and then reload this page. Don’t worry, you can turn it back off when you’re done.'); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
207 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
208 |
$interval = STATUS_INTERVAL * 1000; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
209 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
210 |
foreach ( $this->blogs as $i => $blog ) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
211 |
if ( $blog['mode'] == 'init' ) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
212 |
$value = $start; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
213 |
elseif ( $blog['mode'] == 'posts' || $blog['mode'] == 'comments' ) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
214 |
$value = $continue; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
215 |
else |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
216 |
$value = $authors; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
217 |
$value = esc_attr($value); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
218 |
$blogtitle = esc_js( $blog['title'] ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
219 |
$pdone = isset($blog['posts_done']) ? (int) $blog['posts_done'] : 0; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
220 |
$cdone = isset($blog['comments_done']) ? (int) $blog['comments_done'] : 0; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
221 |
$init .= "blogs[$i]=new blog($i,'$blogtitle','{$blog['mode']}'," . $this->get_js_status($i) . ');'; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
222 |
$pstat = "<div class='ind' id='pind$i'> </div><div id='pstat$i' class='stat'>$pdone/{$blog['total_posts']}</div>"; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
223 |
$cstat = "<div class='ind' id='cind$i'> </div><div id='cstat$i' class='stat'>$cdone/{$blog['total_comments']}</div>"; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
224 |
$rows .= "<tr id='blog$i'><td class='blogtitle'>$blogtitle</td><td class='bloghost'>{$blog['host']}</td><td class='bar'>$pstat</td><td class='bar'>$cstat</td><td class='submit'><input type='submit' class='button' id='submit$i' value='$value' /><input type='hidden' name='blog' value='$i' /></td></tr>\n"; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
225 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
226 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
227 |
echo "<div class='wrap'><h2>$title</h2><noscript>$noscript</noscript><table cellpadding='5px'><thead><tr><td>$name</td><td>$url</td><td>$posts</td><td>$comments</td><td>$action</td></tr></thead>\n$rows</table></div>"; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
228 |
echo " |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
229 |
<script type='text/javascript'> |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
230 |
/* <![CDATA[ */ |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
231 |
var strings = {cont:'$continue',stop:'$stop',stopping:'$stopping',authors:'$authors',nothing:'$nothing'}; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
232 |
var blogs = {}; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
233 |
function blog(i, title, mode, status){ |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
234 |
this.blog = i; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
235 |
this.mode = mode; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
236 |
this.title = title; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
237 |
this.status = status; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
238 |
this.button = document.getElementById('submit'+this.blog); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
239 |
}; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
240 |
blog.prototype = { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
241 |
start: function() { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
242 |
this.cont = true; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
243 |
this.kick(); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
244 |
this.check(); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
245 |
}, |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
246 |
kick: function() { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
247 |
++this.kicks; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
248 |
var i = this.blog; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
249 |
jQuery.post('admin.php?import=blogger&noheader=true',{blog:this.blog},function(text,result){blogs[i].kickd(text,result)}); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
250 |
}, |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
251 |
check: function() { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
252 |
++this.checks; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
253 |
var i = this.blog; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
254 |
jQuery.post('admin.php?import=blogger&noheader=true&status=true',{blog:this.blog},function(text,result){blogs[i].checkd(text,result)}); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
255 |
}, |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
256 |
kickd: function(text, result) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
257 |
if ( result == 'error' ) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
258 |
// TODO: exception handling |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
259 |
if ( this.cont ) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
260 |
setTimeout('blogs['+this.blog+'].kick()', 1000); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
261 |
} else { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
262 |
if ( text == 'done' ) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
263 |
this.stop(); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
264 |
this.done(); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
265 |
} else if ( text == 'nothing' ) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
266 |
this.stop(); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
267 |
this.nothing(); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
268 |
} else if ( text == 'continue' ) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
269 |
this.kick(); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
270 |
} else if ( this.mode = 'stopped' ) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
271 |
jQuery(this.button).attr('value', strings.cont); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
272 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
273 |
--this.kicks; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
274 |
}, |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
275 |
checkd: function(text, result) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
276 |
if ( result == 'error' ) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
277 |
// TODO: exception handling |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
278 |
} else { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
279 |
eval('this.status='+text); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
280 |
jQuery('#pstat'+this.blog).empty().append(this.status.p1+'/'+this.status.p2); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
281 |
jQuery('#cstat'+this.blog).empty().append(this.status.c1+'/'+this.status.c2); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
282 |
this.update(); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
283 |
if ( this.cont || this.kicks > 0 ) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
284 |
setTimeout('blogs['+this.blog+'].check()', $interval); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
285 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
286 |
--this.checks; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
287 |
}, |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
288 |
update: function() { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
289 |
jQuery('#pind'+this.blog).width(((this.status.p1>0&&this.status.p2>0)?(this.status.p1/this.status.p2*jQuery('#pind'+this.blog).parent().width()):1)+'px'); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
290 |
jQuery('#cind'+this.blog).width(((this.status.c1>0&&this.status.c2>0)?(this.status.c1/this.status.c2*jQuery('#cind'+this.blog).parent().width()):1)+'px'); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
291 |
}, |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
292 |
stop: function() { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
293 |
this.cont = false; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
294 |
}, |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
295 |
done: function() { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
296 |
this.mode = 'authors'; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
297 |
jQuery(this.button).attr('value', strings.authors); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
298 |
}, |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
299 |
nothing: function() { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
300 |
this.mode = 'nothing'; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
301 |
jQuery(this.button).remove(); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
302 |
alert(strings.nothing); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
303 |
}, |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
304 |
getauthors: function() { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
305 |
if ( jQuery('div.wrap').length > 1 ) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
306 |
jQuery('div.wrap').gt(0).remove(); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
307 |
jQuery('div.wrap').empty().append('<h2>$authhead</h2><h3>' + this.title + '</h3>'); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
308 |
jQuery('div.wrap').append('<p id=\"auth\">$loadauth</p>'); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
309 |
jQuery('p#auth').load('index.php?import=blogger&noheader=true&authors=1',{blog:this.blog}); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
310 |
}, |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
311 |
init: function() { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
312 |
this.update(); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
313 |
var i = this.blog; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
314 |
jQuery(this.button).bind('click', function(){return blogs[i].click();}); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
315 |
this.kicks = 0; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
316 |
this.checks = 0; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
317 |
}, |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
318 |
click: function() { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
319 |
if ( this.mode == 'init' || this.mode == 'stopped' || this.mode == 'posts' || this.mode == 'comments' ) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
320 |
this.mode = 'started'; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
321 |
this.start(); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
322 |
jQuery(this.button).attr('value', strings.stop); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
323 |
} else if ( this.mode == 'started' ) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
324 |
return false; // let it run... |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
325 |
this.mode = 'stopped'; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
326 |
this.stop(); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
327 |
if ( this.checks > 0 || this.kicks > 0 ) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
328 |
this.mode = 'stopping'; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
329 |
jQuery(this.button).attr('value', strings.stopping); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
330 |
} else { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
331 |
jQuery(this.button).attr('value', strings.cont); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
332 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
333 |
} else if ( this.mode == 'authors' ) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
334 |
document.location = 'index.php?import=blogger&authors=1&blog='+this.blog; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
335 |
//this.mode = 'authors2'; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
336 |
//this.getauthors(); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
337 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
338 |
return false; |
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 |
$init |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
342 |
jQuery.each(blogs, function(i, me){me.init();}); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
343 |
/* ]]> */ |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
344 |
</script>\n"; |
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 |
// Handy function for stopping the script after a number of seconds. |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
348 |
function have_time() { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
349 |
global $importer_started; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
350 |
if ( time() - $importer_started > MAX_EXECUTION_TIME ) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
351 |
die('continue'); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
352 |
return true; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
353 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
354 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
355 |
function get_total_results($type, $host) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
356 |
$headers = array( |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
357 |
"GET /feeds/$type/default?max-results=1&start-index=2 HTTP/1.0", |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
358 |
"Host: $host", |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
359 |
"Authorization: AuthSub token=\"$this->token\"" |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
360 |
); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
361 |
$request = join( "\r\n", $headers ) . "\r\n\r\n"; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
362 |
$sock = $this->_get_blogger_sock( $host ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
363 |
if ( ! $sock ) return; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
364 |
$response = $this->_txrx( $sock, $request ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
365 |
$response = $this->parse_response( $response ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
366 |
$parser = xml_parser_create(); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
367 |
xml_parse_into_struct($parser, $response['body'], $struct, $index); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
368 |
xml_parser_free($parser); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
369 |
$total_results = $struct[$index['OPENSEARCH:TOTALRESULTS'][0]]['value']; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
370 |
return (int) $total_results; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
371 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
372 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
373 |
function import_blog($blogID) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
374 |
global $importing_blog; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
375 |
$importing_blog = $blogID; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
376 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
377 |
if ( isset($_GET['authors']) ) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
378 |
return print($this->get_author_form()); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
379 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
380 |
header('Content-Type: text/plain'); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
381 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
382 |
if ( isset($_GET['status']) ) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
383 |
die($this->get_js_status()); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
384 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
385 |
if ( isset($_GET['saveauthors']) ) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
386 |
die($this->save_authors()); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
387 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
388 |
$blog = $this->blogs[$blogID]; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
389 |
$total_results = $this->get_total_results('posts', $blog['host']); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
390 |
$this->blogs[$importing_blog]['total_posts'] = $total_results; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
391 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
392 |
$start_index = $total_results - MAX_RESULTS + 1; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
393 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
394 |
if ( isset( $this->blogs[$importing_blog]['posts_start_index'] ) ) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
395 |
$start_index = (int) $this->blogs[$importing_blog]['posts_start_index']; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
396 |
elseif ( $total_results > MAX_RESULTS ) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
397 |
$start_index = $total_results - MAX_RESULTS + 1; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
398 |
else |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
399 |
$start_index = 1; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
400 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
401 |
// This will be positive until we have finished importing posts |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
402 |
if ( $start_index > 0 ) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
403 |
// Grab all the posts |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
404 |
$this->blogs[$importing_blog]['mode'] = 'posts'; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
405 |
$query = "start-index=$start_index&max-results=" . MAX_RESULTS; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
406 |
do { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
407 |
$index = $struct = $entries = array(); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
408 |
$headers = array( |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
409 |
"GET /feeds/posts/default?$query HTTP/1.0", |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
410 |
"Host: {$blog['host']}", |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
411 |
"Authorization: AuthSub token=\"$this->token\"" |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
412 |
); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
413 |
$request = join( "\r\n", $headers ) . "\r\n\r\n"; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
414 |
$sock = $this->_get_blogger_sock( $blog['host'] ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
415 |
if ( ! $sock ) return; // TODO: Error handling |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
416 |
$response = $this->_txrx( $sock, $request ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
417 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
418 |
$response = $this->parse_response( $response ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
419 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
420 |
// Extract the entries and send for insertion |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
421 |
preg_match_all( '/<entry[^>]*>.*?<\/entry>/s', $response['body'], $matches ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
422 |
if ( count( $matches[0] ) ) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
423 |
$entries = array_reverse($matches[0]); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
424 |
foreach ( $entries as $entry ) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
425 |
$entry = "<feed>$entry</feed>"; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
426 |
$AtomParser = new AtomParser(); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
427 |
$AtomParser->parse( $entry ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
428 |
$result = $this->import_post($AtomParser->entry); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
429 |
if ( is_wp_error( $result ) ) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
430 |
return $result; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
431 |
unset($AtomParser); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
432 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
433 |
} else break; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
434 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
435 |
// Get the 'previous' query string which we'll use on the next iteration |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
436 |
$query = ''; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
437 |
$links = preg_match_all('/<link([^>]*)>/', $response['body'], $matches); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
438 |
if ( count( $matches[1] ) ) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
439 |
foreach ( $matches[1] as $match ) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
440 |
if ( preg_match('/rel=.previous./', $match) ) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
441 |
$query = @html_entity_decode( preg_replace('/^.*href=[\'"].*\?(.+)[\'"].*$/', '$1', $match), ENT_COMPAT, get_option('blog_charset') ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
442 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
443 |
if ( $query ) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
444 |
parse_str($query, $q); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
445 |
$this->blogs[$importing_blog]['posts_start_index'] = (int) $q['start-index']; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
446 |
} else |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
447 |
$this->blogs[$importing_blog]['posts_start_index'] = 0; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
448 |
$this->save_vars(); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
449 |
} while ( !empty( $query ) && $this->have_time() ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
450 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
451 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
452 |
$total_results = $this->get_total_results( 'comments', $blog['host'] ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
453 |
$this->blogs[$importing_blog]['total_comments'] = $total_results; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
454 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
455 |
if ( isset( $this->blogs[$importing_blog]['comments_start_index'] ) ) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
456 |
$start_index = (int) $this->blogs[$importing_blog]['comments_start_index']; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
457 |
elseif ( $total_results > MAX_RESULTS ) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
458 |
$start_index = $total_results - MAX_RESULTS + 1; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
459 |
else |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
460 |
$start_index = 1; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
461 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
462 |
if ( $start_index > 0 ) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
463 |
// Grab all the comments |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
464 |
$this->blogs[$importing_blog]['mode'] = 'comments'; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
465 |
$query = "start-index=$start_index&max-results=" . MAX_RESULTS; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
466 |
do { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
467 |
$index = $struct = $entries = array(); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
468 |
$headers = array( |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
469 |
"GET /feeds/comments/default?$query HTTP/1.0", |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
470 |
"Host: {$blog['host']}", |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
471 |
"Authorization: AuthSub token=\"$this->token\"" |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
472 |
); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
473 |
$request = join( "\r\n", $headers ) . "\r\n\r\n"; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
474 |
$sock = $this->_get_blogger_sock( $blog['host'] ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
475 |
if ( ! $sock ) return; // TODO: Error handling |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
476 |
$response = $this->_txrx( $sock, $request ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
477 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
478 |
$response = $this->parse_response( $response ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
479 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
480 |
// Extract the comments and send for insertion |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
481 |
preg_match_all( '/<entry[^>]*>.*?<\/entry>/s', $response['body'], $matches ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
482 |
if ( count( $matches[0] ) ) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
483 |
$entries = array_reverse( $matches[0] ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
484 |
foreach ( $entries as $entry ) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
485 |
$entry = "<feed>$entry</feed>"; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
486 |
$AtomParser = new AtomParser(); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
487 |
$AtomParser->parse( $entry ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
488 |
$this->import_comment($AtomParser->entry); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
489 |
unset($AtomParser); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
490 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
491 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
492 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
493 |
// Get the 'previous' query string which we'll use on the next iteration |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
494 |
$query = ''; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
495 |
$links = preg_match_all('/<link([^>]*)>/', $response['body'], $matches); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
496 |
if ( count( $matches[1] ) ) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
497 |
foreach ( $matches[1] as $match ) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
498 |
if ( preg_match('/rel=.previous./', $match) ) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
499 |
$query = @html_entity_decode( preg_replace('/^.*href=[\'"].*\?(.+)[\'"].*$/', '$1', $match), ENT_COMPAT, get_option('blog_charset') ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
500 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
501 |
parse_str($query, $q); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
502 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
503 |
$this->blogs[$importing_blog]['comments_start_index'] = (int) $q['start-index']; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
504 |
$this->save_vars(); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
505 |
} while ( !empty( $query ) && $this->have_time() ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
506 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
507 |
$this->blogs[$importing_blog]['mode'] = 'authors'; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
508 |
$this->save_vars(); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
509 |
if ( !$this->blogs[$importing_blog]['posts_done'] && !$this->blogs[$importing_blog]['comments_done'] ) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
510 |
die('nothing'); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
511 |
do_action('import_done', 'blogger'); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
512 |
die('done'); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
513 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
514 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
515 |
function convert_date( $date ) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
516 |
preg_match('#([0-9]{4})-([0-9]{2})-([0-9]{2})T([0-9]{2}):([0-9]{2}):([0-9]{2})(?:\.[0-9]+)?(Z|[\+|\-][0-9]{2,4}){0,1}#', $date, $date_bits); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
517 |
$offset = iso8601_timezone_to_offset( $date_bits[7] ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
518 |
$timestamp = gmmktime($date_bits[4], $date_bits[5], $date_bits[6], $date_bits[2], $date_bits[3], $date_bits[1]); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
519 |
$timestamp -= $offset; // Convert from Blogger local time to GMT |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
520 |
$timestamp += get_option('gmt_offset') * 3600; // Convert from GMT to WP local time |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
521 |
return gmdate('Y-m-d H:i:s', $timestamp); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
522 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
523 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
524 |
function no_apos( $string ) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
525 |
return str_replace( ''', "'", $string); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
526 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
527 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
528 |
function min_whitespace( $string ) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
529 |
return preg_replace( '|\s+|', ' ', $string ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
530 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
531 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
532 |
function import_post( $entry ) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
533 |
global $importing_blog; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
534 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
535 |
// The old permalink is all Blogger gives us to link comments to their posts. |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
536 |
if ( isset( $entry->draft ) ) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
537 |
$rel = 'self'; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
538 |
else |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
539 |
$rel = 'alternate'; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
540 |
foreach ( $entry->links as $link ) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
541 |
if ( $link['rel'] == $rel ) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
542 |
$parts = parse_url( $link['href'] ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
543 |
$entry->old_permalink = $parts['path']; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
544 |
break; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
545 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
546 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
547 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
548 |
$post_date = $this->convert_date( $entry->published ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
549 |
$post_content = trim( addslashes( $this->no_apos( @html_entity_decode( $entry->content, ENT_COMPAT, get_option('blog_charset') ) ) ) ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
550 |
$post_title = trim( addslashes( $this->no_apos( $this->min_whitespace( $entry->title ) ) ) ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
551 |
$post_status = isset( $entry->draft ) ? 'draft' : 'publish'; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
552 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
553 |
// Clean up content |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
554 |
$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
|
555 |
$post_content = str_replace('<br>', '<br />', $post_content); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
556 |
$post_content = str_replace('<hr>', '<hr />', $post_content); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
557 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
558 |
// Checks for duplicates |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
559 |
if ( isset( $this->blogs[$importing_blog]['posts'][$entry->old_permalink] ) ) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
560 |
++$this->blogs[$importing_blog]['posts_skipped']; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
561 |
} elseif ( $post_id = post_exists( $post_title, $post_content, $post_date ) ) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
562 |
$this->blogs[$importing_blog]['posts'][$entry->old_permalink] = $post_id; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
563 |
++$this->blogs[$importing_blog]['posts_skipped']; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
564 |
} else { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
565 |
$post = compact('post_date', 'post_content', 'post_title', 'post_status'); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
566 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
567 |
$post_id = wp_insert_post($post); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
568 |
if ( is_wp_error( $post_id ) ) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
569 |
return $post_id; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
570 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
571 |
wp_create_categories( array_map( 'addslashes', $entry->categories ), $post_id ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
572 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
573 |
$author = $this->no_apos( strip_tags( $entry->author ) ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
574 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
575 |
add_post_meta( $post_id, 'blogger_blog', $this->blogs[$importing_blog]['host'], true ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
576 |
add_post_meta( $post_id, 'blogger_author', $author, true ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
577 |
add_post_meta( $post_id, 'blogger_permalink', $entry->old_permalink, true ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
578 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
579 |
$this->blogs[$importing_blog]['posts'][$entry->old_permalink] = $post_id; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
580 |
++$this->blogs[$importing_blog]['posts_done']; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
581 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
582 |
$this->save_vars(); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
583 |
return; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
584 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
585 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
586 |
function import_comment( $entry ) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
587 |
global $importing_blog; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
588 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
589 |
// Drop the #fragment and we have the comment's old post permalink. |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
590 |
foreach ( $entry->links as $link ) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
591 |
if ( $link['rel'] == 'alternate' ) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
592 |
$parts = parse_url( $link['href'] ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
593 |
$entry->old_permalink = $parts['fragment']; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
594 |
$entry->old_post_permalink = $parts['path']; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
595 |
break; |
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 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
599 |
$comment_post_ID = (int) $this->blogs[$importing_blog]['posts'][$entry->old_post_permalink]; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
600 |
preg_match('#<name>(.+?)</name>.*(?:\<uri>(.+?)</uri>)?#', $entry->author, $matches); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
601 |
$comment_author = addslashes( $this->no_apos( strip_tags( (string) $matches[1] ) ) ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
602 |
$comment_author_url = addslashes( $this->no_apos( strip_tags( (string) $matches[2] ) ) ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
603 |
$comment_date = $this->convert_date( $entry->updated ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
604 |
$comment_content = addslashes( $this->no_apos( @html_entity_decode( $entry->content, ENT_COMPAT, get_option('blog_charset') ) ) ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
605 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
606 |
// Clean up content |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
607 |
$comment_content = preg_replace_callback('|<(/?[A-Z]+)|', create_function('$match', 'return "<" . strtolower($match[1]);'), $comment_content); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
608 |
$comment_content = str_replace('<br>', '<br />', $comment_content); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
609 |
$comment_content = str_replace('<hr>', '<hr />', $comment_content); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
610 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
611 |
// Checks for duplicates |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
612 |
if ( |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
613 |
isset( $this->blogs[$importing_blog]['comments'][$entry->old_permalink] ) || |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
614 |
comment_exists( $comment_author, $comment_date ) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
615 |
) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
616 |
++$this->blogs[$importing_blog]['comments_skipped']; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
617 |
} else { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
618 |
$comment = compact('comment_post_ID', 'comment_author', 'comment_author_url', 'comment_date', 'comment_content'); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
619 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
620 |
$comment_id = wp_insert_comment($comment); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
621 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
622 |
$this->blogs[$importing_blog]['comments'][$entry->old_permalink] = $comment_id; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
623 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
624 |
++$this->blogs[$importing_blog]['comments_done']; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
625 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
626 |
$this->save_vars(); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
627 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
628 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
629 |
function get_js_status($blog = false) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
630 |
global $importing_blog; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
631 |
if ( $blog === false ) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
632 |
$blog = $this->blogs[$importing_blog]; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
633 |
else |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
634 |
$blog = $this->blogs[$blog]; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
635 |
$p1 = isset( $blog['posts_done'] ) ? (int) $blog['posts_done'] : 0; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
636 |
$p2 = isset( $blog['total_posts'] ) ? (int) $blog['total_posts'] : 0; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
637 |
$c1 = isset( $blog['comments_done'] ) ? (int) $blog['comments_done'] : 0; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
638 |
$c2 = isset( $blog['total_comments'] ) ? (int) $blog['total_comments'] : 0; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
639 |
return "{p1:$p1,p2:$p2,c1:$c1,c2:$c2}"; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
640 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
641 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
642 |
function get_author_form($blog = false) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
643 |
global $importing_blog, $wpdb, $current_user; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
644 |
if ( $blog === false ) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
645 |
$blog = & $this->blogs[$importing_blog]; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
646 |
else |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
647 |
$blog = & $this->blogs[$blog]; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
648 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
649 |
if ( !isset( $blog['authors'] ) ) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
650 |
$post_ids = array_values($blog['posts']); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
651 |
$authors = (array) $wpdb->get_col("SELECT DISTINCT meta_value FROM $wpdb->postmeta WHERE meta_key = 'blogger_author' AND post_id IN (" . join( ',', $post_ids ) . ")"); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
652 |
$blog['authors'] = array_map(null, $authors, array_fill(0, count($authors), $current_user->ID)); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
653 |
$this->save_vars(); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
654 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
655 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
656 |
$directions = __('All posts were imported with the current user as author. Use this form to move each Blogger user’s posts to a different WordPress user. You may <a href="users.php">add users</a> and then return to this page and complete the user mapping. This form may be used as many times as you like until you activate the “Restart” function below.'); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
657 |
$heading = __('Author mapping'); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
658 |
$blogtitle = "{$blog['title']} ({$blog['host']})"; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
659 |
$mapthis = __('Blogger username'); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
660 |
$tothis = __('WordPress login'); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
661 |
$submit = esc_js( __('Save Changes') ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
662 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
663 |
foreach ( $blog['authors'] as $i => $author ) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
664 |
$rows .= "<tr><td><label for='authors[$i]'>{$author[0]}</label></td><td><select name='authors[$i]' id='authors[$i]'>" . $this->get_user_options($author[1]) . "</select></td></tr>"; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
665 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
666 |
return "<div class='wrap'><h2>$heading</h2><h3>$blogtitle</h3><p>$directions</p><form action='index.php?import=blogger&noheader=true&saveauthors=1' method='post'><input type='hidden' name='blog' value='" . esc_attr($importing_blog) . "' /><table cellpadding='5'><thead><td>$mapthis</td><td>$tothis</td></thead>$rows<tr><td></td><td class='submit'><input type='submit' class='button authorsubmit' value='$submit' /></td></tr></table></form></div>"; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
667 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
668 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
669 |
function get_user_options($current) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
670 |
global $importer_users; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
671 |
if ( ! isset( $importer_users ) ) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
672 |
$importer_users = (array) get_users_of_blog(); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
673 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
674 |
foreach ( $importer_users as $user ) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
675 |
$sel = ( $user->user_id == $current ) ? " selected='selected'" : ''; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
676 |
$options .= "<option value='$user->user_id'$sel>$user->display_name</option>"; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
677 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
678 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
679 |
return $options; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
680 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
681 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
682 |
function save_authors() { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
683 |
global $importing_blog, $wpdb; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
684 |
$authors = (array) $_POST['authors']; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
685 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
686 |
$host = $this->blogs[$importing_blog]['host']; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
687 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
688 |
// Get an array of posts => authors |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
689 |
$post_ids = (array) $wpdb->get_col( $wpdb->prepare("SELECT post_id FROM $wpdb->postmeta WHERE meta_key = 'blogger_blog' AND meta_value = %s", $host) ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
690 |
$post_ids = join( ',', $post_ids ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
691 |
$results = (array) $wpdb->get_results("SELECT post_id, meta_value FROM $wpdb->postmeta WHERE meta_key = 'blogger_author' AND post_id IN ($post_ids)"); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
692 |
foreach ( $results as $row ) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
693 |
$authors_posts[$row->post_id] = $row->meta_value; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
694 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
695 |
foreach ( $authors as $author => $user_id ) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
696 |
$user_id = (int) $user_id; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
697 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
698 |
// Skip authors that haven't been changed |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
699 |
if ( $user_id == $this->blogs[$importing_blog]['authors'][$author][1] ) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
700 |
continue; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
701 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
702 |
// Get a list of the selected author's posts |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
703 |
$post_ids = (array) array_keys( $authors_posts, $this->blogs[$importing_blog]['authors'][$author][0] ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
704 |
$post_ids = join( ',', $post_ids); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
705 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
706 |
$wpdb->query( $wpdb->prepare("UPDATE $wpdb->posts SET post_author = %d WHERE id IN ($post_ids)", $user_id) ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
707 |
$this->blogs[$importing_blog]['authors'][$author][1] = $user_id; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
708 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
709 |
$this->save_vars(); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
710 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
711 |
wp_redirect('edit.php'); |
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 _get_auth_sock() { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
715 |
// Connect to https://www.google.com |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
716 |
if ( !$sock = @ fsockopen('ssl://www.google.com', 443, $errno, $errstr) ) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
717 |
$this->uh_oh( |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
718 |
__('Could not connect to https://www.google.com'), |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
719 |
__('There was a problem opening a secure connection to Google. This is what went wrong:'), |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
720 |
"$errstr ($errno)" |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
721 |
); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
722 |
return false; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
723 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
724 |
return $sock; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
725 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
726 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
727 |
function _get_blogger_sock($host = 'www2.blogger.com') { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
728 |
if ( !$sock = @ fsockopen($host, 80, $errno, $errstr) ) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
729 |
$this->uh_oh( |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
730 |
sprintf( __('Could not connect to %s'), $host ), |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
731 |
__('There was a problem opening a connection to Blogger. This is what went wrong:'), |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
732 |
"$errstr ($errno)" |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
733 |
); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
734 |
return false; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
735 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
736 |
return $sock; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
737 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
738 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
739 |
function _txrx( $sock, $request ) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
740 |
fwrite( $sock, $request ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
741 |
while ( ! feof( $sock ) ) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
742 |
$response .= @ fread ( $sock, 8192 ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
743 |
fclose( $sock ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
744 |
return $response; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
745 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
746 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
747 |
function revoke($token) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
748 |
$headers = array( |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
749 |
"GET /accounts/AuthSubRevokeToken HTTP/1.0", |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
750 |
"Authorization: AuthSub token=\"$token\"" |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
751 |
); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
752 |
$request = join( "\r\n", $headers ) . "\r\n\r\n"; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
753 |
$sock = $this->_get_auth_sock( ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
754 |
if ( ! $sock ) return false; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
755 |
$this->_txrx( $sock, $request ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
756 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
757 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
758 |
function restart() { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
759 |
global $wpdb; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
760 |
$options = get_option( 'blogger_importer' ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
761 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
762 |
if ( isset( $options['token'] ) ) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
763 |
$this->revoke( $options['token'] ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
764 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
765 |
delete_option('blogger_importer'); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
766 |
$wpdb->query("DELETE FROM $wpdb->postmeta WHERE meta_key = 'blogger_author'"); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
767 |
wp_redirect('?import=blogger'); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
768 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
769 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
770 |
// Returns associative array of code, header, cookies, body. Based on code from php.net. |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
771 |
function parse_response($this_response) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
772 |
// Split response into header and body sections |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
773 |
list($response_headers, $response_body) = explode("\r\n\r\n", $this_response, 2); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
774 |
$response_header_lines = explode("\r\n", $response_headers); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
775 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
776 |
// First line of headers is the HTTP response code |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
777 |
$http_response_line = array_shift($response_header_lines); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
778 |
if(preg_match('@^HTTP/[0-9]\.[0-9] ([0-9]{3})@',$http_response_line, $matches)) { $response_code = $matches[1]; } |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
779 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
780 |
// put the rest of the headers in an array |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
781 |
$response_header_array = array(); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
782 |
foreach($response_header_lines as $header_line) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
783 |
list($header,$value) = explode(': ', $header_line, 2); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
784 |
$response_header_array[$header] .= $value."\n"; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
785 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
786 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
787 |
$cookie_array = array(); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
788 |
$cookies = explode("\n", $response_header_array["Set-Cookie"]); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
789 |
foreach($cookies as $this_cookie) { array_push($cookie_array, "Cookie: ".$this_cookie); } |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
790 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
791 |
return array("code" => $response_code, "header" => $response_header_array, "cookies" => $cookie_array, "body" => $response_body); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
792 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
793 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
794 |
// Step 9: Congratulate the user |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
795 |
function congrats() { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
796 |
$blog = (int) $_GET['blog']; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
797 |
echo '<h1>'.__('Congratulations!').'</h1><p>'.__('Now that you have imported your Blogger blog into WordPress, what are you going to do? Here are some suggestions:').'</p><ul><li>'.__('That was hard work! Take a break.').'</li>'; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
798 |
if ( count($this->import['blogs']) > 1 ) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
799 |
echo '<li>'.__('In case you haven’t done it already, you can import the posts from your other blogs:'). $this->show_blogs() . '</li>'; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
800 |
if ( $n = count($this->import['blogs'][$blog]['newusers']) ) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
801 |
echo '<li>'.sprintf(__('Go to <a href="%s" target="%s">Authors & Users</a>, where you can modify the new user(s) or delete them. If you want to make all of the imported posts yours, you will be given that option when you delete the new authors.'), 'users.php', '_parent').'</li>'; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
802 |
echo '<li>'.__('For security, click the link below to reset this importer.').'</li>'; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
803 |
echo '</ul>'; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
804 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
805 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
806 |
// Figures out what to do, then does it. |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
807 |
function start() { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
808 |
if ( isset($_POST['restart']) ) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
809 |
$this->restart(); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
810 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
811 |
$options = get_option('blogger_importer'); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
812 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
813 |
if ( is_array($options) ) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
814 |
foreach ( $options as $key => $value ) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
815 |
$this->$key = $value; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
816 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
817 |
if ( isset( $_REQUEST['blog'] ) ) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
818 |
$blog = is_array($_REQUEST['blog']) ? array_shift( $keys = array_keys( $_REQUEST['blog'] ) ) : $_REQUEST['blog']; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
819 |
$blog = (int) $blog; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
820 |
$result = $this->import_blog( $blog ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
821 |
if ( is_wp_error( $result ) ) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
822 |
echo $result->get_error_message(); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
823 |
} elseif ( isset($_GET['token']) ) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
824 |
$this->auth(); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
825 |
elseif ( isset($this->token) && $this->token_is_valid() ) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
826 |
$this->show_blogs(); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
827 |
else |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
828 |
$this->greet(); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
829 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
830 |
$saved = $this->save_vars(); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
831 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
832 |
if ( $saved && !isset($_GET['noheader']) ) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
833 |
$restart = __('Restart'); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
834 |
$message = __('We have saved some information about your Blogger account in your WordPress database. Clearing this information will allow you to start over. Restarting will not affect any posts you have already imported. If you attempt to re-import a blog, duplicate posts and comments will be skipped.'); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
835 |
$submit = esc_attr__('Clear account information'); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
836 |
echo "<div class='wrap'><h2>$restart</h2><p>$message</p><form method='post' action='?import=blogger&noheader=true'><p class='submit' style='text-align:left;'><input type='submit' class='button' value='$submit' name='restart' /></p></form></div>"; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
837 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
838 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
839 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
840 |
function save_vars() { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
841 |
$vars = get_object_vars($this); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
842 |
update_option( 'blogger_importer', $vars ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
843 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
844 |
return !empty($vars); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
845 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
846 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
847 |
function admin_head() { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
848 |
?> |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
849 |
<style type="text/css"> |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
850 |
td { text-align: center; line-height: 2em;} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
851 |
thead td { font-weight: bold; } |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
852 |
.bar { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
853 |
width: 200px; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
854 |
text-align: left; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
855 |
line-height: 2em; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
856 |
padding: 0px; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
857 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
858 |
.ind { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
859 |
position: absolute; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
860 |
background-color: #83B4D8; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
861 |
width: 1px; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
862 |
z-index: 9; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
863 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
864 |
.stat { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
865 |
z-index: 10; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
866 |
position: relative; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
867 |
text-align: center; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
868 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
869 |
</style> |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
870 |
<?php |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
871 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
872 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
873 |
function Blogger_Import() { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
874 |
global $importer_started; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
875 |
$importer_started = time(); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
876 |
if ( isset( $_GET['import'] ) && $_GET['import'] == 'blogger' ) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
877 |
wp_enqueue_script('jquery'); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
878 |
add_action('admin_head', array(&$this, 'admin_head')); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
879 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
880 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
881 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
882 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
883 |
$blogger_import = new Blogger_Import(); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
884 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
885 |
register_importer('blogger', __('Blogger'), __('Import posts, comments, and users from a Blogger blog.'), array ($blogger_import, 'start')); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
886 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
887 |
class AtomEntry { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
888 |
var $links = array(); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
889 |
var $categories = array(); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
890 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
891 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
892 |
class AtomParser { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
893 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
894 |
var $ATOM_CONTENT_ELEMENTS = array('content','summary','title','subtitle','rights'); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
895 |
var $ATOM_SIMPLE_ELEMENTS = array('id','updated','published','draft','author'); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
896 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
897 |
var $depth = 0; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
898 |
var $indent = 2; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
899 |
var $in_content; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
900 |
var $ns_contexts = array(); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
901 |
var $ns_decls = array(); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
902 |
var $is_xhtml = false; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
903 |
var $skipped_div = false; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
904 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
905 |
var $entry; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
906 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
907 |
function AtomParser() { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
908 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
909 |
$this->entry = new AtomEntry(); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
910 |
$this->map_attrs_func = create_function('$k,$v', 'return "$k=\"$v\"";'); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
911 |
$this->map_xmlns_func = create_function('$p,$n', '$xd = "xmlns"; if(strlen($n[0])>0) $xd .= ":{$n[0]}"; return "{$xd}=\"{$n[1]}\"";'); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
912 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
913 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
914 |
function parse($xml) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
915 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
916 |
global $app_logging; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
917 |
array_unshift($this->ns_contexts, array()); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
918 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
919 |
$parser = xml_parser_create_ns(); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
920 |
xml_set_object($parser, $this); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
921 |
xml_set_element_handler($parser, "start_element", "end_element"); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
922 |
xml_parser_set_option($parser,XML_OPTION_CASE_FOLDING,0); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
923 |
xml_parser_set_option($parser,XML_OPTION_SKIP_WHITE,0); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
924 |
xml_set_character_data_handler($parser, "cdata"); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
925 |
xml_set_default_handler($parser, "_default"); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
926 |
xml_set_start_namespace_decl_handler($parser, "start_ns"); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
927 |
xml_set_end_namespace_decl_handler($parser, "end_ns"); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
928 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
929 |
$contents = ""; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
930 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
931 |
xml_parse($parser, $xml); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
932 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
933 |
xml_parser_free($parser); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
934 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
935 |
return true; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
936 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
937 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
938 |
function start_element($parser, $name, $attrs) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
939 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
940 |
$tag = array_pop(split(":", $name)); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
941 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
942 |
array_unshift($this->ns_contexts, $this->ns_decls); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
943 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
944 |
$this->depth++; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
945 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
946 |
if(!empty($this->in_content)) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
947 |
$attrs_prefix = array(); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
948 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
949 |
// resolve prefixes for attributes |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
950 |
foreach($attrs as $key => $value) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
951 |
$attrs_prefix[$this->ns_to_prefix($key)] = $this->xml_escape($value); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
952 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
953 |
$attrs_str = join(' ', array_map($this->map_attrs_func, array_keys($attrs_prefix), array_values($attrs_prefix))); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
954 |
if(strlen($attrs_str) > 0) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
955 |
$attrs_str = " " . $attrs_str; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
956 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
957 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
958 |
$xmlns_str = join(' ', array_map($this->map_xmlns_func, array_keys($this->ns_contexts[0]), array_values($this->ns_contexts[0]))); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
959 |
if(strlen($xmlns_str) > 0) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
960 |
$xmlns_str = " " . $xmlns_str; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
961 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
962 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
963 |
// handle self-closing tags (case: a new child found right-away, no text node) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
964 |
if(count($this->in_content) == 2) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
965 |
array_push($this->in_content, ">"); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
966 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
967 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
968 |
array_push($this->in_content, "<". $this->ns_to_prefix($name) ."{$xmlns_str}{$attrs_str}"); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
969 |
} else if(in_array($tag, $this->ATOM_CONTENT_ELEMENTS) || in_array($tag, $this->ATOM_SIMPLE_ELEMENTS)) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
970 |
$this->in_content = array(); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
971 |
$this->is_xhtml = $attrs['type'] == 'xhtml'; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
972 |
array_push($this->in_content, array($tag,$this->depth)); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
973 |
} else if($tag == 'link') { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
974 |
array_push($this->entry->links, $attrs); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
975 |
} else if($tag == 'category') { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
976 |
array_push($this->entry->categories, $attrs['term']); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
977 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
978 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
979 |
$this->ns_decls = array(); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
980 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
981 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
982 |
function end_element($parser, $name) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
983 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
984 |
$tag = array_pop(split(":", $name)); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
985 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
986 |
if(!empty($this->in_content)) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
987 |
if($this->in_content[0][0] == $tag && |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
988 |
$this->in_content[0][1] == $this->depth) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
989 |
array_shift($this->in_content); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
990 |
if($this->is_xhtml) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
991 |
$this->in_content = array_slice($this->in_content, 2, count($this->in_content)-3); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
992 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
993 |
$this->entry->$tag = join('',$this->in_content); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
994 |
$this->in_content = array(); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
995 |
} else { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
996 |
$endtag = $this->ns_to_prefix($name); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
997 |
if (strpos($this->in_content[count($this->in_content)-1], '<' . $endtag) !== false) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
998 |
array_push($this->in_content, "/>"); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
999 |
} else { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
1000 |
array_push($this->in_content, "</$endtag>"); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
1001 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
1002 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
1003 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
1004 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
1005 |
array_shift($this->ns_contexts); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
1006 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
1007 |
#print str_repeat(" ", $this->depth * $this->indent) . "end_element('$name')" ."\n"; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
1008 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
1009 |
$this->depth--; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
1010 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
1011 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
1012 |
function start_ns($parser, $prefix, $uri) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
1013 |
#print str_repeat(" ", $this->depth * $this->indent) . "starting: " . $prefix . ":" . $uri . "\n"; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
1014 |
array_push($this->ns_decls, array($prefix,$uri)); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
1015 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
1016 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
1017 |
function end_ns($parser, $prefix) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
1018 |
#print str_repeat(" ", $this->depth * $this->indent) . "ending: #" . $prefix . "#\n"; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
1019 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
1020 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
1021 |
function cdata($parser, $data) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
1022 |
#print str_repeat(" ", $this->depth * $this->indent) . "data: #" . $data . "#\n"; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
1023 |
if(!empty($this->in_content)) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
1024 |
// handle self-closing tags (case: text node found, need to close element started) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
1025 |
if (strpos($this->in_content[count($this->in_content)-1], '<') !== false) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
1026 |
array_push($this->in_content, ">"); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
1027 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
1028 |
array_push($this->in_content, $this->xml_escape($data)); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
1029 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
1030 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
1031 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
1032 |
function _default($parser, $data) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
1033 |
# when does this gets called? |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
1034 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
1035 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
1036 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
1037 |
function ns_to_prefix($qname) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
1038 |
$components = split(":", $qname); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
1039 |
$name = array_pop($components); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
1040 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
1041 |
if(!empty($components)) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
1042 |
$ns = join(":",$components); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
1043 |
foreach($this->ns_contexts as $context) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
1044 |
foreach($context as $mapping) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
1045 |
if($mapping[1] == $ns && strlen($mapping[0]) > 0) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
1046 |
return "$mapping[0]:$name"; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
1047 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
1048 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
1049 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
1050 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
1051 |
return $name; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
1052 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
1053 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
1054 |
function xml_escape($string) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
1055 |
{ |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
1056 |
return str_replace(array('&','"',"'",'<','>'), |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
1057 |
array('&','"',''','<','>'), |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
1058 |
$string ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
1059 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
1060 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
1061 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
1062 |
?> |