From 1b3b766244b772573e797fec4eee0cdce847367b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= Date: Thu, 11 Apr 2013 12:37:52 +0200 Subject: [PATCH] cleanup the trash bin tables in the database after a user was deleted --- apps/files_trashbin/appinfo/app.php | 4 +++- apps/files_trashbin/lib/hooks.php | 14 ++++++++++++++ apps/files_trashbin/lib/trash.php | 16 ++++++++++++++++ 3 files changed, 33 insertions(+), 1 deletion(-) diff --git a/apps/files_trashbin/appinfo/app.php b/apps/files_trashbin/appinfo/app.php index a6a99db034..e83d3b8fbb 100644 --- a/apps/files_trashbin/appinfo/app.php +++ b/apps/files_trashbin/appinfo/app.php @@ -3,5 +3,7 @@ OC::$CLASSPATH['OCA\Files_Trashbin\Hooks'] = 'files_trashbin/lib/hooks.php'; OC::$CLASSPATH['OCA\Files_Trashbin\Trashbin'] = 'files_trashbin/lib/trash.php'; - +//Listen to delete file signal OCP\Util::connectHook('OC_Filesystem', 'delete', "OCA\Files_Trashbin\Hooks", "remove_hook"); +//Listen to delete user signal +OCP\Util::connectHook('OC_User', 'pre_deleteUser', "OCA\Files_Trashbin\Hooks", "deleteUser_hook"); \ No newline at end of file diff --git a/apps/files_trashbin/lib/hooks.php b/apps/files_trashbin/lib/hooks.php index 9081706a2c..f1df1d7ec7 100644 --- a/apps/files_trashbin/lib/hooks.php +++ b/apps/files_trashbin/lib/hooks.php @@ -42,4 +42,18 @@ class Hooks { Trashbin::move2trash($path); } } + + /** + * @brief clean up user specific settings if user gets deleted + * @param array with uid + * + * This function is connected to the pre_deleteUser signal of OC_Users + * to remove the used space for the trash bin stored in the database + */ + public static function deleteUser_hook($params) { + if( \OCP\App::isEnabled('files_trashbin') ) { + $uid = $params['uid']; + Trashbin::deleteUser($uid); + } + } } diff --git a/apps/files_trashbin/lib/trash.php b/apps/files_trashbin/lib/trash.php index 35a2e1a8a1..9efb041bb9 100644 --- a/apps/files_trashbin/lib/trash.php +++ b/apps/files_trashbin/lib/trash.php @@ -336,6 +336,22 @@ class Trashbin { return $view->file_exists($target); } + /** + * @brief deletes used space for trash bin in db if user was deleted + * + * @param type $uid id of deleted user + * @return result of db delete operation + */ + public static function deleteUser($uid) { + $query = \OC_DB::prepare('DELETE FROM `*PREFIX*files_trash` WHERE `user`=?'); + $result = $query->execute(array($uid)); + if ($result) { + $query = \OC_DB::prepare('DELETE FROM `*PREFIX*files_trashsize` WHERE `user`=?'); + return $query->execute(array($uid)); + } + return false; + } + /** * clean up the trash bin * @param max. available disk space for trashbin