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