From 956425af6ed0748578f809381dcce639e3f456d7 Mon Sep 17 00:00:00 2001 From: dhawes Date: Thu, 27 Jan 2005 22:47:13 +0000 Subject: [PATCH] Now supports new preferredtitle field for custom feed channel titles. Supports new instance config for displaying the channel link at the end of the feed item links. --- blocks/rss_client/block_rss_client.php | 21 +++- blocks/rss_client/block_rss_client_action.php | 104 +++++++++++++++--- blocks/rss_client/config_global.html | 2 + blocks/rss_client/config_instance.html | 24 +++- 4 files changed, 125 insertions(+), 26 deletions(-) diff --git a/blocks/rss_client/block_rss_client.php b/blocks/rss_client/block_rss_client.php index ff8483c000..b3ef45b2d4 100644 --- a/blocks/rss_client/block_rss_client.php +++ b/blocks/rss_client/block_rss_client.php @@ -152,16 +152,20 @@ class block_rss_client extends block_base { } if ($showtitle) { - $returnstring .= '
'. $rss_record->title .'
'; + $returnstring .= '
'. $rss_record->title .'


'; } if ($shownumentries > 0 && $shownumentries < count($rss->items) ) { $rss->items = array_slice($rss->items, 0, $shownumentries); } - $rss->channel['title'] = rss_unhtmlentities($rss->channel['title']); + if (empty($rss_record->preferredtitle)) { + $feedtitle = stripslashes_safe($rss_record->preferredtitle); + } else { + $feedtitle = stripslashes_safe(rss_unhtmlentities($rss->channel['title'])); + } foreach ($rss->items as $item) { - $item['title'] = rss_unhtmlentities($item['title']); - $item['description'] = rss_unhtmlentities($item['description']); + $item['title'] = stripslashes_safe(rss_unhtmlentities($item['title'])); + $item['description'] = stripslashes_safe(rss_unhtmlentities($item['description'])); if ($item['title'] == '') { $item['title'] = substr(strip_tags($item['description']), 0, 20) . '...'; } @@ -179,8 +183,13 @@ class block_rss_client extends block_base { } } - if (!empty($rss->channel['link']) && !empty($rss->channel['title']) ) { - $feedtitle = ''. $rss->channel['title'] .''; + if (!empty($rss->channel['link'])) { + if (!empty($this->config) && isset($this->config->block_rss_client_show_channel_link) && $this->config->block_rss_client_show_channel_link) { + $returnstring .= ''; + } + if (!empty($feedtitle) ) { + $feedtitle = ''. $feedtitle .''; + } } } diff --git a/blocks/rss_client/block_rss_client_action.php b/blocks/rss_client/block_rss_client_action.php index c0a80b0f4c..f8d54e85ef 100644 --- a/blocks/rss_client/block_rss_client_action.php +++ b/blocks/rss_client/block_rss_client_action.php @@ -20,6 +20,7 @@ optional_variable($rssid, 'none'); optional_variable($courseid, 'none'); optional_variable($url); + optional_variable($preferredtitle); optional_variable($item); $straddedit = get_string('block_rss_feeds_add_edit', 'block_rss_client'); @@ -53,7 +54,7 @@ if ($act == 'none') { rss_display_feeds(); - rss_get_form($act, $url, $rssid); + rss_get_form($act, $url, $rssid, $preferredtitle); } else if ($act == 'updfeed') { require_variable($url); @@ -70,9 +71,11 @@ if ($rss === false) { $dataobject->description = ''; $dataobject->title = ''; + $dataobject->preferredtitle = ''; } else { $dataobject->description = addslashes(rss_unhtmlentities($rss->channel['description'])); $dataobject->title = addslashes(rss_unhtmlentities($rss->channel['title'])); + $dataobject->preferredtitle = addslashes($preferredtitle); } $dataobject->url = addslashes($url); @@ -82,8 +85,8 @@ rss_display_feeds($rssid); print ''. get_string('block_rss_feed_updated', 'block_rss_client') .''; - rss_get_form($act, $url, $rssid); - + rss_get_form($act, $dataobject->url, $rssid, $dataobject->preferredtitle); + } else if ($act == 'addfeed' ) { require_variable($url); @@ -91,6 +94,7 @@ $dataobject->description = ''; $dataobject->title = ''; $dataobject->url = addslashes($url); + $dataobject->preferredtitle = addslashes($preferredtitle); $rssid = insert_record('block_rss_client', $dataobject); if (!$rssid){ @@ -122,15 +126,16 @@ print ''. get_string('block_rss_feed_added', 'block_rss_client') .''; } rss_display_feeds(); - rss_get_form($act, $url, $rssid); - + rss_get_form($act, $dataobject->url, $dataobject->id, $dataobject->preferredtitle); + } else if ( $act == 'rss_edit') { $rss_record = get_record('block_rss_client', 'id', $rssid); $fname = stripslashes_safe($rss_record->title); $url = stripslashes_safe($rss_record->url); - rss_get_form($act, $url, $rssid); - + $preferredtitle = stripslashes_safe($rss_record->preferredtitle); + rss_get_form($act, $url, $rssid, $preferredtitle); + } else if ($act == 'delfeed') { $file = $CFG->dataroot .'/cache/rsscache/'. $rssid .'.xml'; @@ -145,7 +150,7 @@ rss_display_feeds(); print ''. get_string('block_rss_feed_deleted', 'block_rss_client') .''; - rss_get_form($act, $url, $rssid); + rss_get_form($act, $url, $rssid, $preferredtitle); } else if ($act == 'view') { // echo $sql; //debug @@ -162,25 +167,30 @@ $rsserror = ob_get_contents(); ob_end_clean(); - $rss->channel['title'] - rss_unhtmlentities($rss->channel['title']); + if (empty($rss_record->preferredtitle)) { + $feedtitle = stripslashes_safe($rss_record->preferredtitle); + } else { + $feedtitle = stripslashes_safe(rss_unhtmlentities($rss->channel['title'])); + } print ''."\n"; - print ''."\n"; + print ''."\n"; for($y=0; $y < count($rss->items); $y++) { - $rss->items[$y]['title'] = rss_unhtmlentities($rss->items[$y]['title']); - $rss->items[$y]['description'] = rss_unhtmlentities($rss->items[$y]['description']); + $rss->items[$y]['title'] = stripslashes_safe(rss_unhtmlentities($rss->items[$y]['title'])); + $rss->items[$y]['description'] = stripslashes_safe(rss_unhtmlentities($rss->items[$y]['description'])); if ($rss->items[$y]['link'] == '') { $rss->items[$y]['link'] = $rss->items[$y]['guid']; } - + if ($rss->items[$y]['title'] == '') { $rss->items[$y]['title'] = '>>'; } - + print ''."\n"; if (file_exists($CFG->dirroot .'/blog/lib.php')) { + //Blog module is installed - provide "blog this" link print ' + + diff --git a/blocks/rss_client/config_instance.html b/blocks/rss_client/config_instance.html index 738e3e1d40..324672ade2 100644 --- a/blocks/rss_client/config_instance.html +++ b/blocks/rss_client/config_instance.html @@ -1,7 +1,7 @@
'. $rss->channel['title'] .'
'. $feedtitle .'
'."\n"; print ''. $rss->items[$y]['title']; print ''."\n"; print ''."\n"; print ''. get_string('blog_blog_this', 'blog').''."\n"; print ''. get_string('blog_blog_this', 'blog') .''."\n"; @@ -195,8 +205,70 @@ } } else { rss_display_feeds(); - rss_get_form($act, $url, $rssid); + rss_get_form($act, $url, $rssid, $preferredtitle); } print_footer(); -?> + +/** + * @param string $act . + * @param string $url . + * @param int $rssid . + * @param bool $printnow True if the generated form should be printed out, false if the string should be returned from this function quietly + */ +function rss_get_form($act, $url, $rssid, $preferredtitle, $printnow=true) { + global $USER, $CFG, $_SERVER, $blockid, $blockaction; + global $blogid; //hackish, but if there is a blogid it would be good to preserve it + $stredit = get_string('edit'); + $stradd = get_string('add'); + $strupdatefeed = get_string('block_rss_update_feed', 'block_rss_client'); + $straddfeed = get_string('block_rss_add_feed', 'block_rss_client'); + + $returnstring = '
'."\n"; + + $returnstring .= '
'."\n"; + if ($act == 'rss_edit') { + $returnstring .= $strupdatefeed; + } else { + $returnstring .= $straddfeed; + } + $returnstring .= '
'."\n"; + $returnstring .= '
'. get_string('block_rss_custom_title_label', 'block_rss_client'); + $returnstring .= '
'."\n"; + + $returnstring .= ''."\n"; + if ($act == 'rss_edit') { + $returnstring .= ''. "\n"; + } + $returnstring .= ''."\n"; + $returnstring .= ''."\n"; + $returnstring .= '
". get_string('validate_feed', 'block_rss_client').""; + if ($act == 'rss_edit') { + $returnstring .= $stredit; + } else { + $returnstring .= $stradd; + } + $returnstring .= '" /> '. $validatestring .'
'."\n"; + $returnstring .= '
'."\n"; + + if ($printnow){ + print $returnstring; + } + return $returnstring; +} +?> \ No newline at end of file diff --git a/blocks/rss_client/config_global.html b/blocks/rss_client/config_global.html index 262897acde..f82294a581 100644 --- a/blocks/rss_client/config_global.html +++ b/blocks/rss_client/config_global.html @@ -51,6 +51,8 @@
+ + + +
- +
- + - - + +

+ block_rss_client_show_channel_link)) { + $selected = $CFG->block_rss_client_show_channel_link; + } else { + $selected = '0'; + $CFG->block_rss_client_show_channel_link = 0; + } + $options = array ( '0' => get_string('no'), + '1' => get_string('yes') ); + + choose_from_menu ($options, 'block_rss_client_show_channel_link', $selected); + ?> +
-- 2.39.5