summaryrefslogtreecommitdiffstats
path: root/db
diff options
context:
space:
mode:
authorBernhard Posselt <nukeawhale@gmail.com>2013-05-10 13:30:00 +0200
committerBernhard Posselt <nukeawhale@gmail.com>2013-05-10 13:30:00 +0200
commit347000cc2d5597c1971942ebdbe97461c9fa5802 (patch)
tree8a2f6dc166ad871c646b4cf8bf13f4a9fcd02e55 /db
parentc487bfe23312a5b266d8eb21a3825ab791a1c3e8 (diff)
use a deleted flag for deleted feeds to handle undo
Diffstat (limited to 'db')
-rw-r--r--db/feed.php2
-rw-r--r--db/feedmapper.php16
-rw-r--r--db/folder.php2
-rw-r--r--db/foldermapper.php22
4 files changed, 40 insertions, 2 deletions
diff --git a/db/feed.php b/db/feed.php
index 88879f8c4..22fbc359b 100644
--- a/db/feed.php
+++ b/db/feed.php
@@ -40,6 +40,7 @@ class Feed extends Entity implements IAPI {
public $unreadCount;
public $link;
public $preventUpdate;
+ public $deletedAt;
public function __construct(){
$this->addType('parentId', 'int');
@@ -47,6 +48,7 @@ class Feed extends Entity implements IAPI {
$this->addType('folderId', 'int');
$this->addType('unreadCount', 'int');
$this->addType('preventUpdate', 'bool');
+ $this->addType('deletedAt', 'int');
}
diff --git a/db/feedmapper.php b/db/feedmapper.php
index 9e371f1f0..438f2e78c 100644
--- a/db/feedmapper.php
+++ b/db/feedmapper.php
@@ -88,6 +88,7 @@ class FeedMapper extends Mapper implements IMapper {
'AND (`items`.`status` & ' . StatusFlag::UNREAD . ') = ' .
StatusFlag::UNREAD . ' ' .
'WHERE `feeds`.`user_id` = ? ' .
+ 'AND `feeds`.`deleted_at` = 0 ' .
'GROUP BY `feeds`.`id`';
$params = array($userId);
@@ -137,5 +138,20 @@ class FeedMapper extends Mapper implements IMapper {
}
+ public function getToDelete($deleteOlderThan, $userId=null) {
+ $sql = 'SELECT * FROM `*PREFIX*news_feeds` ' .
+ 'WHERE `deleted_at` > 0 ' .
+ 'AND `deleted_at` < ?';
+ $params = array($deleteOlderThan);
+
+ // we need to sometimes only delete feeds of a user
+ if($userId !== null) {
+ $sql .= ' AND `user_id` = ?';
+ array_push($params, $userId);
+ }
+
+ return $this->findAllRows($sql, $params);
+ }
+
} \ No newline at end of file
diff --git a/db/folder.php b/db/folder.php
index 24fa80000..7d1403c02 100644
--- a/db/folder.php
+++ b/db/folder.php
@@ -34,10 +34,12 @@ class Folder extends Entity implements IAPI {
public $name;
public $userId;
public $opened;
+ public $deletedAt;
public function __construct(){
$this->addType('parentId', 'int');
$this->addType('opened', 'bool');
+ $this->addType('deletedAt', 'int');
}
diff --git a/db/foldermapper.php b/db/foldermapper.php
index 8978bb45b..f8d088cdb 100644
--- a/db/foldermapper.php
+++ b/db/foldermapper.php
@@ -65,7 +65,8 @@ class FolderMapper extends Mapper implements IMapper {
public function findAllFromUser($userId){
$sql = 'SELECT * FROM `*PREFIX*news_folders` ' .
- 'WHERE `user_id` = ?';
+ 'WHERE `user_id` = ? ' .
+ 'AND `deleted_at` = 0';
$params = array($userId);
return $this->findAllRows($sql, $params);
@@ -74,7 +75,7 @@ class FolderMapper extends Mapper implements IMapper {
public function findByName($folderName, $userId){
$sql = 'SELECT * FROM `*PREFIX*news_folders` ' .
- 'WHERE `name` = ?' .
+ 'WHERE `name` = ? ' .
'AND `user_id` = ?';
$params = array($folderName, $userId);
@@ -96,4 +97,21 @@ class FolderMapper extends Mapper implements IMapper {
}
+ public function getToDelete($deleteOlderThan, $userId=null) {
+ $sql = 'SELECT * FROM `*PREFIX*news_folders` ' .
+ 'WHERE `deleted_at` > 0 ' .
+ 'AND `deleted_at` < ?';
+ $params = array($deleteOlderThan);
+
+ // we need to sometimes only delete feeds of a user
+ if($userId !== null) {
+ $sql .= ' AND `user_id` = ?';
+ array_push($params, $userId);
+ }
+
+ return $this->findAllRows($sql, $params);
+ }
+
+
+
} \ No newline at end of file