From f6dbb78833a4f22141a0c7a8aaa7a30088a123f1 Mon Sep 17 00:00:00 2001 From: 32khsa1mst <32khsa1mst@hft-stuttgart.de> Date: Tue, 28 Jan 2025 16:50:44 +0100 Subject: [PATCH] Fix: delete personal data working + export data work in progress --- dta/classes/privacy/provider.php | 77 ++++++++++++++++++++------------ 1 file changed, 49 insertions(+), 28 deletions(-) diff --git a/dta/classes/privacy/provider.php b/dta/classes/privacy/provider.php index 8e55c54..61e1f42 100644 --- a/dta/classes/privacy/provider.php +++ b/dta/classes/privacy/provider.php @@ -51,8 +51,8 @@ class provider implements \core_privacy\local\metadata\provider, $collection->add_database_table( 'assignsubmission_dta_summary', [ - 'assignmentid' => 'privacy:metadata:assignsubmission_dta_summary:assignmentid', - 'submissionid' => 'privacy:metadata:assignsubmission_dta_summary:submissionid', + 'assignment_id' => 'privacy:metadata:assignsubmission_dta_summary:assignmentid', + 'submission_id' => 'privacy:metadata:assignsubmission_dta_summary:submissionid', 'timestamp' => 'privacy:metadata:assignsubmission_dta_summary:timestamp', 'global_stacktrace' => 'privacy:metadata:assignsubmission_dta_summary:global_stacktrace', 'successful_competencies' => 'privacy:metadata:assignsubmission_dta_summary:successful_competencies', @@ -65,8 +65,8 @@ class provider implements \core_privacy\local\metadata\provider, $collection->add_database_table( 'assignsubmission_dta_result', [ - 'assignmentid' => 'privacy:metadata:assignsubmission_dta_summary:assignmentid', - 'submissionid' => 'privacy:metadata:assignsubmission_dta_summary:submissionid', + 'assignment_id' => 'privacy:metadata:assignsubmission_dta_summary:assignmentid', + 'submission_id' => 'privacy:metadata:assignsubmission_dta_summary:submissionid', 'package_name' => 'privacy:metadata:assignsubmission_dta_result:package_name', 'class_name' => 'privacy:metadata:assignsubmission_dta_result:class_name', 'name' => 'privacy:metadata:assignsubmission_dta_result:name', @@ -84,8 +84,8 @@ class provider implements \core_privacy\local\metadata\provider, $collection->add_database_table( 'assignsubmission_dta_recommendations', [ - 'assignmentid' => 'privacy:metadata:assignsubmission_dta_summary:assignmentid', - 'submissionid' => 'privacy:metadata:assignsubmission_dta_summary:submissionid', + 'assignment_id' => 'privacy:metadata:assignsubmission_dta_summary:assignmentid', + 'submission_id' => 'privacy:metadata:assignsubmission_dta_summary:submissionid', 'topic'=> 'privacy:metadata:assignsubmission_dta_recommendations:topic', 'exercise_name'=> 'privacy:metadata:assignsubmission_dta_recommendations:exercise_name', 'url'=> 'privacy:metadata:assignsubmission_dta_recommendations:url', @@ -96,8 +96,8 @@ class provider implements \core_privacy\local\metadata\provider, ); $collection->add_external_location_link('dta_backend', [ - 'assignmentid' => 'privacy:metadata:assignsubmission_dta_summary:assignmentid', - 'submissionid' => 'privacy:metadata:assignsubmission_dta_summary:submissionid', + 'assignment_id' => 'privacy:metadata:assignsubmission_dta_summary:assignmentid', + 'submission_id' => 'privacy:metadata:assignsubmission_dta_summary:submissionid', 'submissioncontent' => 'privacy:metadata:core_files', ], 'privacy:metadata:dta_backend' @@ -150,7 +150,11 @@ class provider implements \core_privacy\local\metadata\provider, $user = new \stdClass(); $assign = $exportdata->get_assign(); $submission = $exportdata->get_pluginobject(); - $files = get_files($submission, $user); + error_log('Submission class type: ' . get_class($submission)); + + error_log('class type >>> '); + error_log(print_r(get_class($submission), true)); + $files = (new self)->get_files($submission, $user); foreach ($files as $file) { $userid = $exportdata->get_pluginobject()->userid; $dtaresultsummary = DBUtils::getresultsummaryfromdatabase($assign->id, $submission->id); @@ -178,17 +182,20 @@ class provider implements \core_privacy\local\metadata\provider, public static function delete_submission_for_context(assign_plugin_request_data $requestdata) { global $DB; - \core_plagiarism\privacy\provider::delete_plagiarism_for_context($requestdata->get_context()); + // \core_plagiarism\privacy\provider::delete_plagiarism_for_context($requestdata->get_context()); $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; + + error_log('ASSIGNMENTID DEL for context >>> '); + error_log(print_r($assignmentid, true)); // Delete records from assignsubmission_dta tables. - $DB->delete_records('assignsubmission_dta_result', ['assignmentid' => $assignmentid]); - $DB->delete_records('assignsubmission_dta_summary', ['assignmentid' => $assignmentid]); - $DB->delete_records('assignsubmission_dta_recommendations', ['assignmentid' => $assignmentid]); + $DB->delete_records('assignsubmission_dta_result', ['assignment_id' => $assignmentid]); + $DB->delete_records('assignsubmission_dta_summary', ['assignment_id' => $assignmentid]); + $DB->delete_records('assignsubmission_dta_recommendations', ['assignment_id' => $assignmentid]); } /** @@ -199,27 +206,37 @@ class provider implements \core_privacy\local\metadata\provider, public static function delete_submission_for_userid(assign_plugin_request_data $deletedata) { global $DB; - \core_plagiarism\privacy\provider::delete_plagiarism_for_user($deletedata->get_user()->id, $deletedata->get_context()); + // \core_plagiarism\privacy\provider::delete_plagiarism_for_user($deletedata->get_user()->id, $deletedata->get_context()); $assignmentid = $deletedata->get_assign()->get_instance()->id; $submissionid = $deletedata->get_pluginobject()->id; $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_FILEAREA_SUBMISSION, + // $submissionid); + + $fs->delete_area_files($deletedata->get_context()->id, 'assignsubmission_dta', \assignsubmission_dta\privacy\provider::ASSIGNSUBMISSION_DTA_FILEAREA_SUBMISSION, $submissionid); + + + error_log('SUBMISSIONID DEL for uid >>> '); + error_log(print_r($submissionid, true)); + error_log('ASSIGNMENTID DEL for uid >>> '); + error_log(print_r($assignmentid, true)); + // Delete records from assignsubmission_dta tables. Also possible with a list as below. $DB->delete_records('assignsubmission_dta_result', [ - 'assignmentid' => $assignmentid, - 'submissionid' => $submissionid, + 'assignment_id' => $assignmentid, + 'submission_id' => $submissionid, ]); $DB->delete_records('assignsubmission_dta_summary', [ - 'assignmentid' => $assignmentid, - 'submissionid' => $submissionid, + 'assignment_id' => $assignmentid, + 'submission_id' => $submissionid, ]); $DB->delete_records('assignsubmission_dta_recommendations', [ - 'assignmentid' => $assignmentid, - 'submissionid' => $submissionid, + 'assignment_id' => $assignmentid, + 'submission_id' => $submissionid, ]); } @@ -235,20 +252,24 @@ class provider implements \core_privacy\local\metadata\provider, public static function delete_submissions(assign_plugin_request_data $deletedata) { global $DB; - \core_plagiarism\privacy\provider::delete_plagiarism_for_users($deletedata->get_userids(), $deletedata->get_context()); + // \core_plagiarism\privacy\provider::delete_plagiarism_for_users($deletedata->get_userids(), $deletedata->get_context()); if (empty($deletedata->get_submissionids())) { return; } $fs = get_file_storage(); 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_FILE_FILEAREA_SUBMISSION, $sql, $params); $params['assignid'] = $deletedata->get_assignid(); - $DB->delete_records_select('assignsubmission_dta_result', "assignmentid = :assignid AND submissionid $sql", $params); - $DB->delete_records_select('assignsubmission_dta_summary', "assignmentid = :assignid AND submissionid $sql", $params); - $DB->delete_records_select('assignsubmission_dta_recommendations', "assignmentid = :assignid AND submissionid $sql", $params); + error_log('sql >>> '); + error_log(print_r($sql, true)); + error_log('PARAMS >>> '); + error_log(print_r($params, true)); + $DB->delete_records_select('assignsubmission_dta_result', "assignment_id = :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', "assignment_id = :assignid AND submissionid $sql", $params); } /** @@ -264,7 +285,7 @@ class provider implements \core_privacy\local\metadata\provider, $files = $fs->get_area_files($this->assignment->get_context()->id, 'assignsubmission_file', - ASSIGNSUBMISSION_DTA_FILEAREA_SUBMISSION, + \assignsubmission_dta\privacy\provider::ASSIGNSUBMISSION_DTA_FILEAREA_SUBMISSION, $submission->id, 'timemodified', false); -- GitLab