'; echo '

'.__('Import Xanga').'

'; } function footer() { echo ''; } function unhtmlentities($string) { // From php.net for < 4.3 compat $trans_tbl = get_html_translation_table(HTML_ENTITIES); $trans_tbl = array_flip($trans_tbl); return strtr($string, $trans_tbl); } function greet() { echo '

'.__('Howdy! This importer allows you to extract posts and comments from Xanga Premium Archive files into your blog. If you don't have Premium but have enough posts to be looking at this, just pay $4 for a month to get the archive and you'll at least be supporting Xanga for all the hosting they've done for you. Pick an archive file to upload and click Import.').'

'; wp_import_upload_form("admin.php?import=xanga&step=1"); } function import_posts() { global $wpdb, $current_user; set_magic_quotes_runtime(0); $importdata = file($this->file); // Read the file into an array $importdata = implode('', $importdata); // squish it $importdata = str_replace(array ("\r\n", "\r"), "\n", $importdata); preg_match_all('|
(.*?)
(
)*?|is', $importdata, $posts); $posts = $posts[1]; unset($importdata); echo '
    '; foreach ($posts as $post) { flush(); preg_match('|^(.*?)
|is', $post, $post_title); $post_title = $wpdb->escape(trim($post_title[1])); preg_match('|
Posted (.*?)
|is', $post, $post_date); $post_date = strtotime($post_date[1]); $com = split(' ', $post_title); if( $com[1]=='Comments' ) { preg_match_all('|
(.*?)
|is', $post, $comments); $comments = $comments[1]; $comment_post_ID = $post_id; $num_comments = 0; foreach ($comments as $comment) { preg_match('|^(.*?)
|is', $comment, $comment_content); $comment_content = str_replace(array (''), '', trim($comment_content[1])); $comment_content = $this->unhtmlentities($comment_content); // Clean up content $comment_content = preg_replace('|<(/?[A-Z]+)|e', "'<' . strtolower('$1')", $comment_content); $comment_content = str_replace('
', '
', $comment_content); $comment_content = str_replace('
', '
', $comment_content); $comment_content = $wpdb->escape($comment_content); preg_match('|
Posted (.*?) by |is', $comment, $comment_date); $comment_date = trim($comment_date[1]); $comment_date = date('Y-m-d H:i:s', strtotime($comment_date)); preg_match('|(.*?)|is', $comment, $comment_author); $comment_author = $wpdb->escape(trim($comment_author[1])); $comment_author_url = 'http://www.xanga.com/home.aspx?user='.$comment_author; $comment_approved = 1; // Check if it's already there if (!comment_exists($comment_author, $comment_date)) { $commentdata = compact('comment_post_ID', 'comment_author', 'comment_author_url', 'comment_date', 'comment_content', 'comment_approved'); $commentdata = wp_filter_comment($commentdata); wp_insert_comment($commentdata); $num_comments++; } } if ( $num_comments ) { echo ' '; printf(__('(%s comments)'), $num_comments); } } else { $post_title.=' at '.date('h:i a', $post_date); $post_date = gmdate('Y-m-d H:i:s', $post_date); preg_match('|(.*?)
Posted |is', $post, $post_content); $post_content = str_replace(array (''), '', trim($post_content[1])); $post_content = $this->unhtmlentities($post_content); // Clean up content $post_content = preg_replace('|<(/?[A-Z]+)|e', "'<' . strtolower('$1')", $post_content); $post_content = str_replace('
', '
', $post_content); $post_content = str_replace('
', '
', $post_content); $post_content = $wpdb->escape($post_content); $post_author = $current_user->ID; $post_status = 'publish'; echo '
  • '; if ($post_id = post_exists($post_title, $post_content, $post_date)) { printf(__('Post %s already exists.'), stripslashes($post_title)); } else { printf(__('Importing post %s...'), stripslashes($post_title)); $postdata = compact('post_author', 'post_date', 'post_content', 'post_title', 'post_status'); $post_id = wp_insert_post($postdata); if (!$post_id) { _e("Couldn't get post ID"); echo '
  • '; break; } } } echo ''; flush(); ob_flush(); } echo ''; } function import() { $file = wp_import_handle_upload(); if ( isset($file['error']) ) { echo $file['error']; return; } $this->file = $file['file']; $this->import_posts(); wp_import_cleanup($file['id']); echo '

    '; printf(__('All done. Have fun!'), get_option('home')); echo '

    '; } function dispatch() { if (empty ($_GET['step'])) $step = 0; else $step = (int) $_GET['step']; $this->header(); switch ($step) { case 0 : $this->greet(); break; case 1 : $this->import(); break; } $this->footer(); } function Xanga_Import() { // Nothing. } } $xanga_import = new Xanga_Import(); register_importer('xanga', 'Xanga', __('Import posts from Xanga Archives'), array ($xanga_import, 'dispatch')); ?>