diff options
-rw-r--r-- | ajax/createfeed.php | 8 | ||||
-rw-r--r-- | ajax/deletefolder.php | 2 | ||||
-rw-r--r-- | ajax/setallitemsread.php | 2 | ||||
-rw-r--r-- | ajax/updatefeed.php | 12 | ||||
-rw-r--r-- | js/news.js | 2 | ||||
-rw-r--r-- | lib/item.php | 22 | ||||
-rw-r--r-- | lib/itemmapper.php | 17 | ||||
-rw-r--r-- | templates/part.items.php | 2 | ||||
-rw-r--r-- | templates/part.listfeed.php | 6 | ||||
-rw-r--r-- | templates/test.php | 2 |
10 files changed, 45 insertions, 30 deletions
diff --git a/ajax/createfeed.php b/ajax/createfeed.php index c0ad68815..e66f6b125 100644 --- a/ajax/createfeed.php +++ b/ajax/createfeed.php @@ -35,9 +35,10 @@ $userid = OCP\USER::getUser(); $feedurl = trim($_POST['feedurl']); $folderid = trim($_POST['folderid']); -$feedmapper = new OCA\News\FeedMapper(); +$feedmapper = new OCA\News\FeedMapper($userid); $feedid = $feedmapper->findIdFromUrl($feedurl); + $l = OC_L10N::get('news'); if ($feedid === null) { @@ -58,9 +59,12 @@ if($feed === null || !$feedid) { exit(); } -// FIXME: assign counter +$itemmapper = new OCA\News\ItemMapper($userid); +$unreadItemsCount = $itemmapper->countAllStatus($feedid, OCA\News\StatusFlag::UNREAD); + $tmpl_listfeed = new OCP\Template("news", "part.listfeed"); $tmpl_listfeed->assign('feed', $feed); +$tmpl_listfeed->assign('unreadItemsCount', $unreadItemsCount); $listfeed = $tmpl_listfeed->fetchPage(); $tmpl_newfeed = new OCP\Template("news", "part.items.new"); diff --git a/ajax/deletefolder.php b/ajax/deletefolder.php index daf9a8397..20017c5c0 100644 --- a/ajax/deletefolder.php +++ b/ajax/deletefolder.php @@ -31,7 +31,7 @@ if(!$foldermapper->deleteById($folderid)) { // lets check if the currently shown feed is among the deleted feeds if ($shownfeedid != null) { - $feedmapper = new OC_News_FeedMapper(); + $feedmapper = new OCA\News\FeedMapper(); if (!$feedmapper->findById($shownfeedid)) { $tmpl = new OCP\Template("news", "part.items.deleted"); $part_items = $tmpl->fetchPage(); diff --git a/ajax/setallitemsread.php b/ajax/setallitemsread.php index 4c1876b50..2d2ccead5 100644 --- a/ajax/setallitemsread.php +++ b/ajax/setallitemsread.php @@ -18,7 +18,7 @@ OCP\JSON::callCheck(); $feedId = $_POST['feedId']; $itemMapper = new OCA\News\ItemMapper(); -$items = $itemMapper->findAllStatus($feedId, OCA\News\StatusFlag::Unread); +$items = $itemMapper->findAllStatus($feedId, OCA\News\StatusFlag::UNREAD); // FIXME: maybe there is a way to set all items read in the // FeedMapper instead of iterating through every item and updating as diff --git a/ajax/updatefeed.php b/ajax/updatefeed.php index f8dc2b13d..e29db31e3 100644 --- a/ajax/updatefeed.php +++ b/ajax/updatefeed.php @@ -38,15 +38,9 @@ if(!$newfeedid) { exit(); } else { - //TODO: maybe make this more efficient by coding it into OC_News_FeedMapper->save() - $itemmapper = new OCA\News\ItemMapper(); - $items = $itemmapper->findAll($newfeedid); - $unreadcounter = 0; - foreach($items as $item) { - if(!$item->isRead()) - ++$unreadcounter; - } - + $itemmapper = new OCA\News\ItemMapper($userid); + $unreadcounter = $itemmapper->countAllStatus($newfeedid, OCA\News\StatusFlag::UNREAD); + OCP\JSON::success(array('data' => array('message' => $l->t('Feed updated!'), 'unreadcount' => $unreadcounter))); exit(); } diff --git a/js/news.js b/js/news.js index ab60950a1..4c57d6cbe 100644 --- a/js/news.js +++ b/js/news.js @@ -665,7 +665,7 @@ $(document).ready(function(){ setupFeedList(); News.Feed.updateAll(); - var updateInterval = 200000; //how often the feeds should update (in msec) + var updateInterval = 20000; //how often the feeds should update (in msec) setInterval('News.Feed.updateAll()', updateInterval); bindItemEventListeners(); diff --git a/lib/item.php b/lib/item.php index 3e9b3f5b7..acef41c92 100644 --- a/lib/item.php +++ b/lib/item.php @@ -13,10 +13,10 @@ namespace OCA\News; class StatusFlag{ - const Unread = 0x02; - const Important = 0x04; - const Deleted = 0x08; - const Updated = 0x16; + const UNREAD = 0x02; + const IMPORTANT = 0x04; + const DELETED = 0x08; + const UPDATED = 0x16; } /** @@ -40,7 +40,7 @@ class Item { $this->guid = $guid; $this->body = $body; if ($id == null) { - $this->status |= StatusFlag::Unread; + $this->status |= StatusFlag::UNREAD; } else { $this->id = $id; @@ -64,27 +64,27 @@ class Item { } public function setRead(){ - $this->status &= ~StatusFlag::Unread; + $this->status &= ~StatusFlag::UNREAD; } public function setUnread(){ - $this->status |= StatusFlag::Unread; + $this->status |= StatusFlag::UNREAD; } public function isRead(){ - return !($this->status & StatusFlag::Unread); + return !($this->status & StatusFlag::UNREAD); } public function setImportant(){ - $this->status |= StatusFlag::Important; + $this->status |= StatusFlag::IMPORTANT; } public function setUnimportant(){ - $this->status &= ~StatusFlag::Important; + $this->status &= ~StatusFlag::IMPORTANT; } public function isImportant(){ - return ($this->status & StatusFlag::Important); + return ($this->status & StatusFlag::IMPORTANT); } /** diff --git a/lib/itemmapper.php b/lib/itemmapper.php index 35060f0a4..95488b14f 100644 --- a/lib/itemmapper.php +++ b/lib/itemmapper.php @@ -19,6 +19,14 @@ namespace OCA\News; class ItemMapper { const tableName = '*PREFIX*news_items'; + private $userid; + + public function __construct($userid = null){ + if ($userid !== null) { + $this->userid = $userid; + } + $this->userid = \OCP\USER::getUser(); + } /** * @brief @@ -77,6 +85,15 @@ class ItemMapper { return $items; } + + public function countAllStatus($feedid, $status){ + $stmt = \OCP\DB::prepare('SELECT COUNT(*) as size FROM ' . self::tableName . ' + WHERE feed_id = ? + AND (status & ?)'); + $result=$stmt->execute(array($feedid, $status))->fetchRow(); + return $result['size']; + } + public function findIdFromGuid($guid_hash, $guid, $feedid){ $stmt = \OCP\DB::prepare(' diff --git a/templates/part.items.php b/templates/part.items.php index afac3e10a..399274e30 100644 --- a/templates/part.items.php +++ b/templates/part.items.php @@ -6,7 +6,7 @@ $itemMapper = new OCA\News\ItemMapper(); $showOnlyUnread = true; // FIXME: get this from the settings db if($showOnlyUnread){ - $items = $itemMapper->findAllStatus($feedId, OCA\News\StatusFlag::Unread); + $items = $itemMapper->findAllStatus($feedId, OCA\News\StatusFlag::UNREAD); } else { $items = $itemMapper->findAll($feedId); } diff --git a/templates/part.listfeed.php b/templates/part.listfeed.php index 7d5c91afd..8b64a3846 100644 --- a/templates/part.listfeed.php +++ b/templates/part.listfeed.php @@ -3,14 +3,14 @@ $l = new OC_l10n('news'); $feed = isset($_['feed']) ? $_['feed'] : null; -$unreadItems = isset($_['unreadItems']) ? $_['unreadItems'] : null; +$unreadItemsCount = isset($_['unreadItemsCount']) ? $_['unreadItemsCount'] : null; $favicon = $feed->getFavicon(); if ($favicon == null) { $favicon = OCP\Util::imagePath('news', 'rss.svg'); } -if($unreadItems == 0){ +if($unreadItemsCount == 0){ $allReadClass = 'all_read'; } else { $allReadClass = ''; @@ -18,7 +18,7 @@ if($unreadItems == 0){ echo '<li class="feed" data-id="' . $feed->getId() . '">'; echo '<a href="#" style="background: url(' . $favicon . ') left center no-repeat; background-size:16px 16px;" class="' . $allReadClass . '">' . $feed->getTitle() .'</a>'; - echo '<span class="unreaditemcounter ' . $allReadClass . '">' . $unreadItems . '</span>'; + echo '<span class="unreaditemcounter ' . $allReadClass . '">' . $unreadItemsCount . '</span>'; echo '<button class="svg action feeds_edit" title="' . $l->t('Edit feed') . '"></button>'; echo '<button class="svg action feeds_delete" onClick="(News.Feed.delete(' . $feed->getId(). '))" title="' . $l->t('Delete feed') . '"></button>'; echo '</li>'; diff --git a/templates/test.php b/templates/test.php index 35a1019ed..3ef18c954 100644 --- a/templates/test.php +++ b/templates/test.php @@ -2,7 +2,7 @@ $itemmapper = new OCA\News\ItemMapper(); -$items = $itemmapper->findAllStatus(155, OCA\News\StatusFlag::Unread); +$items = $itemmapper->findAllStatus(155, OCA\News\StatusFlag::UNREAD); foreach ($items as $item) { echo $item->getTitle(); |