aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Alexandre Alapetite <alexandre@alapetite.fr> 2015-05-09 13:07:54 +0200
committerGravatar Alexandre Alapetite <alexandre@alapetite.fr> 2015-05-09 13:07:54 +0200
commit7f7de31c1dcb6599be5c5713f36b4bde1d03d47a (patch)
tree4f9da11cb30a4835172e55a86c91073a6d2a44c3
parent711530a512b370d79b079205ce1f8376174f7f03 (diff)
SQL: update request for updated articles
https://github.com/FreshRSS/FreshRSS/issues/798
-rwxr-xr-xapp/Controllers/feedController.php2
-rw-r--r--app/Models/Entry.php4
-rw-r--r--app/Models/EntryDAO.php16
3 files changed, 16 insertions, 6 deletions
diff --git a/app/Controllers/feedController.php b/app/Controllers/feedController.php
index 08a0257a2..59c9174fb 100755
--- a/app/Controllers/feedController.php
+++ b/app/Controllers/feedController.php
@@ -343,7 +343,7 @@ class FreshRSS_feed_Controller extends Minz_ActionController {
} else { //This entry already exists but has been updated
Minz_Log::debug('Entry with GUID `' . $entry->guid() . '` updated in feed ' . $feed->id() .
', old hash ' . $existingHash . ', new hash ' . $entry->hash());
- $entry->_isRead($is_read); //Reset is_read
+ $entry->_isRead(null); //Change is_read according to policy. //TODO: Implement option
if (!$entryDAO->hasTransaction()) {
$entryDAO->beginTransaction();
}
diff --git a/app/Models/Entry.php b/app/Models/Entry.php
index 6931c9f25..a562a963a 100644
--- a/app/Models/Entry.php
+++ b/app/Models/Entry.php
@@ -15,7 +15,7 @@ class FreshRSS_Entry extends Minz_Model {
private $link;
private $date;
private $hash = null;
- private $is_read;
+ private $is_read; //Nullable boolean
private $is_favorite;
private $feed;
private $tags;
@@ -125,7 +125,7 @@ class FreshRSS_Entry extends Minz_Model {
$this->date = $value > 1 ? $value : time();
}
public function _isRead($value) {
- $this->is_read = $value;
+ $this->is_read = $value === null ? null : (bool)$value;
}
public function _isFavorite($value) {
$this->is_favorite = $value;
diff --git a/app/Models/EntryDAO.php b/app/Models/EntryDAO.php
index 5b4b85547..543b61573 100644
--- a/app/Models/EntryDAO.php
+++ b/app/Models/EntryDAO.php
@@ -91,11 +91,17 @@ class FreshRSS_EntryDAO extends Minz_ModelPdo implements FreshRSS_Searchable {
private $updateEntryPrepared = null;
public function updateEntry($valuesTmp) {
+ if (!isset($valuesTmp['is_read'])) {
+ $valuesTmp['is_read'] = null;
+ }
+
if ($this->updateEntryPrepared === null) {
$sql = 'UPDATE `' . $this->prefix . 'entry` '
. 'SET title=?, author=?, '
. ($this->isCompressed() ? 'content_bin=COMPRESS(?)' : 'content=?')
- . ', link=?, date=?, lastSeen=?, hash=X?, is_read=?, tags=? '
+ . ', link=?, date=?, lastSeen=?, hash=X?, '
+ . ($valuesTmp['is_read'] === null ? '' : 'is_read=?, ')
+ . 'tags=? '
. 'WHERE id_feed=? AND guid=?';
$this->updateEntryPrepared = $this->bd->prepare($sql);
}
@@ -108,11 +114,15 @@ class FreshRSS_EntryDAO extends Minz_ModelPdo implements FreshRSS_Searchable {
$valuesTmp['date'],
time(),
$valuesTmp['hash'],
- $valuesTmp['is_read'] ? 1 : 0,
+ );
+ if ($valuesTmp['is_read'] !== null) {
+ $values[] = $valuesTmp['is_read'] ? 1 : 0;
+ }
+ $values = array_merge($values, array(
substr($valuesTmp['tags'], 0, 1023),
$valuesTmp['id_feed'],
substr($valuesTmp['guid'], 0, 760),
- );
+ ));
if ($this->updateEntryPrepared && $this->updateEntryPrepared->execute($values)) {
return $this->bd->lastInsertId();