diff --git a/blocks/rss_client/block_rss_client.php b/blocks/rss_client/block_rss_client.php index 392a90bc20c..665c86699be 100644 --- a/blocks/rss_client/block_rss_client.php +++ b/blocks/rss_client/block_rss_client.php @@ -1,25 +1,25 @@ title = get_string('feedstitle', 'block_rss_client'); @@ -40,7 +40,7 @@ class block_rss_client extends block_base { $this->title = get_string('remotenewsfeed', 'block_rss_client'); } } - + function get_content() { global $CFG, $editing; @@ -53,7 +53,7 @@ class block_rss_client extends block_base { $this->content = new stdClass; $this->content->text = ''; $this->content->footer = ''; - + if (empty($this->instance)) { // We're being asked for content without an associated instance return $this->content; @@ -128,11 +128,11 @@ class block_rss_client extends block_base { $count ++; } } - + $this->content->text = $output; return $this->content; } - + function instance_allow_multiple() { return true; } @@ -144,7 +144,7 @@ class block_rss_client extends block_base { function instance_allow_config() { return true; } - + /** * @param int $rssid The feed to be displayed * @param bool $display_description Should the description information from the feed be displayed or simply the title? @@ -161,7 +161,7 @@ class block_rss_client extends block_base { if (!defined('MAGPIE_OUTPUT_ENCODING')) { define('MAGPIE_OUTPUT_ENCODING', get_string('thischarset')); // see bug 3107 } - + // Check if there is a cached string which has not timed out. if (BLOCK_RSS_SECONDARY_CACHE_ENABLED && isset($this->config->{'rssid'. $rssid}) && @@ -174,7 +174,6 @@ class block_rss_client extends block_base { $rss_record = get_record('block_rss_client', 'id', $rssid); if (isset($rss_record) && isset($rss_record->id)) { - // By capturing the output from fetch_rss this way // error messages do not display and clutter up the moodle interface // however, we do lose out on seeing helpful messages like "cache hit", etc. @@ -182,7 +181,7 @@ class block_rss_client extends block_base { $rss = fetch_rss($rss_record->url); $rsserror = ob_get_contents(); ob_end_clean(); - + if ($rss === false) { if ($CFG->debug && !empty($rsserror)) { // There was a failure in loading the rss feed, print link to full error text @@ -218,7 +217,7 @@ class block_rss_client extends block_base { if (empty($rss) || empty($rss->items)) { return ''; } - + foreach ($rss->items as $item) { $item['title'] = stripslashes_safe(rss_unhtmlentities($item['title'])); $item['description'] = stripslashes_safe(rss_unhtmlentities($item['description'])); @@ -228,7 +227,7 @@ class block_rss_client extends block_base { } else { $item['title'] = break_up_long_words($item['title'], 30); } - + if ($item['link'] == '') { $item['link'] = $item['guid']; } @@ -237,7 +236,6 @@ class block_rss_client extends block_base { $returnstring .= '' ."\n"; - if ($display_description && !empty($item['description'])) { $item['description'] = break_up_long_words($item['description'], 30); $returnstring .= '
'. @@ -264,7 +262,7 @@ class block_rss_client extends block_base { $this->title = $feedtitle; } } - + // store config setting for this rssid so we do not need to read from file each time $this->config->{'rssid'. $rssid} = addslashes($returnstring); $this->config->{'rssid'. $rssid .'timestamp'} = $now; @@ -272,4 +270,4 @@ class block_rss_client extends block_base { return $returnstring; } } -?> +?> \ No newline at end of file diff --git a/blocks/rss_client/block_rss_client_action.php b/blocks/rss_client/block_rss_client_action.php index 1356b69f0df..e90ec05a527 100644 --- a/blocks/rss_client/block_rss_client_action.php +++ b/blocks/rss_client/block_rss_client_action.php @@ -1,7 +1,8 @@ libdir .'/rsslib.php'); - require_once(MAGPIE_DIR .'rss_fetch.inc'); +require_once('../../config.php'); +require_once($CFG->libdir .'/rsslib.php'); +require_once(MAGPIE_DIR .'rss_fetch.inc'); - require_login(); - global $USER; - - //ensure that the logged in user is not using the guest account - if (isset($_SERVER['HTTP_REFERER'])) { - $referrer = $_SERVER['HTTP_REFERER']; - } else { - $referrer = $CFG->wwwroot; - } - if (isguest()) { - error(get_string('noguestpost', 'forum'), $referrer); - } +require_login(); +global $USER; - $act = optional_param('act', 'none' ); - $rssid = optional_param('rssid', 'none' ); - $id = optional_param('id', SITEID, PARAM_INT); - $url = optional_param('url'); - $preferredtitle = optional_param('preferredtitle', ''); - $item = optional_param('item'); +//ensure that the logged in user is not using the guest account +if (isset($_SERVER['HTTP_REFERER'])) { + $referrer = $_SERVER['HTTP_REFERER']; +} else { + $referrer = $CFG->wwwroot; +} +if (isguest()) { + error(get_string('noguestpost', 'forum'), $referrer); +} - if (!defined('MAGPIE_OUTPUT_ENCODING')) { - define('MAGPIE_OUTPUT_ENCODING', get_string('thischarset')); // see bug 3107 - } +$act = optional_param('act', 'none' ); +$rssid = optional_param('rssid', 'none' ); +$id = optional_param('id', SITEID, PARAM_INT); +$url = optional_param('url'); +$preferredtitle = optional_param('preferredtitle', ''); +$item = optional_param('item'); - if (!empty($id)) { - // we get the complete $course object here because print_header assumes this is - // a complete object (needed for proper course theme settings) - $course = get_record('course', 'id', $id); - } +if (!defined('MAGPIE_OUTPUT_ENCODING')) { + define('MAGPIE_OUTPUT_ENCODING', get_string('thischarset')); // see bug 3107 +} - $straddedit = get_string('feedsaddedit', 'block_rss_client'); - if ( isadmin() ) { - $stradmin = get_string('administration'); - $strconfiguration = get_string('configuration'); - $navigation = "wwwroot/$CFG->admin/index.php\">$stradmin -> ". - "wwwroot/$CFG->admin/configure.php\">$strconfiguration -> $straddedit"; - } else if (!empty($course)) { - $navigation = "wwwroot/course/view.php?id=$id\">$course->shortname -> $straddedit"; - } else { - $navigation = $straddedit; - } - - print_header(get_string('feedsaddedit', 'block_rss_client'), - get_string('feedsaddedit', 'block_rss_client'), - $navigation ); +if (!empty($id)) { + // we get the complete $course object here because print_header assumes this is + // a complete object (needed for proper course theme settings) + $course = get_record('course', 'id', $id); +} - //check to make sure that the user is allowed to post new feeds - $submitters = $CFG->block_rss_client_submitters; - $isteacher = false; - if (!empty($course)) { - $isteacher = isteacher($id); - } +$straddedit = get_string('feedsaddedit', 'block_rss_client'); +if ( isadmin() ) { + $stradmin = get_string('administration'); + $strconfiguration = get_string('configuration'); + $navigation = "wwwroot/$CFG->admin/index.php\">$stradmin -> ". + "wwwroot/$CFG->admin/configure.php\">$strconfiguration -> $straddedit"; +} else if (!empty($course)) { + $navigation = "wwwroot/course/view.php?id=$id\">$course->shortname -> $straddedit"; +} else { + $navigation = $straddedit; +} - $rss_record = get_record('block_rss_client', 'id', $rssid); +print_header(get_string('feedsaddedit', 'block_rss_client'), + get_string('feedsaddedit', 'block_rss_client'), + $navigation ); - //if the user is an admin or course teacher then allow the user to - //assign categories to other uses than personal - if (!( isadmin() || $submitters == SUBMITTERS_ALL_ACCOUNT_HOLDERS || - ($submitters == SUBMITTERS_ADMIN_AND_TEACHER && $isteacher) || - ( ($act == 'rss_edit' || $act == 'delfeed') && $USER->id == $rss_record->userid) ) ) { +//check to make sure that the user is allowed to post new feeds +$submitters = $CFG->block_rss_client_submitters; +$isteacher = false; +if (!empty($course)) { + $isteacher = isteacher($id); +} + +$rss_record = get_record('block_rss_client', 'id', $rssid); + +//if the user is an admin or course teacher then allow the user to +//assign categories to other uses than personal +if (!( isadmin() || $submitters == SUBMITTERS_ALL_ACCOUNT_HOLDERS || + ($submitters == SUBMITTERS_ADMIN_AND_TEACHER && $isteacher) || + ( ($act == 'rss_edit' || $act == 'delfeed') && $USER->id == $rss_record->userid) ) ) { error(get_string('noguestpost', 'forum').' You are not allowed to make modifications to this RSS feed at this time.', $referrer); +} + +if ($act == 'none') { + rss_display_feeds($id); + rss_print_form($act, $url, $rssid, $preferredtitle, $id); + +} else if ($act == 'updfeed') { + if (empty($url)) { + error( 'url not defined for rss feed' ); } - if ($act == 'none') { - rss_display_feeds($id); - rss_print_form($act, $url, $rssid, $preferredtitle, $id); + // By capturing the output from fetch_rss this way + // error messages do not display and clutter up the moodle interface + // however, we do lose out on seeing helpful messages like "cache hit", etc. + $message = ''; + ob_start(); + $rss = fetch_rss($url); + if ($CFG->debug) { + $message .= ob_get_contents(); + } + ob_end_clean(); + + $dataobject->id = $rssid; + 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); + + if (!update_record('block_rss_client', $dataobject)) { + error('There was an error trying to update rss feed with id:'. $rssid); + } + + $message .= '
'. get_string('feedupdated', 'block_rss_client'); + redirect($referrer, $message); + +} else if ($act == 'addfeed' ) { + + if (empty($url)) { + error('url not defined for rss feed'); + } + $dataobject->userid = $USER->id; + $dataobject->description = ''; + $dataobject->title = ''; + $dataobject->url = addslashes($url); + $dataobject->preferredtitle = addslashes($preferredtitle); + + $rssid = insert_record('block_rss_client', $dataobject); + if (!$rssid) { + error('There was an error trying to add a new rss feed:'. $url); + } + + // By capturing the output from fetch_rss this way + // error messages do not display and clutter up the moodle interface + // however, we do lose out on seeing helpful messages like "cache hit", etc. + $message = ''; + ob_start(); + $rss = fetch_rss($url); + if ($CFG->debug) { + $message .= ob_get_contents(); + } + ob_end_clean(); + + if ($rss === false) { + $message .= '

There was an error loading this rss feed. You may want to verify the url you have specified before using it.'; //Daryl Hawes note: localize this line + } else { - } else if ($act == 'updfeed') { - if (empty($url)) { - error( 'url not defined for rss feed' ); - } - - // By capturing the output from fetch_rss this way - // error messages do not display and clutter up the moodle interface - // however, we do lose out on seeing helpful messages like "cache hit", etc. - $message = ''; - ob_start(); - $rss = fetch_rss($url); - if ($CFG->debug) { - $message .= ob_get_contents(); - } - ob_end_clean(); - $dataobject->id = $rssid; - if ($rss === false) { - $dataobject->description = ''; - $dataobject->title = ''; - $dataobject->preferredtitle = ''; - } else { + if (!empty($rss->channel['description'])) { $dataobject->description = addslashes(rss_unhtmlentities($rss->channel['description'])); - $dataobject->title = addslashes(rss_unhtmlentities($rss->channel['title'])); - $dataobject->preferredtitle = addslashes($preferredtitle); } - $dataobject->url = addslashes($url); - + if (!empty($rss->channel['title'])) { + $dataobject->title = addslashes(rss_unhtmlentities($rss->channel['title'])); + } if (!update_record('block_rss_client', $dataobject)) { error('There was an error trying to update rss feed with id:'. $rssid); } + $message .= '
'. get_string('feedadded', 'block_rss_client'); + } + redirect($referrer, $message); +/* + rss_display_feeds($id); + rss_print_form($act, $dataobject->url, $dataobject->id, $dataobject->preferredtitle, $id); +*/ +} else if ( $act == 'rss_edit') { - $message .= '
'. get_string('feedupdated', 'block_rss_client'); - redirect($referrer, $message); + $preferredtitle = stripslashes_safe($rss_record->preferredtitle); + if (empty($preferredtitle)) { + $preferredtitle = stripslashes_safe($rss_record->title); + } + $url = stripslashes_safe($rss_record->url); + rss_display_feeds($id, '', $rssid); + rss_print_form($act, $url, $rssid, $preferredtitle, $id); - } else if ($act == 'addfeed' ) { +} else if ($act == 'delfeed') { - if (empty($url)) { - error('url not defined for rss feed'); - } - $dataobject->userid = $USER->id; - $dataobject->description = ''; - $dataobject->title = ''; - $dataobject->url = addslashes($url); - $dataobject->preferredtitle = addslashes($preferredtitle); + $file = $CFG->dataroot .'/cache/rsscache/'. $rssid .'.xml'; + if (file_exists($file)) { + unlink($file); + } - $rssid = insert_record('block_rss_client', $dataobject); - if (!$rssid) { - error('There was an error trying to add a new rss feed:'. $url); - } + // echo "DEBUG: act = delfeed"; //debug + //Daryl Hawes note: convert this sql statement to a moodle function call + $sql = 'DELETE FROM '. $CFG->prefix .'block_rss_client WHERE id='. $rssid; + $res= $db->Execute($sql); + redirect($referrer, get_string('feeddeleted', 'block_rss_client') ); + +} else if ($act == 'view') { + // echo $sql; //debug + // print_object($res); //debug + if (!$rss_record->id) { + print ''. get_string('couldnotfindfeed', 'block_rss_client') .': '. $rssid .''; + } else { // By capturing the output from fetch_rss this way // error messages do not display and clutter up the moodle interface // however, we do lose out on seeing helpful messages like "cache hit", etc. - $message = ''; ob_start(); - $rss = fetch_rss($url); - if ($CFG->debug) { - $message .= ob_get_contents(); - } + $rss = fetch_rss($rss_record->url); ob_end_clean(); - - if ($rss === false) { - $message = 'There was an error loading this rss feed. You may want to verify the url you have specified before using it.'; //Daryl Hawes note: localize this line + + if (empty($rss_record->preferredtitle)) { + $feedtitle = stripslashes_safe($rss_record->preferredtitle); } else { - - $dataobject->id = $rssid; - if (!empty($rss->channel['description'])) { - $dataobject->description = addslashes(rss_unhtmlentities($rss->channel['description'])); + $feedtitle = stripslashes_safe(rss_unhtmlentities($rss->channel['title'])); + } + print ''."\n"; + print ''."\n"; + for($y=0; $y < count($rss->items); $y++) { + $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 (!empty($rss->channel['title'])) { - $dataobject->title = addslashes(rss_unhtmlentities($rss->channel['title'])); - } - if (!update_record('block_rss_client', $dataobject)) { - error('There was an error trying to update rss feed with id:'. $rssid); + + if ($rss->items[$y]['title'] == '') { + $rss->items[$y]['title'] = '>>'; } - $message .= '
'. get_string('feedadded', 'block_rss_client'); - } - redirect($referrer, $message); -/* - rss_display_feeds(); - rss_get_form($act, $dataobject->url, $dataobject->id, $dataobject->preferredtitle); -*/ - } else if ( $act == 'rss_edit') { - - $preferredtitle = stripslashes_safe($rss_record->preferredtitle); - if (empty($preferredtitle)) { - $preferredtitle = stripslashes_safe($rss_record->title); - } - $url = stripslashes_safe($rss_record->url); - rss_display_feeds($id, '', $rssid); - rss_print_form($act, $url, $rssid, $preferredtitle, $id); - } else if ($act == 'delfeed') { - - $file = $CFG->dataroot .'/cache/rsscache/'. $rssid .'.xml'; - if (file_exists($file)) { - unlink($file); - } - - // echo "DEBUG: act = delfeed"; //debug - //Daryl Hawes note: convert this sql statement to a moodle function call - $sql = 'DELETE FROM '. $CFG->prefix .'block_rss_client WHERE id='. $rssid; - $res= $db->Execute($sql); - - redirect($referrer, get_string('feeddeleted', 'block_rss_client') ); - -/* rss_display_feeds(); - rss_get_form($act, $url, $rssid, $preferredtitle); -*/ - } else if ($act == 'view') { - // echo $sql; //debug - // print_object($res); //debug - if (!$rss_record->id) { - print ''. get_string('couldnotfindfeed', 'block_rss_client') .': '. $rssid .''; - } else { - // By capturing the output from fetch_rss this way - // error messages do not display and clutter up the moodle interface - // however, we do lose out on seeing helpful messages like "cache hit", etc. - ob_start(); - $rss = fetch_rss($rss_record->url); - ob_end_clean(); - - if (empty($rss_record->preferredtitle)) { - $feedtitle = stripslashes_safe($rss_record->preferredtitle); + print ''."\n"; + if (file_exists($CFG->dirroot .'/blog/lib.php')) { + //Blog module is installed - provide "blog this" link + print ''."\n"; + print ''."\n"; } - } else { - rss_display_feeds($id); - rss_print_form($act, $url, $rssid, $preferredtitle, $id); + print '
'. $feedtitle .'
'."\n"; + print ''. $rss->items[$y]['title']; + print ''."\n"; + print ''."\n"; + print ''. get_string('blogthis', 'blog').''."\n"; + print ''. get_string('blogthis', 'blog') .''."\n"; } else { - $feedtitle = stripslashes_safe(rss_unhtmlentities($rss->channel['title'])); + print ' '; } - print ''."\n"; - print ''."\n"; - for($y=0; $y < count($rss->items); $y++) { - $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 ''."\n"; - print ''."\n"; - } - print '
'. $feedtitle .'
'."\n"; - print ''. $rss->items[$y]['title']; - print ''."\n"; - print ''."\n"; - print ''. get_string('blogthis', 'blog').''."\n"; - print ''. get_string('blogthis', 'blog') .''."\n"; - } else { - print ' '; - } - print '
'; - print $rss->items[$y]['description'] .'
'."\n"; + print '
'; + print $rss->items[$y]['description'] .'
'."\n"; } +} else { + rss_display_feeds($id); + rss_print_form($act, $url, $rssid, $preferredtitle, $id); +} - print_footer(); -?> +print_footer(); +?> \ No newline at end of file diff --git a/blocks/rss_client/block_rss_client_error.php b/blocks/rss_client/block_rss_client_error.php index 81be20ba958..11ef4aa9127 100644 --- a/blocks/rss_client/block_rss_client_error.php +++ b/blocks/rss_client/block_rss_client_error.php @@ -1,14 +1,14 @@ +print_footer(); +?> \ No newline at end of file diff --git a/blocks/rss_client/config_global.html b/blocks/rss_client/config_global.html index 677a0351727..b218e536725 100644 --- a/blocks/rss_client/config_global.html +++ b/blocks/rss_client/config_global.html @@ -17,6 +17,7 @@ + block_rss_timeout: @@ -31,6 +32,7 @@ + block_rss_client_submitters: @@ -56,13 +58,16 @@ - - -

+

- + + \ No newline at end of file diff --git a/blocks/rss_client/config_instance.html b/blocks/rss_client/config_instance.html index 8f61be1abf0..f420f1744ea 100644 --- a/blocks/rss_client/config_instance.html +++ b/blocks/rss_client/config_instance.html @@ -1,4 +1,4 @@ -libdir .'/rsslib.php'); $id = optional_param('id', SITEID, PARAM_INT); @@ -7,7 +7,7 @@ $id = optional_param('id', SITEID, PARAM_INT); $page = page_create_object($this->instance->pagetype, $this->instance->pageid); /// Print tabs at top -$currentaction = optional_param( 'currentaction','',PARAM_ALPHA ); +$currentaction = optional_param('currentaction', '', PARAM_ALPHA); if (empty($currentaction) || $currentaction == 'configblock') { $currentaction = 'configblock'; } else { @@ -38,6 +38,7 @@ if ($currentaction == 'configblock') { ?> + @@ -56,6 +57,7 @@ if ($currentaction == 'configblock') { ?>" /> + @@ -89,12 +91,13 @@ if ($currentaction == 'configblock') { } else { print_string('nofeeds', 'block_rss_client'); if ( isadmin() ) { - print '  '. get_string('editnewsfeeds', 'block_rss_client') .'
'; + print '  '. get_string('editnewsfeeds', 'block_rss_client') .'
'; } } ?> + + @@ -122,6 +126,7 @@ if ($currentaction == 'configblock') { ?> + @@ -138,6 +143,7 @@ if ($currentaction == 'configblock') { ?> + @@ -153,4 +159,4 @@ if ($currentaction == 'configblock') { print ''; //not sure that this is needed rss_print_form($act, $url, $rssid, $preferredtitle, $id); print ''; -} ?> +} ?> \ No newline at end of file diff --git a/blocks/rss_client/config_instance_tabs.php b/blocks/rss_client/config_instance_tabs.php index 51d3199a671..56ab387eeea 100644 --- a/blocks/rss_client/config_instance_tabs.php +++ b/blocks/rss_client/config_instance_tabs.php @@ -2,21 +2,21 @@ /// This file to be included so we can assume config.php has already been included. /// We also assume that $inactive, $activetab and $currentaction have been set - global $USER; - $tabs = $row = array(); +global $USER; +$tabs = $row = array(); - $script = $page->url_get_full(array('instanceid' => $this->instance->id, 'sesskey' => $USER->sesskey, 'blockaction' => 'config', 'currentaction' => 'configblock', 'id' => $id)); - $row[] = new tabobject('configblock', $script, - get_string('configblock', 'block_rss_client')); +$script = $page->url_get_full(array('instanceid' => $this->instance->id, 'sesskey' => $USER->sesskey, 'blockaction' => 'config', 'currentaction' => 'configblock', 'id' => $id)); +$row[] = new tabobject('configblock', $script, + get_string('configblock', 'block_rss_client')); - $script = $page->url_get_full(array('instanceid' => $this->instance->id, 'sesskey' => $USER->sesskey, 'blockaction' => 'config', 'currentaction' => 'managefeeds', 'id' => $id)); - $row[] = new tabobject('managefeeds', $script, - get_string('managefeeds', 'block_rss_client')); +$script = $page->url_get_full(array('instanceid' => $this->instance->id, 'sesskey' => $USER->sesskey, 'blockaction' => 'config', 'currentaction' => 'managefeeds', 'id' => $id)); +$row[] = new tabobject('managefeeds', $script, + get_string('managefeeds', 'block_rss_client')); - $tabs[] = $row; +$tabs[] = $row; - /// Print out the tabs and continue! - print '
'; - print_tabs($tabs, $currentaction); - print '
'; +/// Print out the tabs and continue! +print '
'; +print_tabs($tabs, $currentaction); +print '
'; ?> \ No newline at end of file