diff options
-rw-r--r-- | backgroundjob/task.php | 2 | ||||
-rw-r--r-- | bl/feedbl.php | 24 | ||||
-rw-r--r-- | bl/itembl.php | 24 | ||||
-rw-r--r-- | db/itemmapper.php | 21 | ||||
-rw-r--r-- | dependencyinjection/dicontainer.php | 6 | ||||
-rw-r--r-- | tests/bl/FeedBlTest.php | 21 | ||||
-rw-r--r-- | tests/bl/ItemBlTest.php | 23 | ||||
-rw-r--r-- | tests/db/FeedMapperTest.php | 28 | ||||
-rw-r--r-- | tests/db/ItemMapperTest.php | 28 |
9 files changed, 101 insertions, 76 deletions
diff --git a/backgroundjob/task.php b/backgroundjob/task.php index 363657e61..2274f7b99 100644 --- a/backgroundjob/task.php +++ b/backgroundjob/task.php @@ -35,7 +35,7 @@ class Task { static public function run() { $container = new DIContainer(); $container['FeedBl']->updateAll(); - $container['FeedBl']->autoPurgeOld(); + $container['ItemBl']->autoPurgeOld(); } diff --git a/bl/feedbl.php b/bl/feedbl.php index 07cf5df8f..53c430336 100644 --- a/bl/feedbl.php +++ b/bl/feedbl.php @@ -39,16 +39,13 @@ class FeedBl extends Bl { private $feedFetcher; private $itemMapper; private $api; - private $autoPurgeCount; public function __construct(FeedMapper $feedMapper, Fetcher $feedFetcher, - ItemMapper $itemMapper, API $api, - $autoPurgeCount=0){ + ItemMapper $itemMapper, API $api){ parent::__construct($feedMapper); $this->feedFetcher = $feedFetcher; $this->itemMapper = $itemMapper; $this->api = $api; - $this->autoPurgeCount = $autoPurgeCount; } @@ -158,23 +155,4 @@ class FeedBl extends Bl { } - /** - * This method deletes all unread feeds that are not starred and over the - * count of $this->autoPurgeCount starting by the oldest. This is to clean - * up the database so that old entries dont spam your db. As criteria for - * old, the id is taken - */ - public function autoPurgeOld(){ - $readAndNotStarred = - $this->mapper->getReadOlderThanThreshold($this->autoPurgeCount); - - // delete entries with a lower id than last item - if($this->autoPurgeCount > 0 - && isset($readAndNotStarred[$this->autoPurgeCount-1])){ - $this->mapper->deleteReadOlderThanId( - $readAndNotStarred[$this->autoPurgeCount-1]->getId()); - } - } - - } diff --git a/bl/itembl.php b/bl/itembl.php index ee87d373a..eaf69c3ca 100644 --- a/bl/itembl.php +++ b/bl/itembl.php @@ -34,10 +34,13 @@ use \OCA\News\Db\FeedType; class ItemBl extends Bl { private $statusFlag; + private $autoPurgeCount; - public function __construct(ItemMapper $itemMapper, StatusFlag $statusFlag){ + public function __construct(ItemMapper $itemMapper, StatusFlag $statusFlag, + $autoPurgeCount=0){ parent::__construct($itemMapper); $this->statusFlag = $statusFlag; + $this->autoPurgeCount = $autoPurgeCount; } @@ -118,4 +121,23 @@ class ItemBl extends Bl { } + /** + * This method deletes all unread feeds that are not starred and over the + * count of $this->autoPurgeCount starting by the oldest. This is to clean + * up the database so that old entries dont spam your db. As criteria for + * old, the id is taken + */ + public function autoPurgeOld(){ + $readAndNotStarred = + $this->mapper->getReadOlderThanThreshold($this->autoPurgeCount); + + // delete entries with a lower id than last item + if($this->autoPurgeCount > 0 + && isset($readAndNotStarred[$this->autoPurgeCount-1])){ + $this->mapper->deleteReadOlderThanId( + $readAndNotStarred[$this->autoPurgeCount-1]->getId()); + } + } + + } diff --git a/db/itemmapper.php b/db/itemmapper.php index f4702a626..a5c0e8af2 100644 --- a/db/itemmapper.php +++ b/db/itemmapper.php @@ -183,4 +183,25 @@ class ItemMapper extends Mapper implements IMapper { } + public function getReadOlderThanThreshold($threshold){ + + // we want items that are not starred and not unread + $status = StatusFlag::STARRED | StatusFlag::UNREAD; + $sql = 'SELECT * FROM `*PREFIX*news_items` ' . + 'WHERE NOT ((`status` & ?) > 0)'; + + $params = array($status); + return $this->findAllRows($sql, $params, $threshold); + } + + + public function deleteReadOlderThanId($id){ + $status = StatusFlag::STARRED | StatusFlag::UNREAD; + $sql = 'DELETE FROM `*PREFIX*news_items` WHERE `id` < ? ' . + 'AND NOT ((`status` & ?) > 0)'; + $params = array($id, $status); + $this->execute($sql, $params); + } + + } diff --git a/dependencyinjection/dicontainer.php b/dependencyinjection/dicontainer.php index 4d5a6420c..3b13b251a 100644 --- a/dependencyinjection/dicontainer.php +++ b/dependencyinjection/dicontainer.php @@ -107,12 +107,12 @@ class DIContainer extends BaseContainer { $this['FeedBl'] = $this->share(function($c){ return new FeedBl($c['FeedMapper'], $c['Fetcher'], - $c['ItemMapper'], $c['API'], - $c['autoPurgeCount']); + $c['ItemMapper'], $c['API']); }); $this['ItemBl'] = $this->share(function($c){ - return new ItemBl($c['ItemMapper'], $c['StatusFlag']); + return new ItemBl($c['ItemMapper'], $c['StatusFlag'], + $c['autoPurgeCount']); }); diff --git a/tests/bl/FeedBlTest.php b/tests/bl/FeedBlTest.php index 5ad02e789..ae0414614 100644 --- a/tests/bl/FeedBlTest.php +++ b/tests/bl/FeedBlTest.php @@ -50,7 +50,6 @@ class FeedBlTest extends \OCA\AppFramework\Utility\TestUtility { private $threshold; protected function setUp(){ - $this->threshold = 2; $this->api = $this->getAPIMock(); $this->mapper = $this->getMockBuilder('\OCA\News\Db\FeedMapper') ->disableOriginalConstructor() @@ -62,8 +61,7 @@ class FeedBlTest extends \OCA\AppFramework\Utility\TestUtility { ->disableOriginalConstructor() ->getMock(); $this->bl = new FeedBl($this->mapper, - $this->fetcher, $this->itemMapper, $this->api, - $this->threshold); + $this->fetcher, $this->itemMapper, $this->api); $this->user = 'jack'; $response = 'hi'; @@ -305,23 +303,6 @@ class FeedBlTest extends \OCA\AppFramework\Utility\TestUtility { } - public function testAutoPurgeOldWillPurgeOld(){ - $feed = new Feed(); - $feed->setId(3); - $unread = array( - new Feed(), $feed - ); - $this->mapper->expects($this->once()) - ->method('getReadOlderThanThreshold') - ->with($this->equalTo($this->threshold)) - ->will($this->returnValue($unread)); - $this->mapper->expects($this->once()) - ->method('deleteReadOlderThanId') - ->with($this->equalTo($feed->getId())); - - $result = $this->bl->autoPurgeOld(); - - } } diff --git a/tests/bl/ItemBlTest.php b/tests/bl/ItemBlTest.php index dc8f46a2c..40d922528 100644 --- a/tests/bl/ItemBlTest.php +++ b/tests/bl/ItemBlTest.php @@ -55,7 +55,8 @@ class ItemBlTest extends \OCA\AppFramework\Utility\TestUtility { $statusFlag->expects($this->any()) ->method('typeToStatus') ->will($this->returnValue($this->status)); - $this->bl = new ItemBl($this->mapper, $statusFlag); + $this->threshold = 2; + $this->bl = new ItemBl($this->mapper, $statusFlag, $this->threshold); $this->user = 'jack'; $response = 'hi'; $this->id = 3; @@ -245,6 +246,26 @@ class ItemBlTest extends \OCA\AppFramework\Utility\TestUtility { $this->bl->readFeed($feedId, $highestItemId, $this->user); } + + public function testAutoPurgeOldWillPurgeOld(){ + $item = new Item(); + $item->setId(3); + $unread = array( + new Item(), $item + ); + $this->mapper->expects($this->once()) + ->method('getReadOlderThanThreshold') + ->with($this->equalTo($this->threshold)) + ->will($this->returnValue($unread)); + $this->mapper->expects($this->once()) + ->method('deleteReadOlderThanId') + ->with($this->equalTo($item->getId())); + + $result = $this->bl->autoPurgeOld(); + + } + + } diff --git a/tests/db/FeedMapperTest.php b/tests/db/FeedMapperTest.php index 58a683836..d7163be30 100644 --- a/tests/db/FeedMapperTest.php +++ b/tests/db/FeedMapperTest.php @@ -249,32 +249,6 @@ class FeedMapperTest extends \OCA\AppFramework\Utility\MapperTestUtility { } - public function testGetReadOlderThanThreshold(){ - $status = StatusFlag::STARRED | StatusFlag::UNREAD; - $sql = 'SELECT * FROM `*PREFIX*news_items` ' . - 'WHERE NOT ((`status` & ?) > 0)'; - $threshold = 10; - $feed = new Feed(); - $feed->setId(30); - $rows = array(array('id' => 30)); - $params = array($status); - - $this->setMapperResult($sql, $params, $rows); - $result = $this->mapper->getReadOlderThanThreshold($threshold); - - $this->assertEquals($feed->getId(), $result[0]->getId()); - } - - - public function testDeleteReadOlderThanId(){ - $id = 10; - $status = StatusFlag::STARRED | StatusFlag::UNREAD; - $sql = 'DELETE FROM `*PREFIX*news_items` WHERE `id` < ? ' . - 'AND NOT ((`status` & ?) > 0)'; - $params = array($id, $status); - - $this->setMapperResult($sql, $params); - $this->mapper->deleteReadOlderThanId($id); - } + }
\ No newline at end of file diff --git a/tests/db/ItemMapperTest.php b/tests/db/ItemMapperTest.php index ea0feadd8..de9b2b4ac 100644 --- a/tests/db/ItemMapperTest.php +++ b/tests/db/ItemMapperTest.php @@ -262,4 +262,32 @@ class ItemMapperTest extends \OCA\AppFramework\Utility\MapperTestUtility { $this->assertEquals($this->items[0], $result); } + + public function testGetReadOlderThanThreshold(){ + $status = StatusFlag::STARRED | StatusFlag::UNREAD; + $sql = 'SELECT * FROM `*PREFIX*news_items` ' . + 'WHERE NOT ((`status` & ?) > 0)'; + $threshold = 10; + $feed = new Feed(); + $feed->setId(30); + $rows = array(array('id' => 30)); + $params = array($status); + + $this->setMapperResult($sql, $params, $rows); + $result = $this->mapper->getReadOlderThanThreshold($threshold); + + $this->assertEquals($feed->getId(), $result[0]->getId()); + } + + + public function testDeleteReadOlderThanId(){ + $id = 10; + $status = StatusFlag::STARRED | StatusFlag::UNREAD; + $sql = 'DELETE FROM `*PREFIX*news_items` WHERE `id` < ? ' . + 'AND NOT ((`status` & ?) > 0)'; + $params = array($id, $status); + + $this->setMapperResult($sql, $params); + $this->mapper->deleteReadOlderThanId($id); + } }
\ No newline at end of file |