|
@@ -72,15 +72,16 @@ public static function get_contexts_for_userid(int $userid) : \core_privacy\loca |
|
|
// This block doesn't know who information is stored against unless it |
|
|
// is at the user context. |
|
|
$contextlist = new \core_privacy\local\request\contextlist(); |
|
|
$contextuser = \context_user::instance($userid); |
|
|
|
|
|
$sql = "SELECT contextid FROM {editor_atto_autosave} WHERE userid = :userid OR contextid = :contextid"; |
|
|
$params = [ |
|
|
'userid' => $userid, |
|
|
'contextid' => $contextuser->id, |
|
|
]; |
|
|
$sql = "SELECT |
|
|
c.id |
|
|
FROM {editor_atto_autosave} eas |
|
|
JOIN {context} c ON c.id = eas.contextid |
|
|
WHERE contextlevel = :contextuser AND c.instanceid = :userid"; |
|
|
$contextlist->add_from_sql($sql, ['contextuser' => CONTEXT_USER, 'userid' => $userid]); |
|
|
|
|
|
$contextlist->add_from_sql($sql, $params); |
|
|
$sql = "SELECT contextid FROM {editor_atto_autosave} WHERE userid = :userid"; |
|
|
$contextlist->add_from_sql($sql, ['userid' => $userid]); |
|
|
|
|
|
return $contextlist; |
|
|
} |
|
@@ -95,20 +96,34 @@ public static function export_user_data(approved_contextlist $contextlist) { |
|
|
|
|
|
$user = $contextlist->get_user(); |
|
|
|
|
|
$sql = "SELECT * |
|
|
FROM {editor_atto_autosave} |
|
|
WHERE userid = :userid AND contextid {$contextsql}"; |
|
|
|
|
|
list($contextsql, $contextparams) = $DB->get_in_or_equal($contextlist->get_contextids(), SQL_PARAMS_NAMED); |
|
|
$contextparams['userid'] = $contextlist->get_user()->id; |
|
|
$autosaves = $DB->get_recordset_sql($sql, $contextparams); |
|
|
self::export_autosaves($user, $autosaves); |
|
|
|
|
|
$sql = "SELECT * |
|
|
FROM {editor_atto_autosave} |
|
|
WHERE |
|
|
(userid = :userid AND contextid {$contextsql}) |
|
|
OR |
|
|
(contextid = :usercontext)"; |
|
|
JOIN {context} c ON c.id = eas.contextid |
|
|
WHERE c.id {$contextsql} AND contextlevel = :contextuser AND c.instanceid = :userid"; |
|
|
|
|
|
$usercontext = \context_user::instance($user->id); |
|
|
$contextparams['usercontext'] = $usercontext->id; |
|
|
list($contextsql, $contextparams) = $DB->get_in_or_equal($contextlist->get_contextids(), SQL_PARAMS_NAMED); |
|
|
$contextparams['userid'] = $contextlist->get_user()->id; |
|
|
$contextparams['contextuser'] = CONTEXT_USER; |
|
|
$autosaves = $DB->get_recordset_sql($sql, $contextparams); |
|
|
self::export_autosaves($user, $autosaves); |
|
|
} |
|
|
|
|
|
/** |
|
|
* Export all autosave records in the recordset, and close the recordset when finished. |
|
|
* |
|
|
* @param \stdClass $user The user whose data is to be exported |
|
|
* @param \moodle_recordset $autosaves The recordset containing the data to export |
|
|
*/ |
|
|
protected static function export_autosaves(\stdClass $user, \moodle_recordset $autosaves) { |
|
|
foreach ($autosaves as $autosave) { |
|
|
$context = \context::instance_by_id($autosave->contextid); |
|
|
$subcontext = [ |
|
|