libdir .'/rsslib.php'); require_once(MAGPIE_DIR .'rss_fetch.inc'); require_login(); //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); } optional_variable($act, 'none'); 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'); 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 ($courseid != 'none' && $course = get_record('course', 'id', $courseid) ) { $navigation = "wwwroot/course/view.php?id=$course->id\">$course->shortname -> $straddedit"; } else { $navigation = $straddedit; } print_header(get_string('block_rss_feeds_add_edit', 'block_rss_client'), get_string('block_rss_feeds_add_edit', 'block_rss_client'), $navigation ); //check to make sure that the user is allowed to post new feeds $submitters = $CFG->block_rss_client_submitters; $isteacher = false; if ($courseid != 'none'){ $isteacher = isteacher($courseid); } //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) ) ) { error(get_string('noguestpost', 'forum'), $referrer); } if ($act == 'none') { rss_display_feeds(); rss_get_form($act, $url, $rssid, $preferredtitle); } else if ($act == 'updfeed') { require_variable($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. ob_start(); $rss = fetch_rss($url); $rsserror = 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); } // rss_display_feeds($rssid); rss_display_feeds(); print ''. get_string('block_rss_feed_updated', 'block_rss_client') .''; rss_get_form($act, $dataobject->url, $rssid, $dataobject->preferredtitle); } else if ($act == 'addfeed' ) { require_variable($url); $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. ob_start(); $rss = fetch_rss($url); $rsserror = ob_get_contents(); ob_end_clean(); if ($rss === false) { print '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 { $dataobject->id = $rssid; if (!empty($rss->channel['description'])) { $dataobject->description = addslashes(rss_unhtmlentities($rss->channel['description'])); } 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); } print ''. get_string('block_rss_feed_added', 'block_rss_client') .''; } rss_display_feeds(); rss_get_form($act, $dataobject->url, $dataobject->id, $dataobject->preferredtitle); } else if ( $act == 'rss_edit') { $rss_record = get_record('block_rss_client', 'id', $rssid); $preferredtitle = stripslashes_safe($rss_record->preferredtitle); if (empty($preferredtitle)) { $preferredtitle = stripslashes_safe($rss_record->title); } $url = stripslashes_safe($rss_record->url); rss_display_feeds($rssid); rss_get_form($act, $url, $rssid, $preferredtitle); } 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); rss_display_feeds(); print ''. get_string('block_rss_feed_deleted', 'block_rss_client') .''; rss_get_form($act, $url, $rssid, $preferredtitle); } else if ($act == 'view') { // echo $sql; //debug // print_object($res); //debug $rss_record = get_record('block_rss_client', 'id', $rssid); if (!$rss_record->id){ print ''. get_string('block_rss_could_not_find_feed', '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); $rsserror = ob_get_contents(); ob_end_clean(); if (empty($rss_record->preferredtitle)) { $feedtitle = stripslashes_safe($rss_record->preferredtitle); } else { $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 ($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('blog_blog_this', 'blog').''."\n"; print ''. get_string('blog_blog_this', 'blog') .''."\n"; } else { print ' '; } print '
'; print $rss->items[$y]['description'] .'
'."\n"; } } else { rss_display_feeds(); 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".'
'."\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; } ?>