Permalink
Browse files

first add of new rss client block. please take a moment to test its f…

…eatures and provide feedback
  • Loading branch information...
1 parent c7e6529 commit 72035d793ef507bf22cc94e170c0e6da3c966830 dhawes committed Dec 14, 2004
@@ -0,0 +1,132 @@
+<?php //$Id$
+
+class block_rss_client extends block_base {
+
+ function init() {
+ $this->title = get_string('block_rss_feeds_title', 'block_rss_client');
+ $this->content_type = BLOCK_TYPE_TEXT;
+ $this->version = 2004112000;
+ }
+
+ function specialization() {
+ if (!empty($this->config) && !empty($this->config->title)) {
+ $this->title = $this->config->title;
+ }
+ }
+
+ function get_content() {
+ global $CFG, $editing;
+
+ if($this->content !== NULL) {
+ return $this->content;
+ }
+
+ $this->content = new stdClass;
+ $this->content->footer = '';
+
+ if (empty($this->instance) || empty($CFG->blog_version)) {
+ // Either we're being asked for content without
+ // an associated instance of the Blog module has never been installed.
+ $this->content->text = '';
+ return $this->content;
+ }
+
+ require_once($CFG->dirroot .'/rss/templib.php');
+ $output = '';
+ $rssid = -1;
+ $display_description = false;
+ if (isset($CFG->block_rss_client_num_entries) && is_numeric($CFG->block_rss_client_num_entries) ) {
+ $shownumentries = intval($CFG->block_rss_client_num_entries);
+ } else {
+ $shownumentries = 5; //default to 5 entries is not specified by admin or instance
+ }
+
+ if (!empty($this->config)) {
+ if (!empty($this->config->rssid)) {
+ $rssid = intval($this->config->rssid);
+ }
+ if (!empty($this->config->display_description)) {
+ $display_description = intval($this->config->display_description);
+ }
+ if (!empty($this->config->shownumentries)) {
+ $shownumentries = intval($this->config->shownumentries);
+ }
+ }
+
+ if ($editing) {
+ $submitters = $CFG->block_rss_client_submitters;
+
+ $isteacher = false;
+ $courseid = '';
+ if ($this->instance->pagetype == MOODLE_PAGE_COURSE) {
+ $isteacher = isteacher($this->instance->pageid);
+ $courseid = $this->instance->pageid;
+ }
+
+ //if the user is an admin or course teacher then allow the user to
+ //assign categories to other uses than personal
+ if ( isadmin() || $submitters == 0 || ($submitters == 2 && $isteacher) ) {
+ $output .= '<center><a href="'. $CFG->wwwroot .'/blocks/rss_client/block_rss_client_action.php?courseid='. $courseid .'">'. get_string('block_rss_feeds_add_edit', 'block_rss_client') .'</a></center><br /><br />';
+ }
+ }
+
+ $rss_record = get_record('block_rss_client', 'id', $rssid);
+ if (isset($rss_record) && isset($rss_record->id)) {
+ $rss = rss_get_feed($rss_record->id, $rss_record->url, $rss_record->type);
+ // print_object($rss); //debug
+
+ if ($shownumentries > 0 && $shownumentries < count($rss->items) ) {
+ $count_to = $shownumentries;
+ } else {
+ $count_to = count($rss->items);
+ }
+
+ for ($y = 0; $y < $count_to; $y++) {
+ if ($rss->items[$y]['title'] == '') {
+// $rss->items[$y]['description'] = blog_unhtmlentities($rss->items[$y]['description']);
+ //can define an additional instance/admin config item for this (20) - max_description_length
+ $rss->items[$y]['title'] = substr(strip_tags($rss->items[$y]['description']), 0, 20) . '...';
+ }
+
+ if ($rss->items[$y]['link'] == '') {
+ $rss->items[$y]['link'] = $rss->items[$y]['guid'];
+ }
+
+ $output .= '<a href="'. $rss->items[$y]['link'] .'" target=_new>'. $rss->items[$y]['title'] . '</a><br />' ."\n";
+
+ if ($display_description){
+ $output .= $rss->items[$y]['description'] . '<br />' ."\n";
+ }
+ }
+
+ $output .= '<br />';
+ // print_object($rss); //debug
+ $feedtitle = get_string('block_rss_remote_news_feed', 'block_rss_client');
+
+ if ( isset($rss->channel['link']) && isset($rss->channel['title']) ) {
+ $feedtitle = '<a href="'. $rss->channel['link'] .'">'. $rss->channel['title'] .'</a>';
+ }
+ }
+
+ //can we reset the title here?
+ if (isset($feedtitle) && $feedtitle != '') {
+ $this->title = $feedtitle;
+ }
+
+ $this->content->text = $output;
+ return $this->content;
+ }
+
+ function instance_allow_multiple() {
+ return true;
+ }
+
+ function has_config() {
+ return true;
+ }
+
+ function instance_allow_config() {
+ return true;
+ }
+}
+?>
@@ -0,0 +1,171 @@
+<?php //$Id$
+
+ require_once('../../config.php');
+ global $USER, $CFG;
+ require($CFG->dirroot .'/rss/templib.php');
+
+ 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($rsstype);
+ optional_variable($item);
+
+ print_header('Add/Edit RSS Feeds','Add/Edit RSS Feeds','Add/Edit RSS Feeds' );
+
+ //check to make sure that the user is allowed to post new feeds
+ if (empty( $CFG->block_rss_client_submitters)) {
+ $CFG->block_rss_client_submitters = 0;
+ }
+ $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 == 0 || ($submitters == 2 && $isteacher) ) ) {
+ error(get_string('noguestpost', 'forum'), $referrer);
+ }
+
+ if ($act == 'none') {
+ rss_display_feeds();
+ rss_get_form($act, $url, $rssid, $rsstype);
+
+ } else if ($act == 'updfeed') {
+ require_variable($url);
+
+ $rss = rss_get_feed($rssid, $url, $rsstype);
+
+ $dataobject->id = $rssid;
+ $dataobject->type = $rsstype;
+ $dataobject->description = addslashes($rss->channel['description']);
+ $dataobject->title = addslashes($rss->channel['title']);
+ $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);
+ print '<strong>'. get_string('block_rss_feed_updated', 'block_rss_client') .'</strong>';
+ rss_get_form($act, $url, $rssid, $rsstype);
+
+ } else if ($act == 'addfeed' ) {
+
+ require_variable($url);
+ require_variable($rsstype);
+
+ $dataobject->userid = $USER->id;
+ $dataobject->type = $rsstype;
+ $dataobject->description = '';
+ $dataobject->title = '';
+ $dataobject->url = addslashes($url);
+
+ $rssid = insert_record('block_rss_client', $dataobject);
+ if (!$rssid){
+ error('There was an error trying to add a new rss feed:'. $url);
+ }
+
+ $rss = rss_get_feed($rssid, $url, $rsstype);
+
+ $dataobject->id = $rssid;
+ if (!empty($rss->channel['description'])) {
+ $dataobject->description = addslashes($rss->channel['description']);
+ }
+ if (!empty($rss->channel['title'])) {
+ $dataobject->title = addslashes($rss->channel['title']);
+ }
+
+ if (!update_record('block_rss_client', $dataobject)) {
+ error('There was an error trying to update rss feed with id:'. $rssid);
+ }
+
+ rss_display_feeds();
+ print '<strong>'. get_string('block_rss_feed_added', 'block_rss_client') .'</strong>';
+ rss_get_form($act, $url, $rssid, $rsstype);
+
+ } 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);
+ $rsstype = $rss_record->type;
+ rss_get_form($act, $url, $rssid, $rsstype);
+
+ } 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 '<strong>'. get_string('block_rss_feed_deleted', 'block_rss_client') .'</strong>';
+ rss_get_form($act, $url, $rssid, $rsstype);
+
+ } else if ($act == 'view') {
+ global $THEME;
+ // echo $sql; //debug
+ // print_object($res); //debug
+ $rss_record = get_record('block_rss_client', 'id', $rssid);
+ if (!$rss_record->id){
+ print '<strong>'. get_string('block_rss_could_not_find_feed', 'block_rss_client') .': '. $rssid .'</strong>';
+ } else {
+ // echo 'rssid = '. $rssid .', url ='. $rss_record->url .', type = '. $rss_record->type;
+ $rss = rss_get_feed($rssid, $rss_record->url, $rss_record->type);
+ // echo print_object($rss);
+ print '<table align=\"center\" width=\"50%\" cellspacing=\"1\">'."\n";
+ print '<tr><td colspan=\"2\"><strong>'. $rss->channel['title'] .'</strong></td></tr>'."\n";
+ for($y=0; $y < count($rss->items); $y++) {
+// $rss->items[$y]['title'] = blog_unhtmlentities($rss->items[$y]['title']);
+ if ($rss->items[$y]['link'] == '') {
+ $rss->items[$y]['link'] = $rss->items[$y]['guid'];
+ }
+
+ if ($rss->items[$y]['title'] == '') {
+ $rss->items[$y]['title'] = '&gt;&gt;';
+ }
+
+ print '<tr bgcolor="'. $THEME->cellcontent .'"><td valign=\"middle\">'."\n";
+ print '<a href="'. $rss->items[$y]['link'] .'" target=_new><strong>'. $rss->items[$y]['title'];
+ print '</strong></a>'."\n";
+ print '</td>'."\n";
+ if (file_exists($CFG->dirroot .'/blog/lib.php')) {
+ print '<td align=\"right\">'."\n";
+ print '<img src="'. $CFG->pixpath .'/blog/blog.gif" alt="'. get_string('blog_blog_this', 'blog').'" title="'. get_string('blog_blog_this', 'blog') .'" border=\"0\" align=\"middle\" />'."\n";
+ print '<a href="'. $CFG->wwwroot .'/blog/blogthis.php?blogid='. $blogid .'&act=use&item='. $y .'&rssid='. $rssid .'"><small><strong>'. get_string('blog_blog_this', 'blog') .'</strong></small></a>'."\n";
+ } else {
+ print '<td>&nbsp;';
+ }
+ print '</td></tr>'."\n";
+// $rss->items[$y]['description'] = blog_unhtmlentities($rss->items[$y]['description']);
+ print '<tr bgcolor="'. $THEME->cellcontent2 .'"><td colspan=2><small>';
+ print $rss->items[$y]['description'] .'</small></td></tr>'."\n";
+ }
+ print '</table>'."\n";
+ }
+ } else {
+ rss_display_feeds();
+ rss_get_form($act, $url, $rssid, $rsstype);
+ }
+
+ print_footer();
+?>
@@ -0,0 +1,41 @@
+<table cellpadding="9" cellspacing="0">
+<tr valign="top">
+ <td align="right"><p>block_rss_client_num_entries:</td>
+ <td>
+ <input name="block" type="hidden" value="<?php echo intval($_REQUEST['block']); ?>" />
+ <input name="block_rss_client_num_entries" type="text" size="5" value="<?php
+ if(isset($CFG->block_rss_client_num_entries)) {
+ p($CFG->block_rss_client_num_entries);
+ } else {
+ p(5);
+ } ?>" />
+ </td>
+ <td>
+ <?php print_string('block_rss_client_num_entries', 'block_rss_client') ?>
+ </td>
+</tr>
+<tr valign="top">
+ <td align="right"><p>block_rss_client_submitters:</td>
+ <td>
+ <?php if (!empty($CFG->block_rss_client_submitters)) {
+ $selected = $CFG->block_rss_client_submitters;
+ } else {
+ $selected = '0';
+ $CFG->block_rss_client_submitters = 0;
+ }
+ $options = array ( '0' => 'All members',
+ '1' => 'Admins only',
+ '2' => 'Admins and teachers');
+
+ choose_from_menu ($options, 'block_rss_client_submitters', $selected);
+ ?>
+ </td>
+ <td>
+ <?php print_string('block_rss_submitters', 'block_rss_client') ?>
+ </td>
+</tr>
+<tr>
+ <td colspan="3" align="center">
+ <input type="submit" value="<?php print_string('savechanges') ?>"></td>
+</tr>
+</table>
Oops, something went wrong.

0 comments on commit 72035d7

Please sign in to comment.