]> gitweb.fluxo.info Git - lorea/elgg.git/commitdiff
Fixes #5083 removes messages sent by deleted user
authorcash <cash.costello@gmail.com>
Sat, 30 Mar 2013 16:32:00 +0000 (12:32 -0400)
committercash <cash.costello@gmail.com>
Sat, 30 Mar 2013 16:32:00 +0000 (12:32 -0400)
mod/messages/start.php

index 5503a675a2bb75c8e16a8ed30e0b33e9f31417e5..714129e4b3f528cdf27c981ef1cfe2fa37bce655 100644 (file)
@@ -51,6 +51,9 @@ function messages_init() {
        elgg_register_plugin_hook_handler('notify:entity:message', 'object', 'messages_notification_msg');
        register_notification_object('object', 'messages', elgg_echo('messages:new'));
 
+       // delete messages sent by a user when user is deleted
+       elgg_register_event_handler('delete', 'user', 'messages_purge');
+
        // ecml
        elgg_register_plugin_hook_handler('get_views', 'ecml', 'messages_ecml_views_hook');
 
@@ -425,6 +428,35 @@ function messages_user_hover_menu($hook, $type, $return, $params) {
        return $return;
 }
 
+/**
+ * Delete messages from a user who is being deleted
+ *
+ * @param string   $event Event name
+ * @param string   $type  Event type
+ * @param ElggUser $user  User being deleted
+ */
+function messages_purge($event, $type, $user) {
+
+       // make sure we delete them all
+       $entity_disable_override = access_get_show_hidden_status();
+       access_show_hidden_entities(true);
+       $ia = elgg_set_ignore_access(true);
+
+       $options = array(
+               'type' => 'object',
+               'subtype' => 'messages',
+               'metadata_name' => 'fromId',
+               'metadata_value' => $user->getGUID(),
+               'limit' => 0,
+       );
+       $batch = new ElggBatch('elgg_get_entities_from_metadata', $options);
+       foreach ($batch as $e) {
+               $e->delete();
+       }
+
+       elgg_set_ignore_access($ia);
+       access_show_hidden_entities($entity_disable_override);
+}
 
 /**
  * Register messages with ECML.