summaryrefslogtreecommitdiffstats
path: root/businesslayer
diff options
context:
space:
mode:
authorBernhard Posselt <nukeawhale@gmail.com>2013-04-22 18:24:31 +0200
committerBernhard Posselt <nukeawhale@gmail.com>2013-04-22 18:24:31 +0200
commitdf18314b32b05f10720936831ed43573e1792ae6 (patch)
treea2b8e28e165727e7a88d7ac3529f64d5f6b938e2 /businesslayer
parent366c1b15545b4da69bc8e236ba4350c28ad24e77 (diff)
added import from google reader, fix #80
Diffstat (limited to 'businesslayer')
-rw-r--r--businesslayer/feedbusinesslayer.php54
1 files changed, 32 insertions, 22 deletions
diff --git a/businesslayer/feedbusinesslayer.php b/businesslayer/feedbusinesslayer.php
index a543f352b..aba234989 100644
--- a/businesslayer/feedbusinesslayer.php
+++ b/businesslayer/feedbusinesslayer.php
@@ -34,6 +34,7 @@ use \OCA\News\Db\FeedMapper;
use \OCA\News\Db\ItemMapper;
use \OCA\News\Utility\Fetcher;
use \OCA\News\Utility\FetcherException;
+use \OCA\News\Utility\ImportParser;
class FeedBusinessLayer extends BusinessLayer {
@@ -41,15 +42,18 @@ class FeedBusinessLayer extends BusinessLayer {
private $itemMapper;
private $api;
private $timeFactory;
+ private $importParser;
public function __construct(FeedMapper $feedMapper, Fetcher $feedFetcher,
ItemMapper $itemMapper, API $api,
- TimeFactory $timeFactory){
+ TimeFactory $timeFactory,
+ ImportParser $importParser){
parent::__construct($feedMapper);
$this->feedFetcher = $feedFetcher;
$this->itemMapper = $itemMapper;
$this->api = $api;
$this->timeFactory = $timeFactory;
+ $this->importParser = $importParser;
}
@@ -190,28 +194,34 @@ class FeedBusinessLayer extends BusinessLayer {
*/
public function importGoogleReaderJSON($json, $userId) {
$url = 'http://owncloud/googlereader';
+ $urlHash = md5($url);
+
+ try {
+ $feed = $this->mapper->findByUrlHash($urlHash, $userId);
+ } catch(DoesNotExistException $ex) {
+ $feed = new Feed();
+ $feed->setUserId($userId);
+ $feed->setUrlHash($urlHash);
+ $feed->setUrl($url);
+ $feed->setTitle('Google Reader');
+ $feed->setAdded($this->timeFactory->getTime());
+ $feed->setFolderId(0);
+ $feed->setPreventUpdate(true);
+ $feed = $this->mapper->insert($feed);
+ }
+
+ foreach($this->importParser->parse($json) as $item) {
+ $item->setFeedId($feed->getId());
+ try {
+ $this->itemMapper->findByGuidHash(
+ $item->getGuidHash(), $item->getFeedId(), $userId);
+ } catch(DoesNotExistException $ex) {
+ $this->itemMapper->insert($item);
+ }
+ }
+
+ return $this->mapper->findByUrlHash($urlHash, $userId);
- // TODO: write unittests that ensure that the correct
- // feed parameters are being returned
-
- // you need to check first if the feed exists and if it does
- // use that feed to add the items and to return
- // if this has not been saved, these are the values
- // that need to be set fyi
- $feed = new Feed();
- $feed->setUserId($userId);
- $feed->setUrlHash(md5($url));
- $feed->setUrl($url);
- $feed->setTitle('Google Reader');
- $feed->setAdded($this->timeFactory->getTime());
- $feed->setFolderId(0);
- $feed->setPreventUpdate(true);
-
-
- // TODO: after saving the above feed, query the feed from the
- // database to get the unreadCount (this is being set in the
- // sql query) see line 177
- return $feed;
}