From 55f34b811fef1f5e834fbcc65e41f6748e49ffd1 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Tue, 27 Dec 2011 23:10:04 +0400 Subject: implement experimental personal data import --- include/functions.php | 159 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 159 insertions(+) (limited to 'include/functions.php') diff --git a/include/functions.php b/include/functions.php index 80581433a..b2ff209a0 100644 --- a/include/functions.php +++ b/include/functions.php @@ -5116,4 +5116,163 @@ return $rv; } + function perform_data_import($link, $filename, $owner_uid) { + + $num_imported = 0; + $num_processed = 0; + $num_feeds_created = 0; + + $doc = DOMDocument::load($filename); + + if ($doc) { + + $xpath = new DOMXpath($doc); + $articles = $xpath->query("//article"); + + foreach ($articles as $article_node) { + if ($article_node->childNodes) { + + $ref_id = 0; + + $article = array(); + + foreach ($article_node->childNodes as $child) { + $article[$child->nodeName] = db_escape_string($child->nodeValue); + } + + //print_r($article); + + if ($article['guid']) { + + ++$num_processed; + + //db_query($link, "BEGIN"); + + //print 'GUID:' . $article['guid'] . "\n"; + + $result = db_query($link, "SELECT id FROM ttrss_entries + WHERE guid = '".$article['guid']."'"); + + if (db_num_rows($result) == 0) { + + $result = db_query($link, + "INSERT INTO ttrss_entries + (title, + guid, + link, + updated, + content, + content_hash, + no_orig_date, + date_updated, + date_entered, + comments, + num_comments, + author) + VALUES + ('".$article['title']."', + '".$article['guid']."', + '".$article['link']."', + '".$article['updated']."', + '".$article['content']."', + '".sha1($article['content'])."', + false, + NOW(), + NOW(), + '', + '0', + '')"); + + $result = db_query($link, "SELECT id FROM ttrss_entries + WHERE guid = '".$article['guid']."'"); + + if (db_num_rows($result) != 0) { + $ref_id = db_fetch_result($result, 0, "id"); + } + + } else { + $ref_id = db_fetch_result($result, 0, "id"); + } + + //print "Got ref ID: $ref_id\n"; + + if ($ref_id) { + + $feed_url = $article['feed_url']; + $feed_title = $article['feed_title']; + + $feed = 'NULL'; + + if ($feed_url && $feed_title) { + $result = db_query($link, "SELECT id FROM ttrss_feeds + WHERE feed_url = '$feed_url' AND owner_uid = '$owner_uid'"); + + if (db_num_rows($result) != 0) { + $feed = db_fetch_result($result, 0, "id"); + } else { + // try autocreating feed in Uncategorized... + + $result = db_query($link, "INSERT INTO ttrss_feeds (owner_uid, + feed_url, title) VALUES ($owner_uid, '$feed_url', '$feed_title')"); + + $result = db_query($link, "SELECT id FROM ttrss_feeds + WHERE feed_url = '$feed_url' AND owner_uid = '$owner_uid'"); + + if (db_num_rows($result) != 0) { + ++$num_feeds_created; + + $feed = db_fetch_result($result, 0, "id"); + } + } + } + + if ($feed != 'NULL') + $feed_qpart = "feed_id = $feed"; + else + $feed_qpart = "feed_id IS NULL"; + + //print "$ref_id / $feed / " . $article['title'] . "\n"; + + $result = db_query($link, "SELECT int_id FROM ttrss_user_entries + WHERE ref_id = '$ref_id' AND owner_uid = '$owner_uid' AND $feed_qpart"); + + if (db_num_rows($result) == 0) { + + $marked = bool_to_sql_bool(sql_bool_to_bool($article['marked'])); + $published = bool_to_sql_bool(sql_bool_to_bool($article['published'])); + $score = (int) $article['score']; + + $tag_cache = $article['tag_cache']; + $label_cache = $article['label_cache']; + + //print "Importing " . $article['title'] . "
"; + + ++$num_imported; + + $result = db_query($link, + "INSERT INTO ttrss_user_entries + (ref_id, owner_uid, feed_id, unread, last_read, marked, + published, score, tag_cache, label_cache, uuid) + VALUES ($ref_id, $owner_uid, $feed, false, + NULL, $marked, $published, $score, '$tag_cache', '$label_cache', '')"); + + //db_query($link, "COMMIT"); + } + } + } + } + } + + print "

" . + T_sprintf("Finished: %d articles processed, %d imported, %d feeds created.", + $num_processed, $num_imported, $num_feeds_created) . + "

"; + + } else { + + print "

" . __("Could not load XML document.") . "

"; + + } + } + ?> -- cgit v1.2.3