コード例 #1
0
ファイル: rsslib.php プロジェクト: saurabh947/MoodleLearning
/**
 * Generate any blog RSS feed via one function
 *
 * @param stdClass $context The context of the blog for which the feed it being generated
 * @param array    $args    An array of arguements needed to build the feed (contextid, token, componentname, type, id, tagid)
 */
function blog_rss_get_feed($context, $args)
{
    global $CFG, $SITE, $DB;
    if (empty($CFG->bloglevel)) {
        debugging('Blogging disabled on this site, RSS feeds are not available');
        return null;
    }
    if (empty($CFG->enablerssfeeds)) {
        debugging('Sorry, RSS feeds are disabled on this site');
        return '';
    }
    if ($CFG->bloglevel == BLOG_SITE_LEVEL) {
        if (isguestuser()) {
            debugging(get_string('nopermissiontoshow', 'error'));
            return '';
        }
    }
    $sitecontext = get_context_instance(CONTEXT_SYSTEM);
    if (!has_capability('moodle/blog:view', $sitecontext)) {
        return null;
    }
    $type = clean_param($args[3], PARAM_ALPHA);
    $id = clean_param($args[4], PARAM_INT);
    // could be groupid / courseid  / userid  depending on $type
    $tagid = 0;
    if ($args[5] != 'rss.xml') {
        $tagid = clean_param($args[5], PARAM_INT);
    } else {
        $tagid = 0;
    }
    $filename = blog_rss_file_name($type, $id, $tagid);
    if (file_exists($filename)) {
        if (filemtime($filename) + 3600 > time()) {
            return $filename;
            // It's already done so we return cached version
        }
    }
    $courseid = $groupid = $userid = null;
    switch ($type) {
        case 'site':
            //$siteid = $id;
            break;
        case 'course':
            $courseid = $id;
            break;
        case 'group':
            $groupid = $id;
            break;
        case 'user':
            $userid = $id;
            break;
    }
    // Get all the entries from the database
    require_once $CFG->dirroot . '/blog/locallib.php';
    $blogheaders = blog_get_headers($courseid, $groupid, $userid, $tagid);
    $bloglisting = new blog_listing($blogheaders['filters']);
    $blogentries = $bloglisting->get_entries();
    // Now generate an array of RSS items
    if ($blogentries) {
        $items = array();
        foreach ($blogentries as $blog_entry) {
            $item = NULL;
            $item->author = fullname($DB->get_record('user', array('id' => $blog_entry->userid)));
            // TODO: this is slow
            $item->title = $blog_entry->subject;
            $item->pubdate = $blog_entry->lastmodified;
            $item->link = $CFG->wwwroot . '/blog/index.php?entryid=' . $blog_entry->id;
            $summary = file_rewrite_pluginfile_urls($blog_entry->summary, 'pluginfile.php', $sitecontext->id, 'blog', 'post', $blog_entry->id);
            $item->description = format_text($summary, $blog_entry->format);
            if (!empty($CFG->usetags) && ($blogtags = tag_get_tags_array('post', $blog_entry->id))) {
                if ($blogtags) {
                    $item->tags = $blogtags;
                }
                $item->tagscheme = $CFG->wwwroot . '/tag';
            }
            $items[] = $item;
        }
        $articles = rss_add_items($items);
        /// Change structure to XML
    } else {
        $articles = '';
    }
    /// Get header and footer information
    switch ($type) {
        case 'user':
            $info = fullname($DB->get_record('user', array('id' => $id), 'firstname,lastname'));
            break;
        case 'course':
            $info = $DB->get_field('course', 'fullname', array('id' => $id));
            $info = format_string($info, true, array('context' => get_context_instance(CONTEXT_COURSE, $id)));
            break;
        case 'site':
            $info = format_string($SITE->fullname, true, array('context' => get_context_instance(CONTEXT_COURSE, SITEID)));
            break;
        case 'group':
            $group = groups_get_group($id);
            $info = $group->name;
            //TODO: $DB->get_field('groups', 'name', array('id'=>$id))
            break;
        default:
            $info = '';
            break;
    }
    if ($tagid) {
        $info .= ': ' . $DB->get_field('tags', 'text', array('id' => $tagid));
    }
    $header = rss_standard_header(get_string($type . 'blog', 'blog', $info), $CFG->wwwroot . '/blog/index.php', get_string('intro', 'blog'));
    $footer = rss_standard_footer();
    // Save the XML contents to file.
    $rssdata = $header . $articles . $footer;
    if (blog_rss_save_file($type, $id, $tagid, $rssdata)) {
        return $filename;
    } else {
        return false;
        // Couldn't find it or make it
    }
}
コード例 #2
0
ファイル: index.php プロジェクト: lucaboesch/moodle
        echo $OUTPUT->footer();
        die;
    }
    if ($USER->id == $userid) {
        if (!has_capability('moodle/blog:create', $sitecontext) && !has_capability('moodle/blog:view', $sitecontext)) {
            print_error('donothaveblog', 'blog');
        }
    } else {
        if (!has_capability('moodle/blog:view', $sitecontext) || !blog_user_can_view_user_entry($userid)) {
            print_error('cannotviewcourseblog', 'blog');
        }
        $PAGE->navigation->extend_for_user($user);
    }
}
$courseid = empty($courseid) ? SITEID : $courseid;
$blogheaders = blog_get_headers();
$rsscontext = null;
$filtertype = null;
$thingid = null;
$rsstitle = '';
if ($CFG->enablerssfeeds) {
    list($thingid, $rsscontext, $filtertype) = blog_rss_get_params($blogheaders['filters']);
    if (empty($rsscontext)) {
        $rsscontext = context_system::instance();
    }
    $rsstitle = $blogheaders['heading'];
    // Check we haven't started output by outputting an error message.
    if ($PAGE->state == moodle_page::STATE_BEFORE_HEADER) {
        blog_rss_add_http_header($rsscontext, $rsstitle, $filtertype, $thingid, $tagid);
    }
}
コード例 #3
0
ファイル: testbloglib.php プロジェクト: ravivare/moodle-1
 public function test_blog_get_headers_case_10()
 {
     global $CFG, $PAGE, $OUTPUT;
     $blog_headers = blog_get_headers($this->courseid);
     $this->assertNotEqual($blog_headers['heading'], '');
 }
