fix for MDL-9165, admins should see private blogs
This commit is contained in:
+16
-11
@@ -444,12 +444,18 @@
|
||||
}
|
||||
|
||||
if (isloggedin() && !has_capability('moodle/legacy:guest', get_context_instance(CONTEXT_SYSTEM, SITEID), $USER->id, false)) {
|
||||
$permissionsql = '(p.publishstate = \'site\' OR p.publishstate = \'public\' OR p.userid = '.$USER->id.')';
|
||||
$permissionsql = 'AND (p.publishstate = \'site\' OR p.publishstate = \'public\' OR p.userid = '.$USER->id.')';
|
||||
} else {
|
||||
$permissionsql = 'p.publishstate = \'public\'';
|
||||
$permissionsql = 'AND p.publishstate = \'public\'';
|
||||
}
|
||||
|
||||
// fix for MDL-9165, use with readuserblogs capability in a user context can read that user's private blogs
|
||||
// admins can see all blogs regardless of publish states, as described on the help page
|
||||
if (has_capability('moodle/user:readuserblogs', get_context_instance(CONTEXT_SYSTEM, SITEID))) {
|
||||
$permissionsql = '';
|
||||
} else if ($filtertype=='user' && has_capability('moodle/user:readuserblogs', get_context_instance(CONTEXT_USER, $filterselect))) {
|
||||
$permissionsql = '';
|
||||
}
|
||||
|
||||
|
||||
/****************************************
|
||||
* depending on the type, there are 4 *
|
||||
* different possible sqls *
|
||||
@@ -469,7 +475,7 @@
|
||||
.$CFG->prefix.'user u
|
||||
WHERE p.userid = u.id '.$tagquerysql.'
|
||||
AND u.deleted = 0
|
||||
AND '.$permissionsql;
|
||||
'.$permissionsql.$typesql;
|
||||
|
||||
break;
|
||||
|
||||
@@ -483,19 +489,18 @@
|
||||
AND ra.contextid '.get_related_contexts_string($context).'
|
||||
AND u.id = p.userid
|
||||
AND u.deleted = 0
|
||||
AND '.$permissionsql;
|
||||
'.$permissionsql.$typesql;
|
||||
|
||||
break;
|
||||
|
||||
case 'group':
|
||||
|
||||
$SQL = 'SELECT '.$requiredfields.' FROM '.$CFG->prefix.'post p, '.$tagtablesql
|
||||
.$CFG->prefix.'groups_members m, '.$CFG->prefix.'user u
|
||||
WHERE p.userid = m.userid '.$tagquerysql.'
|
||||
.groups_members_from_sql().', '.$CFG->prefix.'user u
|
||||
WHERE '.groups_members_where_sql($filterselect, 'p.userid').'
|
||||
AND u.id = p.userid
|
||||
AND m.groupid = '.$filterselect.'
|
||||
AND u.deleted = 0
|
||||
AND '.$permissionsql;
|
||||
'.$permissionsql.$typesql;
|
||||
|
||||
break;
|
||||
|
||||
@@ -506,7 +511,7 @@
|
||||
WHERE p.userid = u.id '.$tagquerysql.'
|
||||
AND u.id = '.$filterselect.'
|
||||
AND u.deleted = 0
|
||||
AND '.$permissionsql;
|
||||
'.$permissionsql.$typesql;
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user