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