コード例 #4
0
ファイル: locallib.php プロジェクト: nfreear/moodle
 /**
  * Outputs all the blog entries aggregated by this blog listing.
  *
  * @return void
  */
 public function print_entries()
 {
     global $CFG, $USER, $DB, $OUTPUT;
     $sitecontext = get_context_instance(CONTEXT_SYSTEM);
     $page = optional_param('blogpage', 0, PARAM_INT);
     $limit = optional_param('limit', get_user_preferences('blogpagesize', 10), PARAM_INT);
     $start = $page * $limit;
     $morelink = '<br />&nbsp;&nbsp;';
     if ($sqlarray = $this->get_entry_fetch_sql(true)) {
         $totalentries = $DB->count_records_sql($sqlarray['sql'], $sqlarray['params']);
     } else {
         $totalentries = 0;
     }
     $entries = $this->get_entries($start, $limit);
     $pagingbar = new paging_bar($totalentries, $page, $limit, $this->get_baseurl());
     $pagingbar->pagevar = 'blogpage';
     $blogheaders = blog_get_headers();
     echo $OUTPUT->render($pagingbar);
     if (has_capability('moodle/blog:create', $sitecontext)) {
         //the user's blog is enabled and they are viewing their own blog
         $userid = optional_param('userid', null, PARAM_INT);
         if (empty($userid) || !empty($userid) && $userid == $USER->id) {
             $addurl = new moodle_url("{$CFG->wwwroot}/blog/edit.php");
             $urlparams = array('action' => 'add', 'userid' => $userid, 'courseid' => optional_param('courseid', null, PARAM_INT), 'groupid' => optional_param('groupid', null, PARAM_INT), 'modid' => optional_param('modid', null, PARAM_INT), 'tagid' => optional_param('tagid', null, PARAM_INT), 'tag' => optional_param('tag', null, PARAM_INT), 'search' => optional_param('search', null, PARAM_INT));
             foreach ($urlparams as $var => $val) {
                 if (empty($val)) {
                     unset($urlparams[$var]);
                 }
             }
             $addurl->params($urlparams);
             $addlink = '<div class="addbloglink">';
             $addlink .= '<a href="' . $addurl->out() . '">' . $blogheaders['stradd'] . '</a>';
             $addlink .= '</div>';
             echo $addlink;
         }
     }
     if ($entries) {
         $count = 0;
         foreach ($entries as $entry) {
             $blogentry = new blog_entry(null, $entry);
             $blogentry->print_html();
             $count++;
         }
         echo $OUTPUT->render($pagingbar);
         if (!$count) {
             print '<br /><div style="text-align:center">' . get_string('noentriesyet', 'blog') . '</div><br />';
         }
         print $morelink . '<br />' . "\n";
         return;
     }
 }
