diff options
author | marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544> | 2009-03-06 15:49:31 +0000 |
---|---|---|
committer | marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544> | 2009-03-06 15:49:31 +0000 |
commit | b8dda4616e325cd8b6e97020829adbc6810e1e02 (patch) | |
tree | 0c78c25988a98da42dfaf635753d36a23b5b54c3 /engine | |
parent | fc05d0e128fb69ae100de9bb089727bfa7baa239 (diff) | |
download | elgg-b8dda4616e325cd8b6e97020829adbc6810e1e02.tar.gz elgg-b8dda4616e325cd8b6e97020829adbc6810e1e02.tar.bz2 |
Added garbage collector hook to clear up orphaned sub table entities.
git-svn-id: https://code.elgg.org/elgg/trunk@3116 36083f99-b078-4883-b0ff-0f9b5a30f544
Diffstat (limited to 'engine')
-rw-r--r-- | engine/lib/entities.php | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/engine/lib/entities.php b/engine/lib/entities.php index b56f97dab..cb88fb455 100644 --- a/engine/lib/entities.php +++ b/engine/lib/entities.php @@ -2729,6 +2729,24 @@ if ((isloggedin()) && ($__RECURSIVE_DELETE_TOKEN) && (strcmp($__RECURSIVE_DELETE_TOKEN, md5(get_loggedin_userid()))))
return true;
+ } + + /** + * Garbage collect stub and fragments from any broken delete/create calls + * + * @param unknown_type $hook + * @param unknown_type $user + * @param unknown_type $returnvalue + * @param unknown_type $tag + */ + function entities_gc($hook, $user, $returnvalue, $tag) { + global $CONFIG; + + $tables = array ('sites_entity', 'objects_entity', 'groups_entity', 'users_entity'); + + foreach ($tables as $table) { + delete_data("DELETE from {$CONFIG->dbprefix}{$table} where guid NOT IN (SELECT guid from {$CONFIG->dbprefix}entities)"); + } }
/**
@@ -2741,7 +2759,9 @@ // Allow a permission override for recursive entity deletion
// TODO: Can this be done better?
- register_plugin_hook('permissions_check','all','recursive_delete_permissions_check');
+ register_plugin_hook('permissions_check','all','recursive_delete_permissions_check'); + + register_plugin_hook('gc','system','entities_gc');
}
/** Register the import hook */
|