2006-03-10 06:53:01 +00:00
< ? php // $Id$
/**
* file index . php
* index page to view blogs . if no blog is specified then site wide entries are shown
* if a blog id is specified then the latest entries from that blog are shown
*/
2006-04-10 07:27:03 +00:00
require_once ( '../config.php' );
2006-03-10 06:53:01 +00:00
require_once ( $CFG -> dirroot . '/blog/lib.php' );
2006-10-03 21:07:13 +00:00
$id = optional_param ( 'id' , 0 , PARAM_INT );
$start = optional_param ( 'formstart' , 0 , PARAM_INT );
2008-02-22 10:25:36 +00:00
$userid = optional_param ( 'userid' , 0 , PARAM_INT );
2006-10-03 21:07:13 +00:00
$tag = optional_param ( 'tag' , '' , PARAM_NOTAGS );
$tagid = optional_param ( 'tagid' , 0 , PARAM_INT );
2008-02-22 10:25:36 +00:00
$postid = optional_param ( 'postid' , 0 , PARAM_INT );
2009-07-01 08:49:47 +00:00
$listing_type = optional_param ( 'listing_type' , '' , PARAM_ALPHA );
$listing_id = optional_param ( 'listing_id' , null , PARAM_INT );
2006-10-03 21:07:13 +00:00
$edit = optional_param ( 'edit' , - 1 , PARAM_BOOL );
2006-10-06 10:11:52 +00:00
$courseid = optional_param ( 'courseid' , 0 , PARAM_INT ); // needed for user tabs and course tracking
2009-07-01 08:49:47 +00:00
//correct tagid if a text tag is provided as a param
if ( ! empty ( $tag )) { //text tag parameter takes precedence
if ( $tagrec = $DB -> get_record_sql ( " SELECT * FROM { tag} WHERE name LIKE ? " , array ( $tag ))) {
$tagid = $tagrec -> id ;
} else {
unset ( $tagid );
}
}
//add courseid if modid or groupid is specified
if ( ! empty ( $modid ) and empty ( $courseid )) {
$courseid = $DB -> get_field ( 'course_modules' , 'course' , array ( 'id' => $modid ));
}
if ( ! empty ( $groupid ) and empty ( $courseid )) {
$courseid = $DB -> get_field ( 'groups' , 'courseid' , array ( 'id' => $groupid ));
}
2006-03-10 06:53:01 +00:00
2006-10-03 19:21:35 +00:00
if ( empty ( $CFG -> bloglevel )) {
2008-04-23 08:00:05 +00:00
print_error ( 'blogdisable' , 'blog' );
2006-10-03 19:21:35 +00:00
}
2006-08-08 05:13:06 +00:00
2008-04-30 04:46:46 +00:00
$sitecontext = get_context_instance ( CONTEXT_SYSTEM );
2006-10-03 21:07:13 +00:00
// change block edit staus if not guest and logged in
if ( isloggedin () and ! isguest () and $edit != - 1 ) {
2009-05-06 08:59:29 +00:00
$USER -> editing = $edit ;
2006-10-03 21:07:13 +00:00
}
2009-07-01 08:49:47 +00:00
if ( ! $userid and has_capability ( 'moodle/blog:view' , $sitecontext ) and $CFG -> bloglevel > BLOG_USER_LEVEL ) {
if ( $postid ) {
if ( ! $postobject = $DB -> get_record ( 'post' , array ( 'module' => 'blog' , 'id' => $postid ))) {
print_error ( 'nosuchentry' , 'blog' );
2008-04-22 05:56:21 +00:00
}
2009-07-01 08:49:47 +00:00
$userid = $postobject -> userid ;
2006-03-10 06:53:01 +00:00
}
2009-07-01 08:49:47 +00:00
} else if ( ! $userid ) {
// user might have capability to write blogs, but not read blogs at site level
// users might enter this url manually without parameters
$userid = $USER -> id ;
2006-03-10 06:53:01 +00:00
}
2006-10-06 10:11:52 +00:00
/// check access and prepare filters
2006-03-10 06:53:01 +00:00
2009-07-01 08:49:47 +00:00
if ( ! empty ( $modid )) { //check mod access
if ( $CFG -> bloglevel < BLOG_SITE_LEVEL ) {
print_error ( get_string ( 'nocourseblogs' , 'blog' ));
}
if ( ! $mod = $DB -> get_record ( 'course_modules' , array ( 'id' => $modid ))) {
print_error ( get_string ( 'invalidmodid' , 'blog' ));
}
$courseid = $mod -> course ;
}
2006-10-06 10:11:52 +00:00
2009-07-01 08:49:47 +00:00
if (( empty ( $courseid ) ? true : $courseid == SITEID ) and empty ( $userid )) { //check site access
if ( $CFG -> bloglevel < BLOG_SITE_LEVEL ) {
print_error ( 'siteblogdisable' , 'blog' );
}
if ( $CFG -> bloglevel < BLOG_GLOBAL_LEVEL ) {
require_login ();
}
if ( ! has_capability ( 'moodle/blog:view' , $sitecontext )) {
print_error ( 'cannotviewsiteblog' , 'blog' );
}
2006-10-06 10:11:52 +00:00
2009-07-01 08:49:47 +00:00
$COURSE = $DB -> get_record ( 'course' , array ( 'format' => 'site' ));
$courseid = $COURSE -> id ;
}
if ( ! empty ( $courseid )) {
if ( ! $course = $DB -> get_record ( 'course' , array ( 'id' => $courseid ))) {
print_error ( 'invalidcourseid' );
}
$courseid = $course -> id ;
$coursecontext = get_context_instance ( CONTEXT_COURSE , $course -> id );
require_login ( $course );
if ( ! has_capability ( 'moodle/blog:view' , $coursecontext )) {
print_error ( 'cannotviewcourseblog' , 'blog' );
}
} else {
$coursecontext = get_context_instance ( CONTEXT_COURSE , SITEID );
}
if ( ! empty ( $groupid )) {
if ( $CFG -> bloglevel < BLOG_SITE_LEVEL ) {
print_error ( 'groupblogdisable' , 'blog' );
}
2006-10-06 10:11:52 +00:00
2007-04-10 04:26:00 +00:00
// fix for MDL-9268
2009-07-01 08:49:47 +00:00
if ( ! $group = groups_get_group ( $groupid )) { //TODO:check.
print_error ( get_string ( 'invalidgroupid' , 'blog' ));
}
2006-10-06 10:11:52 +00:00
2009-07-01 08:49:47 +00:00
if ( ! $course = $DB -> get_record ( 'course' , array ( 'id' => $group -> courseid ))) {
print_error ( get_string ( 'invalidcourseid' , 'blog' ));
}
2006-10-06 10:11:52 +00:00
2009-07-01 08:49:47 +00:00
$coursecontext = get_context_instance ( CONTEXT_COURSE , $course -> id );
$courseid = $course -> id ;
require_login ( $course );
if ( ! has_capability ( 'moodle/blog:view' , $coursecontext )) {
print_error ( get_string ( 'cannotviewcourseorgroupblog' , 'blog' ));
}
2008-07-05 14:52:39 +00:00
2009-07-01 08:49:47 +00:00
if ( groups_get_course_groupmode ( $course ) == SEPARATEGROUPS and ! has_capability ( 'moodle/site:accessallgroups' , $coursecontext )) {
if ( ! groups_is_member ( $groupid )) {
print_error ( 'notmemberofgroup' );
2006-10-06 10:11:52 +00:00
}
2009-07-01 08:49:47 +00:00
}
}
if ( ! empty ( $user )) {
if ( $CFG -> bloglevel < BLOG_USER_LEVEL ) {
print_error ( 'blogdisable' , 'blog' );
}
if ( ! $user = $DB -> get_record ( 'user' , array ( 'id' => $userid ))) {
print_error ( 'invaliduserid' );
}
if ( $user -> deleted ) {
print_header ();
2009-08-06 08:26:20 +00:00
echo $OUTPUT -> heading ( get_string ( 'userdeleted' ));
2009-08-06 14:22:50 +00:00
echo $OUTPUT -> footer ();
2009-07-01 08:49:47 +00:00
die ;
}
2006-04-18 01:59:13 +00:00
2009-07-01 08:49:47 +00:00
if ( $USER -> id == $userid ) {
if ( ! has_capability ( 'moodle/blog:create' , $sitecontext )
and ! has_capability ( 'moodle/blog:view' , $sitecontext )) {
print_error ( 'donothaveblog' , 'blog' );
2007-10-07 09:27:13 +00:00
}
2009-07-01 08:49:47 +00:00
} else {
$personalcontext = get_context_instance ( CONTEXT_USER , $userid );
2007-10-07 09:27:13 +00:00
2009-07-01 08:49:47 +00:00
if ( ! has_capability ( 'moodle/blog:view' , $sitecontext ) and ! has_capability ( 'moodle/user:readuserblogs' , $personalcontext )) {
print_error ( 'cannotviewuserblog' , 'blog' );
}
2006-10-06 10:11:52 +00:00
2009-07-01 08:49:47 +00:00
if ( ! blog_user_can_view_user_post ( $userid )) {
print_error ( 'cannotviewcourseblog' , 'blog' );
}
}
2006-03-10 06:53:01 +00:00
}
2006-10-06 10:11:52 +00:00
if ( empty ( $courseid )) {
$courseid = SITEID ;
2006-03-10 06:53:01 +00:00
}
2006-03-15 02:02:25 +00:00
2009-07-01 08:49:47 +00:00
if ( ! empty ( $postid )) {
$filters [ 'post' ] = $postid ;
}
if ( ! empty ( $courseid )) {
$filters [ 'course' ] = $courseid ;
}
if ( ! empty ( $modid )) {
$filters [ 'mod' ] = $modid ;
}
if ( ! empty ( $groupid )) {
$filters [ 'group' ] = $groupid ;
}
if ( ! empty ( $userid )) {
$filters [ 'user' ] = $userid ;
}
if ( ! empty ( $tagid )) {
$filters [ 'tag' ] = $tagid ;
}
$PAGE -> title = get_string ( 'blog' );
2006-03-10 06:53:01 +00:00
include ( $CFG -> dirroot . '/blog/header.php' );
2006-10-06 10:11:52 +00:00
blog_print_html_formatted_entries ( $postid , $filtertype , $filterselect , $tagid , $tag );
2006-03-10 06:53:01 +00:00
2006-07-04 06:05:25 +00:00
add_to_log ( $courseid , 'blog' , 'view' , 'index.php?filtertype=' . $filtertype . '&filterselect=' . $filterselect . '&postid=' . $postid . '&tagid=' . $tagid . '&tag=' . $tag , 'view blog entry' );
2006-05-02 02:44:35 +00:00
2006-03-10 06:53:01 +00:00
include ( $CFG -> dirroot . '/blog/footer.php' );
2009-08-06 14:22:50 +00:00
echo $OUTPUT -> footer ();
2006-08-14 07:25:18 +00:00
2006-09-15 14:09:16 +00:00
?>