20313b626a0d84cc36008a227d172b9e461f7d7c
[moodle.git] / blocks / blog_recent / block_blog_recent.php
1 <?php
2 // This file is part of Moodle - http://moodle.org/
3 //
4 // Moodle is free software: you can redistribute it and/or modify
5 // it under the terms of the GNU General Public License as published by
6 // the Free Software Foundation, either version 3 of the License, or
7 // (at your option) any later version.
8 //
9 // Moodle is distributed in the hope that it will be useful,
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 // GNU General Public License for more details.
13 //
14 // You should have received a copy of the GNU General Public License
15 // along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
17 /**
18  * Recent Blog Entries Block page.
19  *
20  * @package    block
21  * @subpackage blog_recent
22  * @copyright  2009 Nicolas Connault
23  * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
24  */
26 defined('MOODLE_INTERNAL') || die();
28 /**
29  * This block simply outputs a list of links to recent blog entries, depending on
30  * the context of the current page.
31  */
32 class block_blog_recent extends block_base {
34     function init() {
35         $this->title = get_string('pluginname', 'block_blog_recent');
36         $this->content_type = BLOCK_TYPE_TEXT;
37     }
39     function applicable_formats() {
40         return array('all' => true, 'my' => false, 'tag' => false);
41     }
43     function instance_allow_config() {
44         return true;
45     }
47     function get_content() {
48         global $CFG;
50         if ($this->content !== NULL) {
51             return $this->content;
52         }
54         // verify blog is enabled
55         if (empty($CFG->bloglevel)) {
56             $this->content = new stdClass();
57             $this->content->text = '';
58             if ($this->page->user_is_editing()) {
59                 $this->content->text = get_string('blogdisable', 'blog');
60             }
61             return $this->content;
63         } else if ($CFG->bloglevel < BLOG_GLOBAL_LEVEL and (!isloggedin() or isguestuser())) {
64             $this->content = new stdClass();
65             $this->content->text = '';
66             return $this->content;
67         }
69         require_once($CFG->dirroot .'/blog/lib.php');
70         require_once($CFG->dirroot .'/blog/locallib.php');
72         if (empty($this->config->recentbloginterval)) {
73             $this->config->recentbloginterval = 8400;
74         }
76         if (empty($this->config->numberofrecentblogentries)) {
77             $this->config->numberofrecentblogentries = 4;
78         }
80         $this->content = new stdClass();
81         $this->content->footer = '';
83         $context = $this->page->context;
85         $filter = array();
86         if ($context->contextlevel == CONTEXT_MODULE) {
87             $filter['module'] = $context->instanceid;
88             $a = new stdClass;
89             $a->type = get_string('modulename', $this->page->cm->modname);
90             $strview = get_string('viewallmodentries', 'blog', $a);
91         } else if ($context->contextlevel == CONTEXT_COURSE) {
92             $filter['course'] = $context->instanceid;
93             $a = new stdClass;
94             $a->type = get_string('course');
95             $strview = get_string('viewblogentries', 'blog', $a);
96         } else {
97             $strview = get_string('viewsiteentries', 'blog');
98         }
99         $filter['since'] = $this->config->recentbloginterval;
101         $bloglisting = new blog_listing($filter);
102         $entries = $bloglisting->get_entries(0, $this->config->numberofrecentblogentries, 4);
103         $url = new moodle_url('/blog/index.php', $filter);
105         if (!empty($entries)) {
106             $entrieslist = array();
107             $viewblogurl = new moodle_url('/blog/index.php');
109             foreach ($entries as $entryid => $entry) {
110                 $viewblogurl->param('entryid', $entryid);
111                 $entrylink = html_writer::link($viewblogurl, shorten_text($entry->subject));
112                 $entrieslist[] = $entrylink;
113             }
115             $this->content->text .= html_writer::alist($entrieslist, array('class'=>'list'));
116             $viewallentrieslink = html_writer::link($url, $strview);
117             $this->content->text .= $viewallentrieslink;
118         } else {
119             $this->content->text .= get_string('norecentblogentries', 'block_blog_recent');
120         }
121     }