Skip to content

Commit a94ce4a

Browse files
committed
fixed: user delete performance
1 parent d77234e commit a94ce4a

File tree

2 files changed

+25
-1
lines changed

2 files changed

+25
-1
lines changed

classes/ColdTrick/EntityViewCounter/Delete.php

+22-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ class Delete {
1717
*
1818
* @return void
1919
*/
20-
public static function deleteViews(\Elgg\Event $event) {
20+
public static function deleteViews(\Elgg\Event $event): void {
2121
$entity = $event->getObject();
2222
if (!$entity instanceof \ElggEntity) {
2323
return;
@@ -30,4 +30,25 @@ public static function deleteViews(\Elgg\Event $event) {
3030

3131
elgg()->db->deleteData($delete);
3232
}
33+
34+
/**
35+
* On delete of a user remove all view annotations in bulk
36+
*
37+
* @param \Elgg\Event $event 'delete', 'user'
38+
*
39+
* @return void
40+
*/
41+
public static function deleteUserViews(\Elgg\Event $event): void {
42+
$entity = $event->getObject();
43+
if (!$entity instanceof \ElggUser) {
44+
return;
45+
}
46+
47+
// Do a bulk delete to save on performance (eg. not for every annotation a delete sequence)
48+
$delete = DBDelete::fromTable(AnnotationsTable::TABLE_NAME);
49+
$delete->where($delete->compare('owner_guid', '=', $entity->guid, ELGG_VALUE_GUID))
50+
->andWhere($delete->compare('name', '=', ENTITY_VIEW_COUNTER_ANNOTATION_NAME, ELGG_VALUE_STRING));
51+
52+
elgg()->db->deleteData($delete);
53+
}
3354
}

elgg-plugin.php

+3
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,9 @@
2323
'object' => [
2424
'\ColdTrick\EntityViewCounter\Delete::deleteViews' => [],
2525
],
26+
'user' => [
27+
'\ColdTrick\EntityViewCounter\Delete::deleteUserViews' => [],
28+
],
2629
],
2730
'permissions_check:annotate:view_counter' => [
2831
'all' => [

0 commit comments

Comments
 (0)