diff --git a/modules/aggregator.module b/modules/aggregator.module index 25d218c0296..77c49bc0d0c 100644 --- a/modules/aggregator.module +++ b/modules/aggregator.module @@ -67,7 +67,7 @@ function import_format_item($item, $feed = 0) { } // external link - $output .= "link\" target=\"new\">$item->title"; + $output .= "link\" target=\"_new\">$item->title"; return $output ."
"; } @@ -116,13 +116,13 @@ function import_block($op, $delta) { $feed = db_fetch_object(db_query("SELECT * FROM feed WHERE fid = '%d'", $delta)); if ($feed) { $block["subject"] = $feed->title; - $block["content"] = import_feed_block($feed) ."

". l(t("more"), "import/feed/$feed->fid", array("title" => t("View this feed's recent news."))) ."

"; + $block["content"] = import_feed_block($feed) ."
". l(t("more"), "import/feed/$feed->fid", array("title" => t("View this feed's recent news."))) ."
"; } else { // it was a bundle. this is NOT elegant $bundle = db_fetch_object(db_query("SELECT * FROM bundle WHERE bid = '%d'", $delta)); $block["subject"] = $bundle->title; - $block["content"] = import_bundle_block($bundle->attributes) ."

". l(t("more"), "import/bundle/$bundle->bid", array("title" => t("View this bundle's recent news."))) ."

"; + $block["content"] = import_bundle_block($bundle->attributes) ."
". l(t("more"), "import/bundle/$bundle->bid", array("title" => t("View this bundle's recent news."))) ."
"; } return $block; @@ -150,7 +150,7 @@ function import_get_feeds($attributes = 0) { $result = db_query("SELECT * FROM feed ORDER BY fid"); while ($feed = db_fetch_object($result)) { $block[$feed->fid]["subject"] = $feed->title; - $block[$feed->fid]["content"] = import_feed_block($feed) ."

". l(t("more"), "import/feed/$feed->fid", array("title" => t("View this feed's recent news."))) ."

"; + $block[$feed->fid]["content"] = import_feed_block($feed) ."
". l(t("more"), "import/feed/$feed->fid", array("title" => t("View this feed's recent news."))) ."
"; $block[$feed->fid]["info"] = "$feed->title feed"; } @@ -200,18 +200,18 @@ function import_refresh($feed) { $channel = ereg_replace("", "", $data); - eregi("(.*)", $channel, $title); - eregi("(.*)", $channel, $link); - eregi("(.*)", $channel, $description); + eregi("([^<]*)", $channel, $title); + eregi("([^<]*)", $channel, $link); + eregi("([^<]*)", $channel, $description); /* ** Strip invalid tags and provide default values (if required): */ - $link = strip_tags($link[1]); - $description = filter(strtr($description[1], $tt)); + $feed["link"] = strip_tags($link[1]); + $feed["description"] = filter(strtr($description[1], $tt)); - db_query("UPDATE feed SET timestamp = '%s', link = '%s', description = '%s' WHERE fid = '%s'", time(), $link, $description, $feed["fid"]); + db_query("UPDATE feed SET timestamp = '%s', link = '%s', description = '%s' WHERE fid = '%s'", time(), $feed["link"], $feed["description"], $feed["fid"]); /* ** Extract and process individual items: @@ -227,19 +227,37 @@ function import_refresh($feed) { $t = eregi("(.*)", $item, $title); $l = eregi("(.*)", $item, $link); + $g = eregi("(.*)", $item, $guid); $a = eregi("(.*)", $item, $author); $d = eregi("(.*)", $item, $description); - if ($t || $l || $a || $d) { + if ($t || $l || $g || $a || $d) { /* ** Strip invalid tags and provide default values (if required): */ - $title = strip_tags(strtr($title[1] ? $title[1] : substr(strip_tags(strtr($description[1], $tt)), 0, 30), $tt)); - $link = strip_tags($link[1] ? $link[1] : $feed["link"]); - $author = strip_tags($author[1]); $description = filter(strtr($description[1], $tt)); + if ($title[1]) { + $title = strip_tags(strtr($title[1], $tt)); + } + else { + /* + ** Use up to 40 characters of the $description, ending at + ** word boundary, but don't split potential entities. + */ + $title = preg_replace('/^(.*)[^\w;&].*?$/', "\\1", substr(strip_tags($description), 0, 40)); + } + if ($link[1]) { + $link = strip_tags($link[1]); + } + elseif ($guid[1] && (strncmp($guid[1], "http://", 7) == 0)) { + $link = strip_tags($guid[1]); + } + else { + $link = $feed["link"]; + } + $author = strip_tags($author[1]); // print "
title = ". htmlentities($title) ."\n\ndescription = ". htmlentities($description) ."\n\nlink = ". htmlentities($link) ."

