From 6f95a6af5389b3f3a3affd309ac73f689dee21b8 Mon Sep 17 00:00:00 2001 From: mensonge Date: Wed, 7 Jan 2009 09:10:28 +0000 Subject: [PATCH] Bug Fix: delete really all user's data when removing a user git-svn-id: https://semanticscuttle.svn.sourceforge.net/svnroot/semanticscuttle/trunk@221 b3834d28-1941-0410-a4f8-b48e95affb8f --- admin.php | 10 +- services/commondescriptionservice.php | 14 ++ services/searchhistoryservice.php | 196 ++++++++++++++------------ services/tagstatservice.php | 12 ++ 4 files changed, 138 insertions(+), 94 deletions(-) diff --git a/admin.php b/admin.php index 57489b8..c51d925 100644 --- a/admin.php +++ b/admin.php @@ -23,7 +23,10 @@ require_once('header.inc.php'); $bookmark2tagservice = & ServiceFactory :: getServiceInstance('Bookmark2Tagservice'); $bookmarkservice = & ServiceFactory :: getServiceInstance('BookmarkService'); $tag2tagservice = & ServiceFactory :: getServiceInstance('Tag2TagService'); -$tagcacheservice = & ServiceFactory :: getServiceInstance('TagCacheService'); +$tagcacheservice = & ServiceFactory :: getServiceInstance('TagCacheService'); +$commondescriptionservice = & ServiceFactory :: getServiceInstance('CommonDescriptionService'); +$searchhistoryservice = & ServiceFactory :: getServiceInstance('SearchHistoryService'); +$tagstatservice = & ServiceFactory :: getServiceInstance('TagStatService'); // Header variables $tplVars['subtitle'] = T_('Manage users'); @@ -56,7 +59,10 @@ if ( $action $tagcacheservice->deleteByUser($uId); $tag2tagservice->removeLinkedTags('','','',$uId); $userservice->deleteUser($uId); - $bookmark2tagservice->deleteTagsForUser($uId); + $bookmark2tagservice->deleteTagsForUser($uId); + $commondescriptionservice->deleteDescriptionsForUser($uId); + $searchhistoryservice->deleteSearchHistoryForUser($uId); + $tagstatservice->deleteTagStatForUser($uId); // XXX: don't delete bookmarks before tags, else tags can't be deleted !!! $bookmarkservice->deleteBookmarksForUser($uId); diff --git a/services/commondescriptionservice.php b/services/commondescriptionservice.php index 0a96f74..86e0c0f 100644 --- a/services/commondescriptionservice.php +++ b/services/commondescriptionservice.php @@ -140,6 +140,20 @@ class CommonDescriptionService { } + function deleteDescriptionsForUser($uId){ + $query = 'DELETE FROM '. $this->getTableName() . ' WHERE uId = '. intval($uId); + + $this->db->sql_transaction('begin'); + if (!($dbresult = & $this->db->sql_query($query))) { + $this->db->sql_transaction('rollback'); + message_die(GENERAL_ERROR, 'Could not delete user descriptions', '', + __LINE__, __FILE__, $query, $this->db); + return false; + } + + return true; + } + function deleteAll() { $query = 'TRUNCATE TABLE `'. $this->getTableName() .'`'; diff --git a/services/searchhistoryservice.php b/services/searchhistoryservice.php index bf678cf..72ea825 100644 --- a/services/searchhistoryservice.php +++ b/services/searchhistoryservice.php @@ -1,111 +1,123 @@ db =& $db; - $this->tablename = $GLOBALS['tableprefix'] .'searchhistory'; - if(isset($GLOBALS['sizeSearchHistory'])) { - $this->sizeSearchHistory = $GLOBALS['sizeSearchHistory']; - } else { - $this->sizeSearchHistory = 10; + function &getInstance(&$db) { + static $instance; + if (!isset($instance)) + $instance =& new SearchHistoryService($db); + return $instance; } - } - function addSearch($terms, $range, $nbResults, $uId=0) { - if(strlen($terms) == 0) { - return false; + function SearchHistoryService(& $db) { + $this->db =& $db; + $this->tablename = $GLOBALS['tableprefix'] .'searchhistory'; + if(isset($GLOBALS['sizeSearchHistory'])) { + $this->sizeSearchHistory = $GLOBALS['sizeSearchHistory']; + } else { + $this->sizeSearchHistory = 10; + } } - $datetime = gmdate('Y-m-d H:i:s', time()); - //Insert values - $values = array('shTerms'=>$terms, 'shRange'=>$range, 'shDatetime'=>$datetime, 'shNbResults'=>$nbResults, 'uId'=>$uId); - $sql = 'INSERT INTO '. $this->getTableName() .' '. $this->db->sql_build_array('INSERT', $values); - $this->db->sql_transaction('begin'); - if (!($dbresult = & $this->db->sql_query($sql))) { - $this->db->sql_transaction('rollback'); - message_die(GENERAL_ERROR, 'Could not insert search history', '', __LINE__, __FILE__, $sql, $this->db); - return false; - } + function addSearch($terms, $range, $nbResults, $uId=0) { + if(strlen($terms) == 0) { + return false; + } + $datetime = gmdate('Y-m-d H:i:s', time()); - if($this->sizeSearchHistory != -1 && + //Insert values + $values = array('shTerms'=>$terms, 'shRange'=>$range, 'shDatetime'=>$datetime, 'shNbResults'=>$nbResults, 'uId'=>$uId); + $sql = 'INSERT INTO '. $this->getTableName() .' '. $this->db->sql_build_array('INSERT', $values); + $this->db->sql_transaction('begin'); + if (!($dbresult = & $this->db->sql_query($sql))) { + $this->db->sql_transaction('rollback'); + message_die(GENERAL_ERROR, 'Could not insert search history', '', __LINE__, __FILE__, $sql, $this->db); + return false; + } + + if($this->sizeSearchHistory != -1 && $this->countSearches() > $this->sizeSearchHistory) { - $this->deleteOldestSearch(); + $this->deleteOldestSearch(); + } } - } - function getAllSearches($range = NULL, $uId = NULL, $nb = NULL, $start = NULL, $distinct = false, $withResults = false) { - $sql = 'SELECT DISTINCT(shTerms), shId, shRange, shNbResults, shDatetime, uId'; - $sql.= ' FROM '. $this->getTableName(); - $sql.= ' WHERE 1=1'; - if($range != NULL) { - $sql.= ' AND shRange = "'.$range.'"'; - } else { - $sql.= ' AND shRange = "all"'; + function getAllSearches($range = NULL, $uId = NULL, $nb = NULL, $start = NULL, $distinct = false, $withResults = false) { + $sql = 'SELECT DISTINCT(shTerms), shId, shRange, shNbResults, shDatetime, uId'; + $sql.= ' FROM '. $this->getTableName(); + $sql.= ' WHERE 1=1'; + if($range != NULL) { + $sql.= ' AND shRange = "'.$range.'"'; + } else { + $sql.= ' AND shRange = "all"'; + } + if($uId != NULL) { + $sql.= ' AND uId = '.$uId; + } + if($withResults = true) { + $sql.= ' AND shNbResults > 0'; + } + if($distinct) { + $sql.= ' GROUP BY shTerms'; + } + $sql.= ' ORDER BY shId DESC'; + + if (!($dbresult = & $this->db->sql_query_limit($sql, $nb, $start))) { + message_die(GENERAL_ERROR, 'Could not get searches', '', __LINE__, __FILE__, $sql, $this->db); + return false; + } + + $searches = array(); + while ($row = & $this->db->sql_fetchrow($dbresult)) { + $searches[] = $row; + } + return $searches; } - if($uId != NULL) { - $sql.= ' AND uId = '.$uId; + + function countSearches() { + $sql = 'SELECT COUNT(*) AS `total` FROM '. $this->getTableName(); + if (!($result = & $this->db->sql_query($sql)) || (!($row = & $this->db->sql_fetchrow($result)))) { + message_die(GENERAL_ERROR, 'Could not get total searches', '', __LINE__, __FILE__, $sql, $this->db); + return false; + } + + return $row['total']; } - if($withResults = true) { - $sql.= ' AND shNbResults > 0'; + + /* This function allows to limit the number of saved searches + by deleting the oldest one */ + function deleteOldestSearch() { + $sql = 'DELETE FROM '.$this->getTableName(); + $sql.= ' ORDER BY shId ASC LIMIT 1'; // warning: here the limit is important + + $this->db->sql_transaction('begin'); + if (!($dbresult = & $this->db->sql_query($sql))) { + $this->db->sql_transaction('rollback'); + message_die(GENERAL_ERROR, 'Could not delete bookmarks', '', __LINE__, __FILE__, $query, $this->db); + return false; + } } - if($distinct) { - $sql.= ' GROUP BY shTerms'; + + function deleteSearchHistoryForUser($uId) { + $query = 'DELETE FROM '. $this->getTableName() .' WHERE uId = '. intval($uId); + + if (!($dbresult = & $this->db->sql_query($query))) { + message_die(GENERAL_ERROR, 'Could not delete search history', '', + __LINE__, __FILE__, $query, $this->db); + return false; + } + + return true; } - $sql.= ' ORDER BY shId DESC'; - if (!($dbresult = & $this->db->sql_query_limit($sql, $nb, $start))) { - message_die(GENERAL_ERROR, 'Could not get searches', '', __LINE__, __FILE__, $sql, $this->db); - return false; - } + function deleteAll() { + $query = 'TRUNCATE TABLE `'. $this->getTableName() .'`'; + $this->db->sql_query($query); + } - $searches = array(); - while ($row = & $this->db->sql_fetchrow($dbresult)) { - $searches[] = $row; - } - return $searches; - } - - function countSearches() { - $sql = 'SELECT COUNT(*) AS `total` FROM '. $this->getTableName(); - if (!($result = & $this->db->sql_query($sql)) || (!($row = & $this->db->sql_fetchrow($result)))) { - message_die(GENERAL_ERROR, 'Could not get total searches', '', __LINE__, __FILE__, $sql, $this->db); - return false; - } - - return $row['total']; - } - - /* This function allows to limit the number of saved searches - by deleting the oldest one */ - function deleteOldestSearch() { - $sql = 'DELETE FROM '.$this->getTableName(); - $sql.= ' ORDER BY shId ASC LIMIT 1'; // warning: here the limit is important - - $this->db->sql_transaction('begin'); - if (!($dbresult = & $this->db->sql_query($sql))) { - $this->db->sql_transaction('rollback'); - message_die(GENERAL_ERROR, 'Could not delete bookmarks', '', __LINE__, __FILE__, $query, $this->db); - return false; - } - } - - function deleteAll() { - $query = 'TRUNCATE TABLE `'. $this->getTableName() .'`'; - $this->db->sql_query($query); - } - - // Properties - function getTableName() { return $this->tablename; } - function setTableName($value) { $this->tablename = $value; } + // Properties + function getTableName() { return $this->tablename; } + function setTableName($value) { $this->tablename = $value; } } ?> diff --git a/services/tagstatservice.php b/services/tagstatservice.php index 3a08bc0..9d3ca5d 100644 --- a/services/tagstatservice.php +++ b/services/tagstatservice.php @@ -169,6 +169,18 @@ class TagStatService { $this->db->sql_query($query); } + function deleteTagStatForUser($uId) { + $query = 'DELETE FROM '. $this->getTableName() .' WHERE uId = '. intval($uId); + + if (!($dbresult = & $this->db->sql_query($query))) { + message_die(GENERAL_ERROR, 'Could not delete tag stats', '', __LINE__, + __FILE__, $query, $this->db); + return false; + } + + return true; + } + function deleteAll() { $query = 'TRUNCATE TABLE `'. $this->getTableName() .'`'; $this->db->sql_query($query);