From e23c502c77ea3d041f3e782642127c4b03d936b4 Mon Sep 17 00:00:00 2001 From: Date: Wed, 7 May 2008 17:52:59 +0200 Subject: [PATCH] remove link from md5(userid) on a federation if it is the last --- include/lassospkit_autopersistentsession.inc.php | 9 +++++++++ include/lassospkit_file.inc.php | 7 +++++++ include/lassospkit_mysql.inc.php | 3 +++ include/lassospkit_storage.inc.php | 1 + 4 files changed, 20 insertions(+) diff --git a/include/lassospkit_autopersistentsession.inc.php b/include/lassospkit_autopersistentsession.inc.php index aed01fa..720cd4a 100644 --- a/include/lassospkit_autopersistentsession.inc.php +++ b/include/lassospkit_autopersistentsession.inc.php @@ -64,7 +64,16 @@ class LassoSPKitAutoPersistentSession extends LassoSPKitDummySession { if ($newID) { $this->storage->rename($oldID, $newID); } else { + $blob = $this->storage->get($oldID); $this->storage->delete($oldID); + $userid = $blob['userid']; + if ($userid) { + $md5 = md5($userid); + if ($this->storage->linkcount($md5) == 1) { + $this->storage->delete($md5); + return; + } + } } parent::saveFederation(); } diff --git a/include/lassospkit_file.inc.php b/include/lassospkit_file.inc.php index 8baa842..6cd82b5 100644 --- a/include/lassospkit_file.inc.php +++ b/include/lassospkit_file.inc.php @@ -54,5 +54,12 @@ class LassoSPKitFileStore implements LassoSPKitStore { #lassospkit_debuglog("SPKit File Storage: " . $mesg); } } + function linkcount($key) { + $stat = stat($this->filepath($key)); + if (is_array($stat)) { + return $stat[3]; + } + return 0; + } } ?> diff --git a/include/lassospkit_mysql.inc.php b/include/lassospkit_mysql.inc.php index d5f1667..1fa7cd5 100644 --- a/include/lassospkit_mysql.inc.php +++ b/include/lassospkit_mysql.inc.php @@ -41,4 +41,7 @@ class LassoSPKitMySqlStore implements LassoSPKitStore { } function alias($key,$alias) { } + function linkcount($key) { + throw new Exception("Not implemented"); + } } diff --git a/include/lassospkit_storage.inc.php b/include/lassospkit_storage.inc.php index cda6721..3d7ebfa 100644 --- a/include/lassospkit_storage.inc.php +++ b/include/lassospkit_storage.inc.php @@ -5,6 +5,7 @@ interface LassoSPKitStore { public function delete($key); public function alias($key1,$key2); public function rename($key1, $key2); + public function linkcount($key); } ?>