diff options
Diffstat (limited to 'engine/lib')
-rw-r--r-- | engine/lib/entities.php | 7 | ||||
-rw-r--r-- | engine/lib/users.php | 10 |
2 files changed, 16 insertions, 1 deletions
diff --git a/engine/lib/entities.php b/engine/lib/entities.php index ef99f764a..f86299c6e 100644 --- a/engine/lib/entities.php +++ b/engine/lib/entities.php @@ -2399,13 +2399,18 @@ function enable_entity($guid) { * Note: this bypasses ownership of sub items. */ function delete_entity($guid, $recursive = true) { - global $CONFIG; + global $CONFIG, $ENTITY_CACHE; $guid = (int)$guid; if ($entity = get_entity($guid)) { if (trigger_elgg_event('delete', $entity->type, $entity)) { if ($entity->canEdit()) { + // delete cache + if (isset($ENTITY_CACHE[$guid])) { + invalidate_cache_for_entity($guid); + } + // Delete contained owned and otherwise releated objects (depth first) if ($recursive) { // Temporary token overriding access controls TODO: Do this better. diff --git a/engine/lib/users.php b/engine/lib/users.php index 5892035a6..0857c520a 100644 --- a/engine/lib/users.php +++ b/engine/lib/users.php @@ -153,6 +153,16 @@ class ElggUser extends ElggEntity * @return bool */ public function delete() { + global $USERNAME_TO_GUID_MAP_CACHE, $CODE_TO_GUID_MAP_CACHE; + + // clear cache + if (isset($USERNAME_TO_GUID_MAP_CACHE[$this->username])) { + unset($USERNAME_TO_GUID_MAP_CACHE[$this->username]); + } + if (isset($CODE_TO_GUID_MAP_CACHE[$this->code])) { + unset($CODE_TO_GUID_MAP_CACHE[$this->code]); + } + // Delete owned data clear_annotations_by_owner($this->guid); clear_metadata_by_owner($this->guid); |