"; @@ -705,4 +723,4 @@ function import_page() { } } -?> \ No newline at end of file +?> diff --git a/modules/aggregator/aggregator.module b/modules/aggregator/aggregator.module index 25d218c0296..77c49bc0d0c 100644 --- a/modules/aggregator/aggregator.module +++ b/modules/aggregator/aggregator.module @@ -67,7 +67,7 @@ function import_format_item($item, $feed = 0) { } // external link - $output .= "link\" target=\"new\">$item->title"; + $output .= "link\" target=\"_new\">$item->title"; return $output ."
"; } @@ -116,13 +116,13 @@ function import_block($op, $delta) { $feed = db_fetch_object(db_query("SELECT * FROM feed WHERE fid = '%d'", $delta)); if ($feed) { $block["subject"] = $feed->title; - $block["content"] = import_feed_block($feed) ."

". l(t("more"), "import/feed/$feed->fid", array("title" => t("View this feed's recent news."))) ."

"; + $block["content"] = import_feed_block($feed) ."
". l(t("more"), "import/feed/$feed->fid", array("title" => t("View this feed's recent news."))) ."
"; } else { // it was a bundle. this is NOT elegant $bundle = db_fetch_object(db_query("SELECT * FROM bundle WHERE bid = '%d'", $delta)); $block["subject"] = $bundle->title; - $block["content"] = import_bundle_block($bundle->attributes) ."

". l(t("more"), "import/bundle/$bundle->bid", array("title" => t("View this bundle's recent news."))) ."

"; + $block["content"] = import_bundle_block($bundle->attributes) ."
". l(t("more"), "import/bundle/$bundle->bid", array("title" => t("View this bundle's recent news."))) ."
"; } return $block; @@ -150,7 +150,7 @@ function import_get_feeds($attributes = 0) { $result = db_query("SELECT * FROM feed ORDER BY fid"); while ($feed = db_fetch_object($result)) { $block[$feed->fid]["subject"] = $feed->title; - $block[$feed->fid]["content"] = import_feed_block($feed) ."

". l(t("more"), "import/feed/$feed->fid", array("title" => t("View this feed's recent news."))) ."

"; + $block[$feed->fid]["content"] = import_feed_block($feed) ."
". l(t("more"), "import/feed/$feed->fid", array("title" => t("View this feed's recent news."))) ."
"; $block[$feed->fid]["info"] = "$feed->title feed"; } @@ -200,18 +200,18 @@ function import_refresh($feed) { $channel = ereg_replace("", "", $data); - eregi("(.*)", $channel, $title); - eregi("(.*)", $channel, $link); - eregi("(.*)", $channel, $description); + eregi("([^<]*)", $channel, $title); + eregi("([^<]*)", $channel, $link); + eregi("([^<]*)", $channel, $description); /* ** Strip invalid tags and provide default values (if required): */ - $link = strip_tags($link[1]); - $description = filter(strtr($description[1], $tt)); + $feed["link"] = strip_tags($link[1]); + $feed["description"] = filter(strtr($description[1], $tt)); - db_query("UPDATE feed SET timestamp = '%s', link = '%s', description = '%s' WHERE fid = '%s'", time(), $link, $description, $feed["fid"]); + db_query("UPDATE feed SET timestamp = '%s', link = '%s', description = '%s' WHERE fid = '%s'", time(), $feed["link"], $feed["description"], $feed["fid"]); /* ** Extract and process individual items: @@ -227,19 +227,37 @@ function import_refresh($feed) { $t = eregi("(.*)", $item, $title); $l = eregi("(.*)", $item, $link); + $g = eregi("(.*)", $item, $guid); $a = eregi("(.*)", $item, $author); $d = eregi("(.*)", $item, $description); - if ($t || $l || $a || $d) { + if ($t || $l || $g || $a || $d) { /* ** Strip invalid tags and provide default values (if required): */ - $title = strip_tags(strtr($title[1] ? $title[1] : substr(strip_tags(strtr($description[1], $tt)), 0, 30), $tt)); - $link = strip_tags($link[1] ? $link[1] : $feed["link"]); - $author = strip_tags($author[1]); $description = filter(strtr($description[1], $tt)); + if ($title[1]) { + $title = strip_tags(strtr($title[1], $tt)); + } + else { + /* + ** Use up to 40 characters of the $description, ending at + ** word boundary, but don't split potential entities. + */ + $title = preg_replace('/^(.*)[^\w;&].*?$/', "\\1", substr(strip_tags($description), 0, 40)); + } + if ($link[1]) { + $link = strip_tags($link[1]); + } + elseif ($guid[1] && (strncmp($guid[1], "http://", 7) == 0)) { + $link = strip_tags($guid[1]); + } + else { + $link = $feed["link"]; + } + $author = strip_tags($author[1]); // print "
title = ". htmlentities($title) ."\n\ndescription = ". htmlentities($description) ."\n\nlink = ". htmlentities($link) ."