コード例 #5
0
ファイル: locallib.php プロジェクト: gabrielrosset/moodle
 /**
  * Outputs all the blog entries aggregated by this blog listing.
  *
  * @return void
  */
 public function print_entries()
 {
     global $CFG, $USER, $DB, $OUTPUT, $PAGE;
     $sitecontext = context_system::instance();
     // Blog renderer.
     $output = $PAGE->get_renderer('blog');
     $page = optional_param('blogpage', 0, PARAM_INT);
     $limit = optional_param('limit', get_user_preferences('blogpagesize', 10), PARAM_INT);
     $start = $page * $limit;
     $morelink = '<br />&nbsp;&nbsp;';
     $entries = $this->get_entries($start, $limit);
     $totalentries = $this->count_entries();
     $pagingbar = new paging_bar($totalentries, $page, $limit, $this->get_baseurl());
     $pagingbar->pagevar = 'blogpage';
     $blogheaders = blog_get_headers();
     echo $OUTPUT->render($pagingbar);
     if (has_capability('moodle/blog:create', $sitecontext)) {
         // The user's blog is enabled and they are viewing their own blog.
         $userid = optional_param('userid', null, PARAM_INT);
         if (empty($userid) || !empty($userid) && $userid == $USER->id) {
             $courseid = optional_param('courseid', null, PARAM_INT);
             $modid = optional_param('modid', null, PARAM_INT);
             $addurl = new moodle_url("{$CFG->wwwroot}/blog/edit.php");
             $urlparams = array('action' => 'add', 'userid' => $userid, 'courseid' => $courseid, 'groupid' => optional_param('groupid', null, PARAM_INT), 'modid' => $modid, 'tagid' => optional_param('tagid', null, PARAM_INT), 'tag' => optional_param('tag', null, PARAM_INT), 'search' => optional_param('search', null, PARAM_INT));
             $urlparams = array_filter($urlparams);
             $addurl->params($urlparams);
             $addlink = '<div class="addbloglink">';
             $addlink .= '<a href="' . $addurl->out() . '">' . $blogheaders['stradd'] . '</a>';
             $addlink .= '</div>';
             echo $addlink;
         }
     }
     if ($entries) {
         $count = 0;
         foreach ($entries as $entry) {
             $blogentry = new blog_entry(null, $entry);
             // Get the required blog entry data to render it.
             $blogentry->prepare_render();
             echo $output->render($blogentry);
             $count++;
         }
         echo $OUTPUT->render($pagingbar);
         if (!$count) {
             print '<br /><div style="text-align:center">' . get_string('noentriesyet', 'blog') . '</div><br />';
         }
         print $morelink . '<br />' . "\n";
         return;
     }
 }