From 2c0866eca6749bdab08387ed93cc37d75d53ccc4 Mon Sep 17 00:00:00 2001 From: Dries Buytaert <dries@buytaert.net> Date: Sat, 9 Jun 2001 11:05:13 +0000 Subject: [PATCH] - Added a 'remove items' feature to reset a feed. - Slightly improved the parsing algorithm; in some cases, were tags have attributes, things went wrong. We ignore attributes for now as we don't do anything with those. Example: <item rdf:about="http://foo.com"></item> ^^^^^^^^^^^^^^^^^^^^^^^^^ --- modules/aggregator.module | 23 ++++++++++++++++++----- modules/aggregator/aggregator.module | 23 ++++++++++++++++++----- modules/import.module | 23 ++++++++++++++++++----- 3 files changed, 54 insertions(+), 15 deletions(-) diff --git a/modules/aggregator.module b/modules/aggregator.module index 355b7769194a..8545ad000c18 100644 --- a/modules/aggregator.module +++ b/modules/aggregator.module @@ -52,6 +52,11 @@ function import_block() { return $blocks; } +function import_remove($feed) { + db_query("DELETE FROM item WHERE fid = '$feed[fid]'"); + return "feed '$feed[title]' reset."; +} + function import_update($feed) { // open socket: @@ -65,11 +70,13 @@ function import_update($feed) { if (strstr($data, "200 OK")) { - eregi("<item(.*)</item>", $data, $data); + eregi("<item([^s].*)</item>", $data, $data); + + // print "<PRE>". htmlentities($data[0]) ."</PRE>"; foreach (explode("</item>", $data[0]) as $item) { - $l = eregi("<link>(.*)</link>", $item, $link); $t = eregi("<title>(.*)</title>", $item, $title); + $l = eregi("<link>(.*)</link>", $item, $link); $a = eregi("<author>(.*)</author>", $item, $author); $d = eregi("<description>(.*)</description>", $item, $description); @@ -84,6 +91,8 @@ function import_update($feed) { watchdog("error", "failed to syndicate from '$feed[title]'"); } } + + return "feed '$feed[title]' updated."; } function import_save_item($edit) { @@ -185,9 +194,9 @@ function import_view_feed() { $output .= "<H3>Feed overview</H3>"; $output .= "<TABLE BORDER=\"1\" CELLSPADDING=\"2\" CELLSPACING=\"2\">\n"; - $output .= " <TR><TH>title</TH><TH>attributes</TH><TH>items</TH><TH>last update</TH><TH>next update</TH><TH COLSPAN=\"2\">operations</TH></TR>\n"; + $output .= " <TR><TH>title</TH><TH>attributes</TH><TH>items</TH><TH>last update</TH><TH>next update</TH><TH COLSPAN=\"3\">operations</TH></TR>\n"; while ($feed = db_fetch_object($result)) { - $output .= " <TR><TD>". check_output($feed->title) ."</TD><TD>". check_output($feed->attribute) ."</TD><TD>". format_plural($feed->items, "item", "items") ."</TD><TD>". ($feed->timestamp ? format_interval(time() - $feed->timestamp) ." ago" : "never") ."</TD><TD>". ($feed->timestamp ? format_interval($feed->timestamp + $feed->refresh - time()) ." left" : "never") ."</TD><TD><A HREF=\"admin.php?mod=import&type=feed&op=edit&id=$feed->fid\">edit feed</A></TD><TD><A HREF=\"admin.php?mod=import&type=feed&op=update&id=$feed->fid\">update items</A></TD></TR>\n"; + $output .= " <TR><TD>". check_output($feed->title) ."</TD><TD>". check_output($feed->attribute) ."</TD><TD>". format_plural($feed->items, "item", "items") ."</TD><TD>". ($feed->timestamp ? format_interval(time() - $feed->timestamp) ." ago" : "never") ."</TD><TD>". ($feed->timestamp ? format_interval($feed->timestamp + $feed->refresh - time()) ." left" : "never") ."</TD><TD><A HREF=\"admin.php?mod=import&type=feed&op=edit&id=$feed->fid\">edit feed</A></TD><TD><A HREF=\"admin.php?mod=import&type=feed&op=remove&id=$feed->fid\">remove items</A></TD><TD><A HREF=\"admin.php?mod=import&type=feed&op=update&id=$feed->fid\">update items</A></TD></TR>\n"; } $output .= "</TABLE>\n"; @@ -243,8 +252,12 @@ function import_admin() { else print import_form_feed(import_get_feed($id)); break; + case "remove": + print status(import_remove(import_get_feed($id))); + print import_view_feed(); + break; case "update": - print import_update(import_get_feed($id)); + print status(import_update(import_get_feed($id))); print import_view_feed(); break; case "Save attributes": diff --git a/modules/aggregator/aggregator.module b/modules/aggregator/aggregator.module index 355b7769194a..8545ad000c18 100644 --- a/modules/aggregator/aggregator.module +++ b/modules/aggregator/aggregator.module @@ -52,6 +52,11 @@ function import_block() { return $blocks; } +function import_remove($feed) { + db_query("DELETE FROM item WHERE fid = '$feed[fid]'"); + return "feed '$feed[title]' reset."; +} + function import_update($feed) { // open socket: @@ -65,11 +70,13 @@ function import_update($feed) { if (strstr($data, "200 OK")) { - eregi("<item(.*)</item>", $data, $data); + eregi("<item([^s].*)</item>", $data, $data); + + // print "<PRE>". htmlentities($data[0]) ."</PRE>"; foreach (explode("</item>", $data[0]) as $item) { - $l = eregi("<link>(.*)</link>", $item, $link); $t = eregi("<title>(.*)</title>", $item, $title); + $l = eregi("<link>(.*)</link>", $item, $link); $a = eregi("<author>(.*)</author>", $item, $author); $d = eregi("<description>(.*)</description>", $item, $description); @@ -84,6 +91,8 @@ function import_update($feed) { watchdog("error", "failed to syndicate from '$feed[title]'"); } } + + return "feed '$feed[title]' updated."; } function import_save_item($edit) { @@ -185,9 +194,9 @@ function import_view_feed() { $output .= "<H3>Feed overview</H3>"; $output .= "<TABLE BORDER=\"1\" CELLSPADDING=\"2\" CELLSPACING=\"2\">\n"; - $output .= " <TR><TH>title</TH><TH>attributes</TH><TH>items</TH><TH>last update</TH><TH>next update</TH><TH COLSPAN=\"2\">operations</TH></TR>\n"; + $output .= " <TR><TH>title</TH><TH>attributes</TH><TH>items</TH><TH>last update</TH><TH>next update</TH><TH COLSPAN=\"3\">operations</TH></TR>\n"; while ($feed = db_fetch_object($result)) { - $output .= " <TR><TD>". check_output($feed->title) ."</TD><TD>". check_output($feed->attribute) ."</TD><TD>". format_plural($feed->items, "item", "items") ."</TD><TD>". ($feed->timestamp ? format_interval(time() - $feed->timestamp) ." ago" : "never") ."</TD><TD>". ($feed->timestamp ? format_interval($feed->timestamp + $feed->refresh - time()) ." left" : "never") ."</TD><TD><A HREF=\"admin.php?mod=import&type=feed&op=edit&id=$feed->fid\">edit feed</A></TD><TD><A HREF=\"admin.php?mod=import&type=feed&op=update&id=$feed->fid\">update items</A></TD></TR>\n"; + $output .= " <TR><TD>". check_output($feed->title) ."</TD><TD>". check_output($feed->attribute) ."</TD><TD>". format_plural($feed->items, "item", "items") ."</TD><TD>". ($feed->timestamp ? format_interval(time() - $feed->timestamp) ." ago" : "never") ."</TD><TD>". ($feed->timestamp ? format_interval($feed->timestamp + $feed->refresh - time()) ." left" : "never") ."</TD><TD><A HREF=\"admin.php?mod=import&type=feed&op=edit&id=$feed->fid\">edit feed</A></TD><TD><A HREF=\"admin.php?mod=import&type=feed&op=remove&id=$feed->fid\">remove items</A></TD><TD><A HREF=\"admin.php?mod=import&type=feed&op=update&id=$feed->fid\">update items</A></TD></TR>\n"; } $output .= "</TABLE>\n"; @@ -243,8 +252,12 @@ function import_admin() { else print import_form_feed(import_get_feed($id)); break; + case "remove": + print status(import_remove(import_get_feed($id))); + print import_view_feed(); + break; case "update": - print import_update(import_get_feed($id)); + print status(import_update(import_get_feed($id))); print import_view_feed(); break; case "Save attributes": diff --git a/modules/import.module b/modules/import.module index 355b7769194a..8545ad000c18 100644 --- a/modules/import.module +++ b/modules/import.module @@ -52,6 +52,11 @@ function import_block() { return $blocks; } +function import_remove($feed) { + db_query("DELETE FROM item WHERE fid = '$feed[fid]'"); + return "feed '$feed[title]' reset."; +} + function import_update($feed) { // open socket: @@ -65,11 +70,13 @@ function import_update($feed) { if (strstr($data, "200 OK")) { - eregi("<item(.*)</item>", $data, $data); + eregi("<item([^s].*)</item>", $data, $data); + + // print "<PRE>". htmlentities($data[0]) ."</PRE>"; foreach (explode("</item>", $data[0]) as $item) { - $l = eregi("<link>(.*)</link>", $item, $link); $t = eregi("<title>(.*)</title>", $item, $title); + $l = eregi("<link>(.*)</link>", $item, $link); $a = eregi("<author>(.*)</author>", $item, $author); $d = eregi("<description>(.*)</description>", $item, $description); @@ -84,6 +91,8 @@ function import_update($feed) { watchdog("error", "failed to syndicate from '$feed[title]'"); } } + + return "feed '$feed[title]' updated."; } function import_save_item($edit) { @@ -185,9 +194,9 @@ function import_view_feed() { $output .= "<H3>Feed overview</H3>"; $output .= "<TABLE BORDER=\"1\" CELLSPADDING=\"2\" CELLSPACING=\"2\">\n"; - $output .= " <TR><TH>title</TH><TH>attributes</TH><TH>items</TH><TH>last update</TH><TH>next update</TH><TH COLSPAN=\"2\">operations</TH></TR>\n"; + $output .= " <TR><TH>title</TH><TH>attributes</TH><TH>items</TH><TH>last update</TH><TH>next update</TH><TH COLSPAN=\"3\">operations</TH></TR>\n"; while ($feed = db_fetch_object($result)) { - $output .= " <TR><TD>". check_output($feed->title) ."</TD><TD>". check_output($feed->attribute) ."</TD><TD>". format_plural($feed->items, "item", "items") ."</TD><TD>". ($feed->timestamp ? format_interval(time() - $feed->timestamp) ." ago" : "never") ."</TD><TD>". ($feed->timestamp ? format_interval($feed->timestamp + $feed->refresh - time()) ." left" : "never") ."</TD><TD><A HREF=\"admin.php?mod=import&type=feed&op=edit&id=$feed->fid\">edit feed</A></TD><TD><A HREF=\"admin.php?mod=import&type=feed&op=update&id=$feed->fid\">update items</A></TD></TR>\n"; + $output .= " <TR><TD>". check_output($feed->title) ."</TD><TD>". check_output($feed->attribute) ."</TD><TD>". format_plural($feed->items, "item", "items") ."</TD><TD>". ($feed->timestamp ? format_interval(time() - $feed->timestamp) ." ago" : "never") ."</TD><TD>". ($feed->timestamp ? format_interval($feed->timestamp + $feed->refresh - time()) ." left" : "never") ."</TD><TD><A HREF=\"admin.php?mod=import&type=feed&op=edit&id=$feed->fid\">edit feed</A></TD><TD><A HREF=\"admin.php?mod=import&type=feed&op=remove&id=$feed->fid\">remove items</A></TD><TD><A HREF=\"admin.php?mod=import&type=feed&op=update&id=$feed->fid\">update items</A></TD></TR>\n"; } $output .= "</TABLE>\n"; @@ -243,8 +252,12 @@ function import_admin() { else print import_form_feed(import_get_feed($id)); break; + case "remove": + print status(import_remove(import_get_feed($id))); + print import_view_feed(); + break; case "update": - print import_update(import_get_feed($id)); + print status(import_update(import_get_feed($id))); print import_view_feed(); break; case "Save attributes": -- GitLab