summaryrefslogtreecommitdiffstats
path: root/businesslayer
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 /businesslayer
parentc487bfe23312a5b266d8eb21a3825ab791a1c3e8 (diff)
use a deleted flag for deleted feeds to handle undo
Diffstat (limited to 'businesslayer')
-rw-r--r--businesslayer/feedbusinesslayer.php38
-rw-r--r--businesslayer/folderbusinesslayer.php44
2 files changed, 80 insertions, 2 deletions
diff --git a/businesslayer/feedbusinesslayer.php b/businesslayer/feedbusinesslayer.php
index 1f5d5d6c7..f6ab1c144 100644
--- a/businesslayer/feedbusinesslayer.php
+++ b/businesslayer/feedbusinesslayer.php
@@ -43,17 +43,20 @@ class FeedBusinessLayer extends BusinessLayer {
private $api;
private $timeFactory;
private $importParser;
+ private $autoPurgeMinimumInterval;
public function __construct(FeedMapper $feedMapper, Fetcher $feedFetcher,
ItemMapper $itemMapper, API $api,
TimeFactory $timeFactory,
- ImportParser $importParser){
+ ImportParser $importParser,
+ $autoPurgeMinimumInterval){
parent::__construct($feedMapper);
$this->feedFetcher = $feedFetcher;
$this->itemMapper = $itemMapper;
$this->api = $api;
$this->timeFactory = $timeFactory;
$this->importParser = $importParser;
+ $this->autoPurgeMinimumInterval = $autoPurgeMinimumInterval;
}
@@ -236,4 +239,37 @@ class FeedBusinessLayer extends BusinessLayer {
}
+ /**
+ * Use this to mark a feed as deleted. That way it can be undeleted
+ * @throws BusinessLayerException when feed does not exist
+ */
+ public function markDeleted($feedId, $userId) {
+ $feed = $this->find($feedId, $userId);
+ $feed->setDeletedAt($this->timeFactory->getTime());
+ $this->mapper->update($feed);
+ }
+
+
+ /**
+ * Use this to undo a feed deletion
+ * @throws BusinessLayerException when feed does not exist
+ */
+ public function unmarkDeleted($feedId, $userId) {
+ $feed = $this->find($feedId, $userId);
+ $feed->setDeletedAt(0);
+ $this->mapper->update($feed);
+ }
+
+
+ public function purgeDeleted($userId=null) {
+ $now = $this->timeFactory->getTime();
+ $deleteOlderThan = $now - $this->autoPurgeMinimumInterval;
+ $toDelete = $this->mapper->getToDelete($deleteOlderThan, $userId);
+
+ foreach ($toDelete as $feed) {
+ $this->mapper->delete($feed);
+ }
+ }
+
+
}
diff --git a/businesslayer/folderbusinesslayer.php b/businesslayer/folderbusinesslayer.php
index a4c025b18..e511c4dda 100644
--- a/businesslayer/folderbusinesslayer.php
+++ b/businesslayer/folderbusinesslayer.php
@@ -26,6 +26,7 @@
namespace OCA\News\BusinessLayer;
use \OCA\AppFramework\Core\API;
+use \OCA\AppFramework\Utility\TimeFactory;
use \OCA\News\Db\Folder;
use \OCA\News\Db\FolderMapper;
@@ -34,11 +35,17 @@ use \OCA\News\Db\FolderMapper;
class FolderBusinessLayer extends BusinessLayer {
private $api;
+ private $timeFactory;
+ private $autoPurgeMinimumInterval;
public function __construct(FolderMapper $folderMapper,
- API $api){
+ API $api,
+ TimeFactory $timeFactory,
+ $autoPurgeMinimumInterval){
parent::__construct($folderMapper);
$this->api = $api;
+ $this->timeFactory = $timeFactory;
+ $this->autoPurgeMinimumInterval = $autoPurgeMinimumInterval;
}
@@ -93,5 +100,40 @@ class FolderBusinessLayer extends BusinessLayer {
}
+ /**
+ * Use this to mark a folder as deleted. That way it can be undeleted
+ * @throws BusinessLayerException when folder does not exist
+ */
+ public function markDeleted($folderId, $userId) {
+ $folder = $this->find($folderId, $userId);
+ $folder->setDeletedAt($this->timeFactory->getTime());
+ $this->mapper->update($folder);
+ }
+
+
+ /**
+ * Use this to undo a folder deletion
+ * @throws BusinessLayerException when folder does not exist
+ */
+ public function unmarkDeleted($folderId, $userId) {
+ $folder = $this->find($folderId, $userId);
+ $folder->setDeletedAt(0);
+ $this->mapper->update($folder);
+ }
+
+
+ /**
+ * Purges marked as deleted folders
+ */
+ public function purgeDeleted($userId=null) {
+ $now = $this->timeFactory->getTime();
+ $deleteOlderThan = $now - $this->autoPurgeMinimumInterval;
+ $toDelete = $this->mapper->getToDelete($deleteOlderThan, $userId);
+
+ foreach ($toDelete as $folder) {
+ $this->mapper->delete($folder);
+ }
+ }
+
}