summaryrefslogtreecommitdiffstats
path: root/lib/Db/Item.php
diff options
context:
space:
mode:
authorDaniel Opitz <danopz@users.noreply.github.com>2017-08-14 10:34:53 +0200
committerBernhard Posselt <BernhardPosselt@users.noreply.github.com>2017-08-14 10:34:53 +0200
commita97dd58e3b499b60ac8b37786d402d7f2e371a88 (patch)
tree98bb8a6c750fb33fbef38d22407fa29fbf6c7b1e /lib/Db/Item.php
parent7d8a85c82c4c13a71b70ddb4ecb8c40ede4c9b70 (diff)
Split binary to booleans (#203)
* replaced old status with 2 flags for unread and starred * add fields to db, replace int(1,0) with booleans in sql queries, removed StatusFlags class + refactor code relying to it * add repair step for migration * again use integer(1,0) instead of bool in sql queries, because of sqlite doesn't support true/false * add/fix unit tests for new boolean status * set unread/starred flags as statements in sql * fixed mysql unknown column items.unread, fixed marking of read items on repair step * remove unnecessary bool casts * add empty checks to Items::is* methods * update migration to use native sql instead of the querybuilder * don't cast the flags manually, let the api do the work
Diffstat (limited to 'lib/Db/Item.php')
-rw-r--r--lib/Db/Item.php55
1 files changed, 11 insertions, 44 deletions
diff --git a/lib/Db/Item.php b/lib/Db/Item.php
index f19843c8e..a781048fd 100644
--- a/lib/Db/Item.php
+++ b/lib/Db/Item.php
@@ -37,14 +37,14 @@ use \OCP\AppFramework\Db\Entity;
* @method void setEnclosureLink(string $value)
* @method integer getFeedId()
* @method void setFeedId(integer $value)
- * @method integer getStatus()
- * @method void setStatus(integer $value)
* @method void setRtl(boolean $value)
* @method string getLastModified()
* @method void setLastModified(string $value)
* @method void setFingerprint(string $value)
* @method void setContentHash(string $value)
* @method void setSearchIndex(string $value)
+ * @method void setUnread(bool $value)
+ * @method void setStarred(bool $value)
*/
class Item extends Entity implements IAPI, \JsonSerializable {
@@ -67,53 +67,28 @@ class Item extends Entity implements IAPI, \JsonSerializable {
protected $searchIndex;
protected $rtl;
protected $fingerprint;
+ protected $unread = false;
+ protected $starred = false;
public function __construct() {
$this->addType('pubDate', 'integer');
$this->addType('updatedDate', 'integer');
$this->addType('feedId', 'integer');
- $this->addType('status', 'integer');
$this->addType('rtl', 'boolean');
- }
-
- public function setRead() {
- $this->markFieldUpdated('status');
- $this->status &= ~StatusFlag::UNREAD;
- }
-
- public function isRead() {
- return !(($this->status & StatusFlag::UNREAD) === StatusFlag::UNREAD);
- }
-
- public function setUnread() {
- $this->markFieldUpdated('status');
- $this->status |= StatusFlag::UNREAD;
+ $this->addType('unread', 'boolean');
+ $this->addType('starred', 'boolean');
}
public function isUnread() {
- return !$this->isRead();
- }
-
- public function setStarred() {
- $this->markFieldUpdated('status');
- $this->status |= StatusFlag::STARRED;
+ return $this->unread;
}
public function isStarred() {
- return ($this->status & StatusFlag::STARRED) === StatusFlag::STARRED;
- }
-
- public function setUnstarred() {
- $this->markFieldUpdated('status');
- $this->status &= ~StatusFlag::STARRED;
- }
-
- public function isUnstarred() {
- return !$this->isStarred();
+ return $this->starred;
}
/**
- * Turns entitie attributes into an array
+ * Turns entity attributes into an array
*/
public function jsonSerialize() {
return [
@@ -196,16 +171,8 @@ class Item extends Entity implements IAPI, \JsonSerializable {
$item->setEnclosureMime($import['enclosureMime']);
$item->setEnclosureLink($import['enclosureLink']);
$item->setRtl($import['rtl']);
- if ($import['unread']) {
- $item->setUnread();
- } else {
- $item->setRead();
- }
- if ($import['starred']) {
- $item->setStarred();
- } else {
- $item->setUnstarred();
- }
+ $item->setUnread($import['unread']);
+ $item->setStarred($import['starred']);
return $item;
}