From 24c36b764b885daa20f60e357d8565b541a44915 Mon Sep 17 00:00:00 2001 From: saxmatt Date: Wed, 12 May 2004 07:42:42 +0000 Subject: [PATCH] New RSS import functionality. git-svn-id: http://svn.automattic.com/wordpress/trunk@1264 1a063a9b-81f0-0310-95a4-ce76da25c4cd --- wp-admin/import-rss.php | 35 +++++++++++++++++++++++++++-------- 1 file changed, 27 insertions(+), 8 deletions(-) diff --git a/wp-admin/import-rss.php b/wp-admin/import-rss.php index 02bb13b11..822575637 100644 --- a/wp-admin/import-rss.php +++ b/wp-admin/import-rss.php @@ -8,6 +8,11 @@ define('RSSFILE', ''); $post_author = 1; // Author to import posts as author ID $timezone_offset = 0; // GMT offset of posts your importing +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); +} $add_hours = intval($timezone_offset); $add_minutes = intval(60 * ($timezone_offset - $add_hours)); @@ -57,14 +62,14 @@ switch($step) {

define('RSSFILE', '');

You want to define where the RSS file we'll be working with is, for example:

define('RSSFILE', 'rss.xml');

-

You have to do this manually for security reasons.

-

If you've done that and you’re all ready, let's go!

+

You have to do this manually for security reasons. When you're done reload this page and we'll take you to the next step.

+ +

Begin RSS Import »

+ previous page to continue."); // Bring in the data set_magic_quotes_runtime(0); @@ -93,7 +98,7 @@ if (!$date) : // if we don't already have something from pubDate $date = strtotime($date); endif; -$post_date = date('Y-m-d H:i:s', $date); +$post_date = gmdate('Y-m-d H:i:s', $date); preg_match_all('|(.*?)|is', $post, $categories); $categories = $categories[1]; @@ -108,11 +113,24 @@ $content = str_replace( array(''), '', addslashes( trim($content if (!$content) : // This is for feeds that put content in description preg_match('|(.*?)|is', $post, $content); - $content = addslashes( trim($content[1]) ); + $content = $wpdb->escape( unhtmlentities( trim($content[1]) ) ); +endif; + +// Clean up content +$content = preg_replace('|<(/?[A-Z]+)|e', "'<' . strtolower('$1')", $content); +$content = str_replace('
', '
', $content); +$content = str_replace('
', '
', $content); + +// This can mess up on posts with no titles, but checking content is much slower +// So we do it as a last resort +if ('' == $title) : + $dupe = $wpdb->get_var("SELECT ID FROM $tableposts WHERE post_content = '$content' AND post_date = '$post_date'"); +else : + $dupe = $wpdb->get_var("SELECT ID FROM $tableposts WHERE post_title = '$title' AND post_date = '$post_date'"); endif; // Now lets put it in the DB -if ($wpdb->get_var("SELECT ID FROM $tableposts WHERE post_title = '$title' AND post_date = '$post_date'")) : +if ($dupe) : echo 'Post already imported'; else : @@ -124,6 +142,7 @@ else : if (!$post_id) die("couldn't get post ID"); if (0 != count($categories)) : foreach ($categories as $post_category) : + $post_category = unhtmlentities($post_category); // See if the category exists yet $cat_id = $wpdb->get_var("SELECT cat_ID from $tablecategories WHERE cat_name = '$post_category'"); if (!$cat_id && '' != trim($post_category)) {