mirror of
https://github.com/moodle/moodle.git
synced 2025-08-06 09:26:35 +02:00
Merge branch 'MDL-62384-34' of git://github.com/andrewnicols/moodle into MOODLE_34_STABLE
This commit is contained in:
commit
6204ed292e
13 changed files with 125 additions and 59 deletions
|
@ -74,10 +74,8 @@ class provider implements
|
||||||
*/
|
*/
|
||||||
public static function add_contexts_for_userid(contextlist $contextlist, $userid) {
|
public static function add_contexts_for_userid(contextlist $contextlist, $userid) {
|
||||||
$sql = "
|
$sql = "
|
||||||
SELECT ctx.id
|
SELECT l.contextid
|
||||||
FROM {context} ctx
|
FROM {logstore_standard_log} l
|
||||||
JOIN {logstore_standard_log} l
|
|
||||||
ON l.contextid = ctx.id
|
|
||||||
WHERE l.userid = :userid1
|
WHERE l.userid = :userid1
|
||||||
OR l.relateduserid = :userid2
|
OR l.relateduserid = :userid2
|
||||||
OR l.realuserid = :userid3";
|
OR l.realuserid = :userid3";
|
||||||
|
|
|
@ -91,8 +91,10 @@ class provider implements \core_privacy\local\metadata\provider, \core_privacy\l
|
||||||
$sql = "SELECT DISTINCT ctx.id
|
$sql = "SELECT DISTINCT ctx.id
|
||||||
FROM {context} ctx
|
FROM {context} ctx
|
||||||
LEFT JOIN {tool_monitor_rules} mr ON ctx.instanceid = mr.userid AND ctx.contextlevel = :contextuserrule
|
LEFT JOIN {tool_monitor_rules} mr ON ctx.instanceid = mr.userid AND ctx.contextlevel = :contextuserrule
|
||||||
|
AND mr.userid = :useridsubscriptions
|
||||||
LEFT JOIN {tool_monitor_subscriptions} ms ON ctx.instanceid = ms.userid AND ctx.contextlevel = :contextusersub
|
LEFT JOIN {tool_monitor_subscriptions} ms ON ctx.instanceid = ms.userid AND ctx.contextlevel = :contextusersub
|
||||||
WHERE (ms.userid = :useridrules OR mr.userid = :useridsubscriptions)";
|
AND ms.userid = :useridrules
|
||||||
|
WHERE ms.id IS NOT NULL OR mr.id IS NOT NULL";
|
||||||
|
|
||||||
$contextlist = new contextlist();
|
$contextlist = new contextlist();
|
||||||
$contextlist->add_from_sql($sql, $params);
|
$contextlist->add_from_sql($sql, $params);
|
||||||
|
|
|
@ -75,8 +75,7 @@ class provider implements
|
||||||
public static function get_contexts_for_userid(int $userid) : contextlist {
|
public static function get_contexts_for_userid(int $userid) : contextlist {
|
||||||
$sql = "SELECT ctx.id
|
$sql = "SELECT ctx.id
|
||||||
FROM {auth_oauth2_linked_login} ao
|
FROM {auth_oauth2_linked_login} ao
|
||||||
JOIN {user} u ON ao.userid = u.id
|
JOIN {context} ctx ON ctx.instanceid = ao.userid AND ctx.contextlevel = :contextlevel
|
||||||
JOIN {context} ctx ON ctx.instanceid = u.id AND ctx.contextlevel = :contextlevel
|
|
||||||
WHERE ao.userid = :userid";
|
WHERE ao.userid = :userid";
|
||||||
$params = ['userid' => $userid, 'contextlevel' => CONTEXT_USER];
|
$params = ['userid' => $userid, 'contextlevel' => CONTEXT_USER];
|
||||||
$contextlist = new contextlist();
|
$contextlist = new contextlist();
|
||||||
|
|
|
@ -250,11 +250,13 @@ class provider implements
|
||||||
ON tpl.contextid = ctx.id
|
ON tpl.contextid = ctx.id
|
||||||
LEFT JOIN {" . template_cohort::TABLE . "} tch
|
LEFT JOIN {" . template_cohort::TABLE . "} tch
|
||||||
ON tch.templateid = tpl.id
|
ON tch.templateid = tpl.id
|
||||||
|
AND tch.usermodified = :userid2
|
||||||
LEFT JOIN {" . template_competency::TABLE . "} tc
|
LEFT JOIN {" . template_competency::TABLE . "} tc
|
||||||
ON tc.templateid = tpl.id
|
ON tc.templateid = tpl.id
|
||||||
|
AND tc.usermodified = :userid3
|
||||||
WHERE tpl.usermodified = :userid1
|
WHERE tpl.usermodified = :userid1
|
||||||
OR tch.usermodified = :userid2
|
OR tch.id IS NOT NULL
|
||||||
OR tc.usermodified = :userid3";
|
OR tc.id IS NOT NULL";
|
||||||
$params = ['userid1' => $userid, 'userid2' => $userid, 'userid3' => $userid];
|
$params = ['userid1' => $userid, 'userid2' => $userid, 'userid3' => $userid];
|
||||||
$contextlist->add_from_sql($sql, $params);
|
$contextlist->add_from_sql($sql, $params);
|
||||||
|
|
||||||
|
@ -309,12 +311,14 @@ class provider implements
|
||||||
AND ctx.contextlevel = :userlevel
|
AND ctx.contextlevel = :userlevel
|
||||||
LEFT JOIN {" . plan_competency::TABLE . "} pc
|
LEFT JOIN {" . plan_competency::TABLE . "} pc
|
||||||
ON pc.planid = p.id
|
ON pc.planid = p.id
|
||||||
|
AND pc.usermodified = :userid3
|
||||||
LEFT JOIN {" . user_competency_plan::TABLE . "} upc
|
LEFT JOIN {" . user_competency_plan::TABLE . "} upc
|
||||||
ON upc.planid = p.id
|
ON upc.planid = p.id
|
||||||
|
AND upc.usermodified = :userid4
|
||||||
WHERE p.usermodified = :userid1
|
WHERE p.usermodified = :userid1
|
||||||
OR p.reviewerid = :userid2
|
OR p.reviewerid = :userid2
|
||||||
OR pc.usermodified = :userid3
|
OR pc.id IS NOT NULL
|
||||||
OR upc.usermodified = :userid4";
|
OR upc.id IS NOT NULL";
|
||||||
$params = [
|
$params = [
|
||||||
'userlevel' => CONTEXT_USER,
|
'userlevel' => CONTEXT_USER,
|
||||||
'userid1' => $userid,
|
'userid1' => $userid,
|
||||||
|
@ -333,17 +337,19 @@ class provider implements
|
||||||
AND ctx.contextlevel = :userlevel1
|
AND ctx.contextlevel = :userlevel1
|
||||||
LEFT JOIN {" . evidence::TABLE . "} e
|
LEFT JOIN {" . evidence::TABLE . "} e
|
||||||
ON e.usercompetencyid = uc.id
|
ON e.usercompetencyid = uc.id
|
||||||
|
AND (e.usermodified = :userid3 OR e.actionuserid = :userid4)
|
||||||
LEFT JOIN {" . user_evidence::TABLE . "} ue
|
LEFT JOIN {" . user_evidence::TABLE . "} ue
|
||||||
ON ue.userid = ctx.instanceid
|
ON ue.userid = ctx.instanceid
|
||||||
AND ctx.contextlevel = :userlevel2
|
AND ctx.contextlevel = :userlevel2
|
||||||
|
AND ue.usermodified = :userid5
|
||||||
LEFT JOIN {" . user_evidence_competency::TABLE . "} uec
|
LEFT JOIN {" . user_evidence_competency::TABLE . "} uec
|
||||||
ON uec.userevidenceid = ue.id
|
ON uec.userevidenceid = ue.id
|
||||||
|
AND uec.usermodified = :userid6
|
||||||
WHERE uc.usermodified = :userid1
|
WHERE uc.usermodified = :userid1
|
||||||
OR uc.reviewerid = :userid2
|
OR uc.reviewerid = :userid2
|
||||||
OR e.usermodified = :userid3
|
OR e.id IS NOT NULL
|
||||||
OR e.actionuserid = :userid4
|
OR ue.id IS NOT NULL
|
||||||
OR ue.usermodified = :userid5
|
OR uec.id IS NOT NULL";
|
||||||
OR uec.usermodified = :userid6";
|
|
||||||
$params = [
|
$params = [
|
||||||
'userlevel1' => CONTEXT_USER,
|
'userlevel1' => CONTEXT_USER,
|
||||||
'userlevel2' => CONTEXT_USER,
|
'userlevel2' => CONTEXT_USER,
|
||||||
|
@ -367,15 +373,19 @@ class provider implements
|
||||||
LEFT JOIN {" . user_competency::TABLE . "} uc
|
LEFT JOIN {" . user_competency::TABLE . "} uc
|
||||||
ON uc.userid = ctx.instanceid
|
ON uc.userid = ctx.instanceid
|
||||||
AND ctx.contextlevel = :userlevel2
|
AND ctx.contextlevel = :userlevel2
|
||||||
|
AND uc.userid = :userid2
|
||||||
LEFT JOIN {" . user_evidence::TABLE . "} ue
|
LEFT JOIN {" . user_evidence::TABLE . "} ue
|
||||||
ON ue.userid = ctx.instanceid
|
ON ue.userid = ctx.instanceid
|
||||||
AND ctx.contextlevel = :userlevel3
|
AND ctx.contextlevel = :userlevel3
|
||||||
|
AND ue.userid = :userid3
|
||||||
LEFT JOIN {" . user_competency_course::TABLE . "} ucc
|
LEFT JOIN {" . user_competency_course::TABLE . "} ucc
|
||||||
ON ucc.courseid = ctx.instanceid AND ctx.contextlevel = :courselevel
|
ON ucc.courseid = ctx.instanceid
|
||||||
|
AND ctx.contextlevel = :courselevel
|
||||||
|
AND ucc.userid = :userid4
|
||||||
WHERE p.userid = :userid1
|
WHERE p.userid = :userid1
|
||||||
OR uc.userid = :userid2
|
OR uc.id IS NOT NULL
|
||||||
OR ue.userid = :userid3
|
OR ue.id IS NOT NULL
|
||||||
OR ucc.userid = :userid4";
|
OR ucc.id IS NOT NULL";
|
||||||
$params = [
|
$params = [
|
||||||
'userlevel1' => CONTEXT_USER,
|
'userlevel1' => CONTEXT_USER,
|
||||||
'userlevel2' => CONTEXT_USER,
|
'userlevel2' => CONTEXT_USER,
|
||||||
|
|
|
@ -89,8 +89,10 @@ class provider implements \core_privacy\local\metadata\provider, \core_privacy\l
|
||||||
|
|
||||||
$join = "JOIN {course_completion_criteria} {$cccalias} ON {$joinfield} = {$cccalias}.course
|
$join = "JOIN {course_completion_criteria} {$cccalias} ON {$joinfield} = {$cccalias}.course
|
||||||
LEFT JOIN {course_modules_completion} {$cmcalias} ON {$cccalias}.moduleinstance = {$cmcalias}.coursemoduleid
|
LEFT JOIN {course_modules_completion} {$cmcalias} ON {$cccalias}.moduleinstance = {$cmcalias}.coursemoduleid
|
||||||
LEFT JOIN {course_completion_crit_compl} {$ccccalias} ON {$ccccalias}.criteriaid = {$cccalias}.id";
|
AND {$cmcalias}.userid = :{$prefix}_moduleuserid
|
||||||
$where = "{$cmcalias}.userid = :{$prefix}_moduleuserid OR {$ccccalias}.userid = :{$prefix}_courseuserid";
|
LEFT JOIN {course_completion_crit_compl} {$ccccalias} ON {$ccccalias}.criteriaid = {$cccalias}.id
|
||||||
|
AND {$ccccalias}.userid = :{$prefix}_courseuserid";
|
||||||
|
$where = "{$cmcalias}.id IS NOT NULL OR {$ccccalias}.id IS NOT NULL";
|
||||||
$params = ["{$prefix}_moduleuserid" => $userid, "{$prefix}_courseuserid" => $userid];
|
$params = ["{$prefix}_moduleuserid" => $userid, "{$prefix}_courseuserid" => $userid];
|
||||||
|
|
||||||
return [$join, $where, $params];
|
return [$join, $where, $params];
|
||||||
|
|
|
@ -103,8 +103,9 @@ trait completion_creation {
|
||||||
* Complete some of the course completion criteria.
|
* Complete some of the course completion criteria.
|
||||||
*
|
*
|
||||||
* @param stdClass $user The user object
|
* @param stdClass $user The user object
|
||||||
|
* @param bool $modulecompletion If true will complete the activity module completion thing.
|
||||||
*/
|
*/
|
||||||
public function complete_course($user) {
|
public function complete_course($user, $modulecompletion = true) {
|
||||||
$this->getDataGenerator()->enrol_user($user->id, $this->course->id, 'student');
|
$this->getDataGenerator()->enrol_user($user->id, $this->course->id, 'student');
|
||||||
$completion = new \completion_info($this->course);
|
$completion = new \completion_info($this->course);
|
||||||
$criteriacompletions = $completion->get_completions($user->id, COMPLETION_CRITERIA_TYPE_ROLE);
|
$criteriacompletions = $completion->get_completions($user->id, COMPLETION_CRITERIA_TYPE_ROLE);
|
||||||
|
@ -112,7 +113,9 @@ trait completion_creation {
|
||||||
foreach ($criteriacompletions as $ccompletion) {
|
foreach ($criteriacompletions as $ccompletion) {
|
||||||
$criteria->complete($ccompletion);
|
$criteria->complete($ccompletion);
|
||||||
}
|
}
|
||||||
// Set activity as complete.
|
if ($modulecompletion) {
|
||||||
$completion->update_state($this->cm, COMPLETION_COMPLETE, $user->id);
|
// Set activity as complete.
|
||||||
|
$completion->update_state($this->cm, COMPLETION_COMPLETE, $user->id);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -47,7 +47,7 @@ class core_completion_privacy_test extends \core_privacy\tests\provider_testcase
|
||||||
$this->resetAfterTest();
|
$this->resetAfterTest();
|
||||||
$user = $this->getDataGenerator()->create_user();
|
$user = $this->getDataGenerator()->create_user();
|
||||||
$this->create_course_completion();
|
$this->create_course_completion();
|
||||||
$this->complete_course($user);
|
$this->complete_course($user, false);
|
||||||
|
|
||||||
list($join, $where, $params) = \core_completion\privacy\provider::get_course_completion_join_sql($user->id, 'comp', 'c.id');
|
list($join, $where, $params) = \core_completion\privacy\provider::get_course_completion_join_sql($user->id, 'comp', 'c.id');
|
||||||
$sql = "SELECT DISTINCT c.id
|
$sql = "SELECT DISTINCT c.id
|
||||||
|
|
|
@ -127,18 +127,21 @@ class provider implements
|
||||||
$sql = "
|
$sql = "
|
||||||
SELECT DISTINCT ctx.id
|
SELECT DISTINCT ctx.id
|
||||||
FROM {context} ctx
|
FROM {context} ctx
|
||||||
LEFT JOIN {grade_outcomes_history} goh
|
LEFT JOIN {grade_outcomes_history} goh ON goh.loggeduser = :userid1 AND (
|
||||||
ON (goh.courseid > 0 AND goh.courseid = ctx.instanceid AND ctx.contextlevel = :courselevel1)
|
(goh.courseid > 0 AND goh.courseid = ctx.instanceid AND ctx.contextlevel = :courselevel1)
|
||||||
OR ((goh.courseid IS NULL OR goh.courseid < 1) AND ctx.id = :syscontextid)
|
OR ((goh.courseid IS NULL OR goh.courseid < 1) AND ctx.id = :syscontextid)
|
||||||
LEFT JOIN {grade_categories_history} gch
|
)
|
||||||
ON gch.courseid = ctx.instanceid
|
LEFT JOIN {grade_categories_history} gch ON gch.loggeduser = :userid2 AND (
|
||||||
|
gch.courseid = ctx.instanceid
|
||||||
AND ctx.contextlevel = :courselevel2
|
AND ctx.contextlevel = :courselevel2
|
||||||
LEFT JOIN {grade_items_history} gih
|
)
|
||||||
ON gih.courseid = ctx.instanceid
|
LEFT JOIN {grade_items_history} gih ON gih.loggeduser = :userid3 AND (
|
||||||
|
gih.courseid = ctx.instanceid
|
||||||
AND ctx.contextlevel = :courselevel3
|
AND ctx.contextlevel = :courselevel3
|
||||||
WHERE goh.loggeduser = :userid1
|
)
|
||||||
OR gch.loggeduser = :userid2
|
WHERE goh.id IS NOT NULL
|
||||||
OR gih.loggeduser = :userid3";
|
OR gch.id IS NOT NULL
|
||||||
|
OR gih.id IS NOT NULL";
|
||||||
$params = [
|
$params = [
|
||||||
'syscontextid' => SYSCONTEXTID,
|
'syscontextid' => SYSCONTEXTID,
|
||||||
'courselevel1' => CONTEXT_COURSE,
|
'courselevel1' => CONTEXT_COURSE,
|
||||||
|
@ -159,13 +162,16 @@ class provider implements
|
||||||
AND ctx.contextlevel = :courselevel
|
AND ctx.contextlevel = :courselevel
|
||||||
LEFT JOIN {grade_grades} gg
|
LEFT JOIN {grade_grades} gg
|
||||||
ON gg.itemid = gi.id
|
ON gg.itemid = gi.id
|
||||||
|
AND (gg.userid = :userid1 OR gg.usermodified = :userid2)
|
||||||
LEFT JOIN {grade_grades_history} ggh
|
LEFT JOIN {grade_grades_history} ggh
|
||||||
ON ggh.itemid = gi.id
|
ON ggh.itemid = gi.id
|
||||||
WHERE gg.userid = :userid1
|
AND (
|
||||||
OR gg.usermodified = :userid2
|
ggh.userid = :userid3
|
||||||
OR ggh.userid = :userid3
|
|
||||||
OR ggh.loggeduser = :userid4
|
OR ggh.loggeduser = :userid4
|
||||||
OR ggh.usermodified = :userid5";
|
OR ggh.usermodified = :userid5
|
||||||
|
)
|
||||||
|
WHERE gg.id IS NOT NULL
|
||||||
|
OR ggh.id IS NOT NULL";
|
||||||
$params = [
|
$params = [
|
||||||
'courselevel' => CONTEXT_COURSE,
|
'courselevel' => CONTEXT_COURSE,
|
||||||
'userid1' => $userid,
|
'userid1' => $userid,
|
||||||
|
@ -184,14 +190,14 @@ class provider implements
|
||||||
JOIN {grade_grades_history} ggh
|
JOIN {grade_grades_history} ggh
|
||||||
ON ctx.contextlevel = :userlevel
|
ON ctx.contextlevel = :userlevel
|
||||||
AND ggh.userid = ctx.instanceid
|
AND ggh.userid = ctx.instanceid
|
||||||
LEFT JOIN {grade_items} gi
|
|
||||||
ON ggh.itemid = gi.id
|
|
||||||
WHERE gi.id IS NULL
|
|
||||||
AND (
|
AND (
|
||||||
ggh.userid = :userid1
|
ggh.userid = :userid1
|
||||||
OR ggh.usermodified = :userid2
|
OR ggh.usermodified = :userid2
|
||||||
OR ggh.loggeduser = :userid3
|
OR ggh.loggeduser = :userid3
|
||||||
)";
|
)
|
||||||
|
LEFT JOIN {grade_items} gi
|
||||||
|
ON ggh.itemid = gi.id
|
||||||
|
WHERE gi.id IS NULL";
|
||||||
$params = [
|
$params = [
|
||||||
'userlevel' => CONTEXT_USER,
|
'userlevel' => CONTEXT_USER,
|
||||||
'userid1' => $userid,
|
'userid1' => $userid,
|
||||||
|
|
|
@ -139,15 +139,53 @@ class provider implements metadataprovider, pluginprovider, preference_provider
|
||||||
JOIN {modules} m ON cm.module = m.id AND m.name = :modulename
|
JOIN {modules} m ON cm.module = m.id AND m.name = :modulename
|
||||||
JOIN {assign} a ON cm.instance = a.id
|
JOIN {assign} a ON cm.instance = a.id
|
||||||
JOIN {context} ctx ON cm.id = ctx.instanceid AND ctx.contextlevel = :contextlevel
|
JOIN {context} ctx ON cm.id = ctx.instanceid AND ctx.contextlevel = :contextlevel
|
||||||
LEFT JOIN {assign_grades} ag ON a.id = ag.assignment
|
JOIN {assign_grades} ag ON a.id = ag.assignment AND (ag.userid = :userid OR ag.grader = :graderid)";
|
||||||
LEFT JOIN {assign_overrides} ao ON a.id = ao.assignid
|
|
||||||
LEFT JOIN {assign_submission} asn ON a.id = asn.assignment
|
global $DB;
|
||||||
LEFT JOIN {assign_user_flags} auf ON a.id = auf.assignment
|
|
||||||
LEFT JOIN {assign_user_mapping} aum ON a.id = aum.assignment
|
|
||||||
WHERE ag.userid = :userid OR ag.grader = :graderid OR ao.userid = :aouserid
|
|
||||||
OR asn.userid = :asnuserid OR auf.userid = :aufuserid OR aum.userid = :aumuserid";
|
|
||||||
$contextlist = new contextlist();
|
$contextlist = new contextlist();
|
||||||
$contextlist->add_from_sql($sql, $params);
|
$contextlist->add_from_sql($sql, $params);
|
||||||
|
|
||||||
|
$sql = "SELECT ctx.id
|
||||||
|
FROM {course_modules} cm
|
||||||
|
JOIN {modules} m ON cm.module = m.id AND m.name = :modulename
|
||||||
|
JOIN {assign} a ON cm.instance = a.id
|
||||||
|
JOIN {context} ctx ON cm.id = ctx.instanceid AND ctx.contextlevel = :contextlevel
|
||||||
|
JOIN {assign_overrides} ao ON a.id = ao.assignid
|
||||||
|
WHERE ao.userid = :aouserid";
|
||||||
|
|
||||||
|
$contextlist->add_from_sql($sql, $params);
|
||||||
|
|
||||||
|
$sql = "SELECT ctx.id
|
||||||
|
FROM {course_modules} cm
|
||||||
|
JOIN {modules} m ON cm.module = m.id AND m.name = :modulename
|
||||||
|
JOIN {assign} a ON cm.instance = a.id
|
||||||
|
JOIN {context} ctx ON cm.id = ctx.instanceid AND ctx.contextlevel = :contextlevel
|
||||||
|
JOIN {assign_submission} asn ON a.id = asn.assignment
|
||||||
|
WHERE asn.userid = :asnuserid";
|
||||||
|
|
||||||
|
$contextlist->add_from_sql($sql, $params);
|
||||||
|
|
||||||
|
$sql = "SELECT ctx.id
|
||||||
|
FROM {course_modules} cm
|
||||||
|
JOIN {modules} m ON cm.module = m.id AND m.name = :modulename
|
||||||
|
JOIN {assign} a ON cm.instance = a.id
|
||||||
|
JOIN {context} ctx ON cm.id = ctx.instanceid AND ctx.contextlevel = :contextlevel
|
||||||
|
JOIN {assign_user_flags} auf ON a.id = auf.assignment
|
||||||
|
WHERE auf.userid = :aufuserid";
|
||||||
|
|
||||||
|
$contextlist->add_from_sql($sql, $params);
|
||||||
|
|
||||||
|
$sql = "SELECT ctx.id
|
||||||
|
FROM {course_modules} cm
|
||||||
|
JOIN {modules} m ON cm.module = m.id AND m.name = :modulename
|
||||||
|
JOIN {assign} a ON cm.instance = a.id
|
||||||
|
JOIN {context} ctx ON cm.id = ctx.instanceid AND ctx.contextlevel = :contextlevel
|
||||||
|
JOIN {assign_user_mapping} aum ON a.id = aum.assignment
|
||||||
|
WHERE aum.userid = :aumuserid";
|
||||||
|
|
||||||
|
$contextlist->add_from_sql($sql, $params);
|
||||||
|
|
||||||
manager::plugintype_class_callback('assignfeedback', self::ASSIGNFEEDBACK_INTERFACE,
|
manager::plugintype_class_callback('assignfeedback', self::ASSIGNFEEDBACK_INTERFACE,
|
||||||
'get_context_for_userid_within_feedback', [$userid, $contextlist]);
|
'get_context_for_userid_within_feedback', [$userid, $contextlist]);
|
||||||
manager::plugintype_class_callback('assignsubmission', self::ASSIGNSUBMISSION_INTERFACE,
|
manager::plugintype_class_callback('assignsubmission', self::ASSIGNSUBMISSION_INTERFACE,
|
||||||
|
|
|
@ -105,9 +105,10 @@ class provider implements
|
||||||
INNER JOIN {modules} m ON m.id = cm.module AND m.name = :modname
|
INNER JOIN {modules} m ON m.id = cm.module AND m.name = :modname
|
||||||
INNER JOIN {data} d ON d.id = cm.instance
|
INNER JOIN {data} d ON d.id = cm.instance
|
||||||
INNER JOIN {data_records} dr ON dr.dataid = d.id
|
INNER JOIN {data_records} dr ON dr.dataid = d.id
|
||||||
LEFT JOIN {comments} com ON com.commentarea=:commentarea and com.itemid = dr.id
|
LEFT JOIN {comments} com ON com.commentarea=:commentarea and com.itemid = dr.id AND com.userid = :userid1
|
||||||
LEFT JOIN {rating} r ON r.contextid = c.id AND r.itemid = dr.id AND r.component = :moddata AND r.ratingarea = :ratingarea
|
LEFT JOIN {rating} r ON r.contextid = c.id AND r.itemid = dr.id AND r.component = :moddata
|
||||||
WHERE dr.userid = :userid OR com.userid = :userid1 OR r.userid = :userid2";
|
AND r.ratingarea = :ratingarea AND r.userid = :userid2
|
||||||
|
WHERE dr.userid = :userid OR com.id IS NOT NULL OR r.id IS NOT NULL";
|
||||||
|
|
||||||
$params = [
|
$params = [
|
||||||
'modname' => 'data',
|
'modname' => 'data',
|
||||||
|
|
|
@ -133,19 +133,24 @@ class provider implements
|
||||||
AND ctx.contextlevel = :modulelevel
|
AND ctx.contextlevel = :modulelevel
|
||||||
LEFT JOIN {lesson_attempts} la
|
LEFT JOIN {lesson_attempts} la
|
||||||
ON la.lessonid = l.id
|
ON la.lessonid = l.id
|
||||||
|
AND la.userid = :userid1
|
||||||
LEFT JOIN {lesson_branch} lb
|
LEFT JOIN {lesson_branch} lb
|
||||||
ON lb.lessonid = l.id
|
ON lb.lessonid = l.id
|
||||||
|
AND lb.userid = :userid2
|
||||||
LEFT JOIN {lesson_grades} lg
|
LEFT JOIN {lesson_grades} lg
|
||||||
ON lg.lessonid = l.id
|
ON lg.lessonid = l.id
|
||||||
|
AND lg.userid = :userid3
|
||||||
LEFT JOIN {lesson_overrides} lo
|
LEFT JOIN {lesson_overrides} lo
|
||||||
ON lo.lessonid = l.id
|
ON lo.lessonid = l.id
|
||||||
|
AND lo.userid = :userid4
|
||||||
LEFT JOIN {lesson_timer} lt
|
LEFT JOIN {lesson_timer} lt
|
||||||
ON lt.lessonid = l.id
|
ON lt.lessonid = l.id
|
||||||
WHERE la.userid = :userid1
|
AND lt.userid = :userid5
|
||||||
OR lb.userid = :userid2
|
WHERE la.id IS NOT NULL
|
||||||
OR lg.userid = :userid3
|
OR lb.id IS NOT NULL
|
||||||
OR lt.userid = :userid4
|
OR lg.id IS NOT NULL
|
||||||
OR lo.userid = :userid5";
|
OR lo.id IS NOT NULL
|
||||||
|
OR lt.id IS NOT NULL";
|
||||||
|
|
||||||
$params = [
|
$params = [
|
||||||
'lesson' => 'lesson',
|
'lesson' => 'lesson',
|
||||||
|
|
|
@ -148,7 +148,8 @@ class provider implements
|
||||||
" . $qubaid->from . "
|
" . $qubaid->from . "
|
||||||
WHERE (
|
WHERE (
|
||||||
qa.userid = :qauserid OR
|
qa.userid = :qauserid OR
|
||||||
" . $qubaid->where() . "
|
" . $qubaid->where() . " OR
|
||||||
|
qo.id IS NOT NULL
|
||||||
) AND qa.preview = 0
|
) AND qa.preview = 0
|
||||||
";
|
";
|
||||||
|
|
||||||
|
|
|
@ -139,12 +139,13 @@ class provider implements
|
||||||
|
|
||||||
// Join the rating table with the specified alias and the relevant join params.
|
// Join the rating table with the specified alias and the relevant join params.
|
||||||
$join = "LEFT JOIN {rating} {$alias} ON ";
|
$join = "LEFT JOIN {rating} {$alias} ON ";
|
||||||
|
$join .= "{$alias}.userid = :ratinguserid{$count} AND ";
|
||||||
$join .= "{$alias}.component = :ratingcomponent{$count} AND ";
|
$join .= "{$alias}.component = :ratingcomponent{$count} AND ";
|
||||||
$join .= "{$alias}.ratingarea = :ratingarea{$count} AND ";
|
$join .= "{$alias}.ratingarea = :ratingarea{$count} AND ";
|
||||||
$join .= "{$alias}.itemid = {$itemidjoin}";
|
$join .= "{$alias}.itemid = {$itemidjoin}";
|
||||||
|
|
||||||
// Match against the specified user.
|
// Match against the specified user.
|
||||||
$userwhere = "{$alias}.userid = :ratinguserid{$count}";
|
$userwhere = "{$alias}.id IS NOT NULL";
|
||||||
|
|
||||||
$params = [
|
$params = [
|
||||||
'ratingcomponent' . $count => $component,
|
'ratingcomponent' . $count => $component,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue