cleanup the trash bin tables in the database after a user was deleted

This commit is contained in:
Björn Schießle 2013-04-11 12:37:52 +02:00
parent 544a46c690
commit 1b3b766244
3 changed files with 33 additions and 1 deletions

View File

@ -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");

View File

@ -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);
}
}
}

View File

@ -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