diff options
author | Bernhard Posselt <nukeawhale@gmail.com> | 2013-05-10 13:30:00 +0200 |
---|---|---|
committer | Bernhard Posselt <nukeawhale@gmail.com> | 2013-05-10 13:30:00 +0200 |
commit | 347000cc2d5597c1971942ebdbe97461c9fa5802 (patch) | |
tree | 8a2f6dc166ad871c646b4cf8bf13f4a9fcd02e55 /businesslayer | |
parent | c487bfe23312a5b266d8eb21a3825ab791a1c3e8 (diff) |
use a deleted flag for deleted feeds to handle undo
Diffstat (limited to 'businesslayer')
-rw-r--r-- | businesslayer/feedbusinesslayer.php | 38 | ||||
-rw-r--r-- | businesslayer/folderbusinesslayer.php | 44 |
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); + } + } + } |