summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ajax/createfeed.php8
-rw-r--r--ajax/deletefolder.php2
-rw-r--r--ajax/setallitemsread.php2
-rw-r--r--ajax/updatefeed.php12
-rw-r--r--js/news.js2
-rw-r--r--lib/item.php22
-rw-r--r--lib/itemmapper.php17
-rw-r--r--templates/part.items.php2
-rw-r--r--templates/part.listfeed.php6
-rw-r--r--templates/test.php2
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 c53f364c4..dbe9a53a1 100644
--- a/js/news.js
+++ b/js/news.js
@@ -654,7 +654,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();