"; @@ -705,4 +723,4 @@ function import_page() { } } -?> \ No newline at end of file +?> diff --git a/modules/import.module b/modules/import.module index 25d218c0296..77c49bc0d0c 100644 --- a/modules/import.module +++ b/modules/import.module @@ -67,7 +67,7 @@ function import_format_item($item, $feed = 0) { } // external link - $output .= "link\" target=\"new\">$item->title"; + $output .= "link\" target=\"_new\">$item->title"; return $output ."
"; } @@ -116,13 +116,13 @@ function import_block($op, $delta) { $feed = db_fetch_object(db_query("SELECT * FROM feed WHERE fid = '%d'", $delta)); if ($feed) { $block["subject"] = $feed->title; - $block["content"] = import_feed_block($feed) ."

". l(t("more"), "import/feed/$feed->fid", array("title" => t("View this feed's recent news."))) ."

"; + $block["content"] = import_feed_block($feed) ."
". l(t("more"), "import/feed/$feed->fid", array("title" => t("View this feed's recent news."))) ."
"; } else { // it was a bundle. this is NOT elegant $bundle = db_fetch_object(db_query("SELECT * FROM bundle WHERE bid = '%d'", $delta)); $block["subject"] = $bundle->title; - $block["content"] = import_bundle_block($bundle->attributes) ."

". l(t("more"), "import/bundle/$bundle->bid", array("title" => t("View this bundle's recent news."))) ."

"; + $block["content"] = import_bundle_block($bundle->attributes) ."
". l(t("more"), "import/bundle/$bundle->bid", array("title" => t("View this bundle's recent news."))) ."
"; } return $block; @@ -150,7 +150,7 @@ function import_get_feeds($attributes = 0) { $result = db_query("SELECT * FROM feed ORDER BY fid"); while ($feed = db_fetch_object($result)) { $block[$feed->fid]["subject"] = $feed->title; - $block[$feed->fid]["content"] = import_feed_block($feed) ."

". l(t("more"), "import/feed/$feed->fid", array("title" => t("View this feed's recent news."))) ."

"; + $block[$feed->fid]["content"] = import_feed_block($feed) ."
". l(t("more"), "import/feed/$feed->fid", array("title" => t("View this feed's recent news."))) ."
"; $block[$feed->fid]["info"] = "$feed->title feed"; } @@ -200,18 +200,18 @@ function import_refresh($feed) { $channel = ereg_replace("", "", $data); - eregi("(.*)", $channel, $title); - eregi("(.*)", $channel, $link); - eregi("(.*)", $channel, $description); + eregi("([^<]*)", $channel, $title); + eregi("([^<]*)", $channel, $link); + eregi("([^<]*)", $channel, $description); /* ** Strip invalid tags and provide default values (if required): */ - $link = strip_tags($link[1]); - $description = filter(strtr($description[1], $tt)); + $feed["link"] = strip_tags($link[1]); + $feed["description"] = filter(strtr($description[1], $tt)); - db_query("UPDATE feed SET timestamp = '%s', link = '%s', description = '%s' WHERE fid = '%s'", time(), $link, $description, $feed["fid"]); + db_query("UPDATE feed SET timestamp = '%s', link = '%s', description = '%s' WHERE fid = '%s'", time(), $feed["link"], $feed["description"], $feed["fid"]); /* ** Extract and process individual items: @@ -227,19 +227,37 @@ function import_refresh($feed) { $t = eregi("(.*)", $item, $title); $l = eregi("(.*)", $item, $link); + $g = eregi("(.*)", $item, $guid); $a = eregi("(.*)", $item, $author); $d = eregi("(.*)", $item, $description); - if ($t || $l || $a || $d) { + if ($t || $l || $g || $a || $d) { /* ** Strip invalid tags and provide default values (if required): */ - $title = strip_tags(strtr($title[1] ? $title[1] : substr(strip_tags(strtr($description[1], $tt)), 0, 30), $tt)); - $link = strip_tags($link[1] ? $link[1] : $feed["link"]); - $author = strip_tags($author[1]); $description = filter(strtr($description[1], $tt)); + if ($title[1]) { + $title = strip_tags(strtr($title[1], $tt)); + } + else { + /* + ** Use up to 40 characters of the $description, ending at + ** word boundary, but don't split potential entities. + */ + $title = preg_replace('/^(.*)[^\w;&].*?$/', "\\1", substr(strip_tags($description), 0, 40)); + } + if ($link[1]) { + $link = strip_tags($link[1]); + } + elseif ($guid[1] && (strncmp($guid[1], "http://", 7) == 0)) { + $link = strip_tags($guid[1]); + } + else { + $link = $feed["link"]; + } + $author = strip_tags($author[1]); // print "
title = ". htmlentities($title) ."\n\ndescription = ". htmlentities($description) ."\n\nlink = ". htmlentities($link) ."

"; @@ -705,4 +723,4 @@ function import_page() { } } -?> \ No newline at end of file +?>