From 084ea89feb94f9aece305ae7f69f9ca61825b15a Mon Sep 17 00:00:00 2001 From: Michael M Slusarz Date: Fri, 1 Oct 2010 11:58:14 -0600 Subject: [PATCH] GC dangling compose data on logout in IMP --- imp/lib/Application.php | 13 +++++++++++++ imp/lib/Injector/Factory/Compose.php | 3 +++ 2 files changed, 16 insertions(+) diff --git a/imp/lib/Application.php b/imp/lib/Application.php index c5a013a4c..dba02fa8a 100644 --- a/imp/lib/Application.php +++ b/imp/lib/Application.php @@ -145,6 +145,19 @@ class IMP_Application extends Horde_Registry_Application } } + /** + * Tasks to perform at logout. + */ + public function logout() + { + /* Clean up dangling IMP_Compose objects. */ + if (!empty($_SESSION['imp']['cache']['compose'])) { + foreach (array_keys($_SESSION['imp']['cache']['compose']) as $key) { + $GLOBALS['injector']->getInstance('IMP_Compose')->getOb($key)->destroy('cancel'); + } + } + } + /* Horde permissions. */ /** diff --git a/imp/lib/Injector/Factory/Compose.php b/imp/lib/Injector/Factory/Compose.php index 571ddaca7..363a06b4f 100644 --- a/imp/lib/Injector/Factory/Compose.php +++ b/imp/lib/Injector/Factory/Compose.php @@ -89,10 +89,13 @@ class IMP_Injector_Factory_Compose case 'changed': $val->changed = ''; $obs->overwrite($key, $val, false); + + $_SESSION['imp']['cache']['compose'][$key] = 1; break; case 'deleted': $obs->prune($key); + unset($_SESSION['imp']['cache']['compose'][$key]); break; } } -- 2.11.0