From 57e61031877e1f921e7b4446471c61e4c5ac1b13 Mon Sep 17 00:00:00 2001 From: Bernhard Posselt Date: Fri, 4 Apr 2014 03:09:17 +0200 Subject: register hooks for deleting feeds, folders and items if a user is deleted, fix #468 --- db/feedmapper.php | 11 +++++++++++ db/foldermapper.php | 9 +++++++++ db/itemmapper.php | 16 ++++++++++++++++ 3 files changed, 36 insertions(+) (limited to 'db') diff --git a/db/feedmapper.php b/db/feedmapper.php index 60f9abefa..23b6da5d6 100644 --- a/db/feedmapper.php +++ b/db/feedmapper.php @@ -198,4 +198,15 @@ class FeedMapper extends Mapper implements IMapper { } + /** + * Deletes all feeds of a user, delete items first since the user_id + * is not defined in there + * @param string $userId the name of the user + */ + public function deleteUser($userId) { + $sql = 'DELETE FROM `*PREFIX*news_feeds` WHERE `user_id` = ?'; + $this->execute($sql, array($userId)); + } + + } diff --git a/db/foldermapper.php b/db/foldermapper.php index 8f6c32cde..2abe89b29 100644 --- a/db/foldermapper.php +++ b/db/foldermapper.php @@ -127,5 +127,14 @@ class FolderMapper extends Mapper implements IMapper { } + /** + * Deletes all folders of a user + * @param string $userId the name of the user + */ + public function deleteUser($userId) { + $sql = 'DELETE FROM `*PREFIX*news_folders` WHERE `user_id` = ?'; + $this->execute($sql, array($userId)); + } + } \ No newline at end of file diff --git a/db/itemmapper.php b/db/itemmapper.php index 1ec283826..5b2ab5346 100644 --- a/db/itemmapper.php +++ b/db/itemmapper.php @@ -300,4 +300,20 @@ class ItemMapper extends Mapper implements IMapper { return (int) $result['max_id']; } + + /** + * Deletes all items of a user + * @param string $userId the name of the user + */ + public function deleteUser($userId) { + $sql = 'DELETE FROM `*PREFIX*news_items` `items` ' . + 'WHERE `items`.`feed_id` IN (' . + 'SELECT `feeds`.`id` FROM `*PREFIX*news_feeds` `feeds` ' . + 'WHERE `feeds`.`user_id` = ?' . + ')'; + + $this->execute($sql, array($userId)); + } + + } -- cgit v1.2.3