Skip to content

Commit

Permalink
fixed: user delete performance
Browse files Browse the repository at this point in the history
  • Loading branch information
jeabakker committed Jan 27, 2025
1 parent d77234e commit a94ce4a
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 1 deletion.
23 changes: 22 additions & 1 deletion classes/ColdTrick/EntityViewCounter/Delete.php
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ class Delete {
*
* @return void
*/
public static function deleteViews(\Elgg\Event $event) {
public static function deleteViews(\Elgg\Event $event): void {
$entity = $event->getObject();
if (!$entity instanceof \ElggEntity) {
return;
Expand All @@ -30,4 +30,25 @@ public static function deleteViews(\Elgg\Event $event) {

elgg()->db->deleteData($delete);
}

/**
* On delete of a user remove all view annotations in bulk
*
* @param \Elgg\Event $event 'delete', 'user'
*
* @return void
*/
public static function deleteUserViews(\Elgg\Event $event): void {
$entity = $event->getObject();
if (!$entity instanceof \ElggUser) {
return;
}

// Do a bulk delete to save on performance (eg. not for every annotation a delete sequence)
$delete = DBDelete::fromTable(AnnotationsTable::TABLE_NAME);
$delete->where($delete->compare('owner_guid', '=', $entity->guid, ELGG_VALUE_GUID))
->andWhere($delete->compare('name', '=', ENTITY_VIEW_COUNTER_ANNOTATION_NAME, ELGG_VALUE_STRING));

elgg()->db->deleteData($delete);
}
}
3 changes: 3 additions & 0 deletions elgg-plugin.php
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,9 @@
'object' => [
'\ColdTrick\EntityViewCounter\Delete::deleteViews' => [],
],
'user' => [
'\ColdTrick\EntityViewCounter\Delete::deleteUserViews' => [],
],
],
'permissions_check:annotate:view_counter' => [
'all' => [
Expand Down

0 comments on commit a94ce4a

Please sign in to comment.