summaryrefslogtreecommitdiffstats
path: root/apps/files_trashbin
diff options
context:
space:
mode:
authorBjörn Schießle <schiessle@owncloud.com>2013-04-11 12:37:52 +0200
committerBjörn Schießle <schiessle@owncloud.com>2013-04-11 14:40:06 +0200
commit1b3b766244b772573e797fec4eee0cdce847367b (patch)
tree25bd245776d5dc7f0f246d86aade75c626c82618 /apps/files_trashbin
parent544a46c69067fcbdf55391415c9d06c73fd21331 (diff)
downloadnextcloud-server-1b3b766244b772573e797fec4eee0cdce847367b.tar.gz
nextcloud-server-1b3b766244b772573e797fec4eee0cdce847367b.zip
cleanup the trash bin tables in the database after a user was deleted
Diffstat (limited to 'apps/files_trashbin')
-rw-r--r--apps/files_trashbin/appinfo/app.php4
-rw-r--r--apps/files_trashbin/lib/hooks.php14
-rw-r--r--apps/files_trashbin/lib/trash.php16
3 files changed, 33 insertions, 1 deletions
diff --git a/apps/files_trashbin/appinfo/app.php b/apps/files_trashbin/appinfo/app.php
index a6a99db034c..e83d3b8fbbd 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 9081706a2c5..f1df1d7ec77 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 35a2e1a8a1e..9efb041bb9d 100644
--- a/apps/files_trashbin/lib/trash.php
+++ b/apps/files_trashbin/lib/trash.php
@@ -337,6 +337,22 @@ class Trashbin {
}
/**
+ * @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
*/