Skip to content

Commit 823b85c

Browse files
author
Anisa
committed
add sql queries for
deleting pictures of comments
1 parent dcb9c86 commit 823b85c

File tree

2 files changed

+37
-13
lines changed

2 files changed

+37
-13
lines changed

classes/privacy/provider.php

Lines changed: 33 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,10 @@
2828
defined('MOODLE_INTERNAL') || die();
2929

3030
use \core_privacy\local\request\approved_contextlist;
31-
use \core_privacy\local\request\deletion_criteria;
3231
use \core_privacy\local\request\writer;
33-
use \core_privacy\local\request\helper as request_helper;
3432
use \core_privacy\local\metadata\collection;
35-
use \core_privacy\local\request\transform;
33+
use core_privacy\local\request\approved_userlist;
34+
use core_privacy\local\request\userlist;
3635

3736
/**
3837
* Description of provider
@@ -329,27 +328,41 @@ public static function delete_data_for_user(approved_contextlist $contextlist) {
329328
$instanceid = $DB->get_field('course_modules', 'instance', ['id' => $context->instanceid], MUST_EXIST);
330329

331330
// 1. Delete all reports this user made in this annotator.
332-
$DB->delete_records('pdfannotator_reports', ['pdfannotatorid' => $instanceid, 'userid' => $userid]);
331+
$DB->delete_records(
332+
'pdfannotator_reports',
333+
['pdfannotatorid' => $instanceid, 'userid' => $userid]
334+
);
333335

334336
// 2. Delete all votes this user made in this annotator.
335-
$sql = "SELECT v.id FROM {pdfannotator_votes} v WHERE v.userid = ? AND v.commentid IN (SELECT c.id FROM {pdfannotator_comments} c WHERE c.pdfannotatorid = ?)";
337+
$sql = "SELECT v.id
338+
FROM {pdfannotator_votes} v
339+
WHERE v.userid = ? AND v.commentid IN
340+
(SELECT c.id
341+
FROM {pdfannotator_comments} c
342+
WHERE c.pdfannotatorid = ?)";
336343
$votes = $DB->get_records_sql($sql , array($userid, $instanceid));
337344
foreach ($votes as $vote) {
338345
$DB->delete_records('pdfannotator_votes', array("id" => $vote->id));
339346
}
340347

341348
// 3. Delete all subscriptions this user made in this annotator.
342-
$sql = "SELECT s.id FROM {pdfannotator_subscriptions} s WHERE s.userid = ? AND s.annotationid IN "
343-
. "(SELECT a.id FROM {pdfannotator_annotations} a WHERE a.pdfannotatorid = ?)";
349+
$sql = "SELECT s.id
350+
FROM {pdfannotator_subscriptions} s
351+
WHERE s.userid = ? AND s.annotationid IN
352+
(SELECT a.id
353+
FROM {pdfannotator_annotations} a
354+
WHERE a.pdfannotatorid = ?)";
344355
$subscriptions = $DB->get_records_sql($sql, array($userid, $instanceid));
345356
foreach ($subscriptions as $subscription) {
346357
$DB->delete_records('pdfannotator_subscriptions', array("id" => $subscription->id));
347358
}
348359

349360
// 4. Select all comments this user made in this annotator.
350-
$comments = $DB->get_records_sql("SELECT c.* FROM {pdfannotator_comments} c WHERE c.pdfannotatorid = ? AND c.userid = ?", array($instanceid, $userid));
361+
$sql = "SELECT c.*
362+
FROM {pdfannotator_comments} c
363+
WHERE c.pdfannotatorid = ? AND c.userid = ?";
364+
$comments = $DB->get_records_sql($sql, array($instanceid, $userid));
351365
foreach ($comments as $comment) {
352-
353366
// Delete question comments, their underlying annotation as well as all answers and subscriptions.
354367
if ($comment->isquestion) {
355368
self::delete_annotation($comment->annotationid);
@@ -389,6 +402,8 @@ public static function delete_annotation($annotationid) {
389402
// 1.2 Delete any votes for these comments.
390403
$DB->delete_records('pdfannotator_votes', array("commentid" => $comment->id));
391404

405+
// Delete any pictures of the comment.
406+
$DB->delete_records('files', array("component" => "mod_pdfannotator", "filearea" => "post", "itemid" => $comment->id));
392407
}
393408

394409
// 1.3 Now delete all comments.
@@ -508,7 +523,7 @@ public static function get_users_in_context(userlist $userlist) {
508523
* Deletes data for users in given userlist's context.
509524
* @param approved_userlist $userlist
510525
*/
511-
public static function delete_data_for_users(\core_privacy\local\request\approved_userlist $userlist) {
526+
public static function delete_data_for_users(approved_userlist $userlist) {
512527
global $DB;
513528

514529
$context = $userlist->get_context();
@@ -551,5 +566,13 @@ public static function delete_data_for_users(\core_privacy\local\request\approve
551566
$DB->delete_records_select('pdfannotator_annotations', $sql, $params);
552567
$DB->delete_records_select('pdfannotator_reports', $sql, $params);
553568
$DB->delete_records_select('pdfannotator_comments', $sql, $params);
569+
570+
// Delete pictures in comments.
571+
$DB->execute("DELETE FORM {files} imgs
572+
WHERE imgs.component = 'mod_pdfannotator'
573+
AND imgs.filearea = 'post'
574+
AND imgs.userid {$userinsql}
575+
AND imgs.itemid {$commentinsql}",
576+
array_merge($userinparams, $commentinparams));
554577
}
555578
}

tests/privacy/provider_test.php

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,9 @@
1717
namespace mod_pdfannotator\privacy;
1818

1919
use mod_pdfannotator\privacy\provider;
20-
use core_privacy\local\request\transform;
21-
use core_privacy\local\request\writer;
2220
use core_privacy\local\request\approved_contextlist;
2321
use core_privacy\local\request\approved_userlist;
22+
use core_privacy\tests\provider_testcase;
2423
use stdClass;
2524

2625
defined('MOODLE_INTERNAL') || die();
@@ -37,7 +36,7 @@
3736
* @copyright IT Center RWTH Aachen University
3837
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
3938
*/
40-
class provider_test extends \core_privacy\tests\provider_testcase {
39+
class provider_test extends provider_testcase {
4140

4241
protected $course;
4342
protected $cmcontext;
@@ -171,5 +170,7 @@ public function test_delete_data_for_users() {
171170
$userlist = new approved_userlist($systemcontext, $component, $this->user->id);
172171
// Delete using delete_data_for_user.
173172
provider::delete_data_for_users($userlist);
173+
174+
174175
}
175176
}

0 commit comments

Comments
 (0)