Commit 4c5346d6 authored by Khalani's avatar Khalani
Browse files

plagarism data removed + provider bugs fixes and delete data functionality.

parent 98ce3595
Pipeline #10984 passed with stage
This commit is part of merge request !2. Comments created here will be created in the context of that merge request.
Showing with 33 additions and 71 deletions
+33 -71
No preview for this file type
...@@ -53,8 +53,8 @@ class provider implements \core_privacy\local\metadata\provider, ...@@ -53,8 +53,8 @@ class provider implements \core_privacy\local\metadata\provider,
$collection->add_database_table( $collection->add_database_table(
'assignsubmission_dta_summary', 'assignsubmission_dta_summary',
[ [
'assignmentid' => 'privacy:metadata:assignsubmission_dta_summary:assignmentid', 'assignment_id' => 'privacy:metadata:assignsubmission_dta_summary:assignmentid',
'submissionid' => 'privacy:metadata:assignsubmission_dta_summary:submissionid', 'submission_id' => 'privacy:metadata:assignsubmission_dta_summary:submissionid',
'timestamp' => 'privacy:metadata:assignsubmission_dta_summary:timestamp', 'timestamp' => 'privacy:metadata:assignsubmission_dta_summary:timestamp',
'global_stacktrace' => 'privacy:metadata:assignsubmission_dta_summary:global_stacktrace', 'global_stacktrace' => 'privacy:metadata:assignsubmission_dta_summary:global_stacktrace',
'successful_competencies' => 'privacy:metadata:assignsubmission_dta_summary:successful_competencies', 'successful_competencies' => 'privacy:metadata:assignsubmission_dta_summary:successful_competencies',
...@@ -67,8 +67,8 @@ class provider implements \core_privacy\local\metadata\provider, ...@@ -67,8 +67,8 @@ class provider implements \core_privacy\local\metadata\provider,
$collection->add_database_table( $collection->add_database_table(
'assignsubmission_dta_result', 'assignsubmission_dta_result',
[ [
'assignmentid' => 'privacy:metadata:assignsubmission_dta_summary:assignmentid', 'assignment_id' => 'privacy:metadata:assignsubmission_dta_summary:assignmentid',
'submissionid' => 'privacy:metadata:assignsubmission_dta_summary:submissionid', 'submission_id' => 'privacy:metadata:assignsubmission_dta_summary:submissionid',
'package_name' => 'privacy:metadata:assignsubmission_dta_result:package_name', 'package_name' => 'privacy:metadata:assignsubmission_dta_result:package_name',
'class_name' => 'privacy:metadata:assignsubmission_dta_result:class_name', 'class_name' => 'privacy:metadata:assignsubmission_dta_result:class_name',
'name' => 'privacy:metadata:assignsubmission_dta_result:name', 'name' => 'privacy:metadata:assignsubmission_dta_result:name',
...@@ -86,8 +86,8 @@ class provider implements \core_privacy\local\metadata\provider, ...@@ -86,8 +86,8 @@ class provider implements \core_privacy\local\metadata\provider,
$collection->add_database_table( $collection->add_database_table(
'assignsubmission_dta_recommendations', 'assignsubmission_dta_recommendations',
[ [
'assignmentid' => 'privacy:metadata:assignsubmission_dta_summary:assignmentid', 'assignment_id' => 'privacy:metadata:assignsubmission_dta_summary:assignmentid',
'submissionid' => 'privacy:metadata:assignsubmission_dta_summary:submissionid', 'submission_id' => 'privacy:metadata:assignsubmission_dta_summary:submissionid',
'topic' => 'privacy:metadata:assignsubmission_dta_recommendations:topic', 'topic' => 'privacy:metadata:assignsubmission_dta_recommendations:topic',
'exercise_name' => 'privacy:metadata:assignsubmission_dta_recommendations:exercise_name', 'exercise_name' => 'privacy:metadata:assignsubmission_dta_recommendations:exercise_name',
'url' => 'privacy:metadata:assignsubmission_dta_recommendations:url', 'url' => 'privacy:metadata:assignsubmission_dta_recommendations:url',
...@@ -98,8 +98,8 @@ class provider implements \core_privacy\local\metadata\provider, ...@@ -98,8 +98,8 @@ class provider implements \core_privacy\local\metadata\provider,
); );
$collection->add_external_location_link('dta_backend', [ $collection->add_external_location_link('dta_backend', [
'assignmentid' => 'privacy:metadata:assignsubmission_dta_summary:assignmentid', 'assignment_id' => 'privacy:metadata:assignsubmission_dta_summary:assignmentid',
'submissionid' => 'privacy:metadata:assignsubmission_dta_summary:submissionid', 'submission_id' => 'privacy:metadata:assignsubmission_dta_summary:submissionid',
'submissioncontent' => 'privacy:metadata:core_files', 'submissioncontent' => 'privacy:metadata:core_files',
], ],
'privacy:metadata:dta_backend' 'privacy:metadata:dta_backend'
...@@ -151,8 +151,9 @@ class provider implements \core_privacy\local\metadata\provider, ...@@ -151,8 +151,9 @@ class provider implements \core_privacy\local\metadata\provider,
} }
$user = new \stdClass(); $user = new \stdClass();
$assign = $exportdata->get_assign(); $assign = $exportdata->get_assign();
$plugin = $assign->get_plugin_by_type('assignsubmission', 'file');
$submission = $exportdata->get_pluginobject(); $submission = $exportdata->get_pluginobject();
$files = get_files($submission, $user); $files = $plugin->get_files($exportdata->get_pluginobject(), $user);
foreach ($files as $file) { foreach ($files as $file) {
$userid = $exportdata->get_pluginobject()->userid; $userid = $exportdata->get_pluginobject()->userid;
$dtaresultsummary = dta_db_utils::dta_get_result_summary_from_database($assign->id, $submission->id); $dtaresultsummary = dta_db_utils::dta_get_result_summary_from_database($assign->id, $submission->id);
...@@ -160,15 +161,6 @@ class provider implements \core_privacy\local\metadata\provider, ...@@ -160,15 +161,6 @@ class provider implements \core_privacy\local\metadata\provider,
writer::with_context($exportdata->get_context())->export_file($exportdata->get_subcontext(), $file) writer::with_context($exportdata->get_context())->export_file($exportdata->get_subcontext(), $file)
// DTA result. // DTA result.
->export_related_data($dtaresultsummary); ->export_related_data($dtaresultsummary);
// Plagiarism data.
$coursecontext = $context->get_course_context();
\core_plagiarism\privacy\provider::export_plagiarism_user_data($userid, $context, $exportdata->get_subcontext(), [
'cmid' => $context->instanceid,
'course' => $coursecontext->instanceid,
'userid' => $userid,
'file' => $file,
]);
} }
} }
...@@ -180,18 +172,16 @@ class provider implements \core_privacy\local\metadata\provider, ...@@ -180,18 +172,16 @@ class provider implements \core_privacy\local\metadata\provider,
public static function delete_submission_for_context(assign_plugin_request_data $requestdata) { public static function delete_submission_for_context(assign_plugin_request_data $requestdata) {
global $DB; global $DB;
\core_plagiarism\privacy\provider::delete_plagiarism_for_context($requestdata->get_context());
$fs = get_file_storage(); $fs = get_file_storage();
$fs->delete_area_files($requestdata->get_context()->id, 'assignsubmission_dta', ASSIGNSUBMISSION_DTA_FILEAREA_SUBMISSION); $fs->delete_area_files($requestdata->get_context()->id, 'assignsubmission_dta', \assignsubmission_dta\privacy\provider::ASSIGNSUBMISSION_DTA_FILEAREA_SUBMISSION);
$assignmentid = $requestdata->get_assign()->get_instance()->id; $assignmentid = $requestdata->get_assign()->get_instance()->id;
// Delete records from assignsubmission_dta tables. // Delete records from assignsubmission_dta tables.
$DB->delete_records('assignsubmission_dta_result', ['assignmentid' => $assignmentid]); $DB->delete_records('assignsubmission_dta_result', ['assignment_id' => $assignmentid]);
$DB->delete_records('assignsubmission_dta_summary', ['assignmentid' => $assignmentid]); $DB->delete_records('assignsubmission_dta_summary', ['assignment_id' => $assignmentid]);
$DB->delete_records('assignsubmission_dta_recommendations', ['assignmentid' => $assignmentid]); $DB->delete_records('assignsubmission_dta_recommendations', ['assignment_id' => $assignmentid]);
} }
/** /**
...@@ -202,27 +192,25 @@ class provider implements \core_privacy\local\metadata\provider, ...@@ -202,27 +192,25 @@ class provider implements \core_privacy\local\metadata\provider,
public static function delete_submission_for_userid(assign_plugin_request_data $deletedata) { public static function delete_submission_for_userid(assign_plugin_request_data $deletedata) {
global $DB; global $DB;
\core_plagiarism\privacy\provider::delete_plagiarism_for_user($deletedata->get_user()->id, $deletedata->get_context());
$assignmentid = $deletedata->get_assign()->get_instance()->id; $assignmentid = $deletedata->get_assign()->get_instance()->id;
$submissionid = $deletedata->get_pluginobject()->id; $submissionid = $deletedata->get_pluginobject()->id;
$fs = get_file_storage(); $fs = get_file_storage();
$fs->delete_area_files($deletedata->get_context()->id, 'assignsubmission_dta', ASSIGNSUBMISSION_DTA_FILEAREA_SUBMISSION, $fs->delete_area_files($deletedata->get_context()->id, 'assignsubmission_dta', \assignsubmission_dta\privacy\provider::ASSIGNSUBMISSION_DTA_FILEAREA_SUBMISSION,
$submissionid); $submissionid);
// Delete records from assignsubmission_dta tables. Also possible with a list as below. // Delete records from assignsubmission_dta tables. Also possible with a list as below.
$DB->delete_records('assignsubmission_dta_result', [ $DB->delete_records('assignsubmission_dta_result', [
'assignmentid' => $assignmentid, 'assignment_id' => $assignmentid,
'submissionid' => $submissionid, 'submission_id' => $submissionid,
]); ]);
$DB->delete_records('assignsubmission_dta_summary', [ $DB->delete_records('assignsubmission_dta_summary', [
'assignmentid' => $assignmentid, 'assignment_id' => $assignmentid,
'submissionid' => $submissionid, 'submission_id' => $submissionid,
]); ]);
$DB->delete_records('assignsubmission_dta_recommendations', [ $DB->delete_records('assignsubmission_dta_recommendations', [
'assignmentid' => $assignmentid, 'assignment_id' => $assignmentid,
'submissionid' => $submissionid, 'submission_id' => $submissionid,
]); ]);
} }
...@@ -238,49 +226,17 @@ class provider implements \core_privacy\local\metadata\provider, ...@@ -238,49 +226,17 @@ class provider implements \core_privacy\local\metadata\provider,
public static function delete_submissions(assign_plugin_request_data $deletedata) { public static function delete_submissions(assign_plugin_request_data $deletedata) {
global $DB; global $DB;
\core_plagiarism\privacy\provider::delete_plagiarism_for_users($deletedata->get_userids(), $deletedata->get_context());
if (empty($deletedata->get_submissionids())) { if (empty($deletedata->get_submissionids())) {
return; return;
} }
$fs = get_file_storage(); $fs = get_file_storage();
list($sql, $params) = $DB->get_in_or_equal($deletedata->get_submissionids(), SQL_PARAMS_NAMED); list($sql, $params) = $DB->get_in_or_equal($deletedata->get_submissionids(), SQL_PARAMS_NAMED);
$fs->delete_area_files_select($deletedata->get_context()->id, 'assignsubmission_file', ASSIGNSUBMISSION_FILE_FILEAREA, $fs->delete_area_files_select($deletedata->get_context()->id, 'assignsubmission_file', \assignsubmission_dta\privacy\provider::ASSIGNSUBMISSION_DTA_FILEAREA_SUBMISSION_SUBMISSION,
$sql, $params); $sql, $params);
$params['assignid'] = $deletedata->get_assignid(); $params['assignid'] = $deletedata->get_assignid();
$DB->delete_records_select('assignsubmission_dta_result', "assignmentid = :assignid AND submissionid $sql", $params); $DB->delete_records_select('assignsubmission_dta_result', "assignment_id = :assignid AND submissionid $sql", $params);
$DB->delete_records_select('assignsubmission_dta_summary', "assignmentid = :assignid AND submissionid $sql", $params); $DB->delete_records_select('assignsubmission_dta_summary', "assignment_id = :assignid AND submissionid $sql", $params);
$DB->delete_records_select('assignsubmission_dta_recommendations', "assignmentid = :assignid AND submissionid $sql", $params); $DB->delete_records_select('assignsubmission_dta_recommendations', "assignment_id = :assignid AND submissionid $sql", $params);
} }
/**
* Produce a list of files suitable for export that represent this feedback or submission
*
* @param stdClass $submission The submission
* @param stdClass $user The user record - unused
* @return array - return an array of files indexed by filename
*/
public function get_files(stdClass $submission, stdClass $user) {
$result = [];
$fs = get_file_storage();
$files = $fs->get_area_files($this->assignment->get_context()->id,
'assignsubmission_file',
ASSIGNSUBMISSION_DTA_FILEAREA_SUBMISSION,
$submission->id,
'timemodified',
false);
foreach ($files as $file) {
// Do we return the full folder path or just the file name?
if (isset($submission->exportfullpath) && $submission->exportfullpath == false) {
$result[$file->get_filename()] = $file;
} else {
$result[$file->get_filepath().$file->get_filename()] = $file;
}
}
return $result;
}
} }
...@@ -163,6 +163,12 @@ $string["privacy:metadata:assignsubmission_dta_result:column_number"] = "Column ...@@ -163,6 +163,12 @@ $string["privacy:metadata:assignsubmission_dta_result:column_number"] = "Column
$string["privacy:metadata:assignsubmission_dta_result:line_number"] = "Line number of failed individual compilation or test"; $string["privacy:metadata:assignsubmission_dta_result:line_number"] = "Line number of failed individual compilation or test";
$string["privacy:metadata:assignsubmission_dta_result:position"] = "Position of failed individual compilation or test"; $string["privacy:metadata:assignsubmission_dta_result:position"] = "Position of failed individual compilation or test";
$string["privacy:metadata:assignsubmission_dta_result"] = "Individual Dockerized Test Agent (DTA) results"; $string["privacy:metadata:assignsubmission_dta_result"] = "Individual Dockerized Test Agent (DTA) results";
$string["privacy:metadata:assignsubmission_dta_recommendations:topic"] = "Topic of recommendation";
$string["privacy:metadata:assignsubmission_dta_recommendations:exercise_name"] = "Name of exercise";
$string["privacy:metadata:assignsubmission_dta_recommendations:url"] = "Url of recommended exercise";
$string["privacy:metadata:assignsubmission_dta_recommendations:difficulty"] = "Difficulty level of exercise";
$string["privacy:metadata:assignsubmission_dta_recommendations:score"] = "Score achieved in exercise";
$string["privacy:metadata:assignsubmission_dta_recommendations"] = "Individual Dockerized Test Agent (DTA) recommendations";
$string["privacy:metadata:dta_backend"] = "Dockerized Test Agent (DTA) backend ReST web service"; $string["privacy:metadata:dta_backend"] = "Dockerized Test Agent (DTA) backend ReST web service";
//PLUGIN //PLUGIN
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment