summaryrefslogtreecommitdiffstats
path: root/bl/feedbl.php
diff options
context:
space:
mode:
authorBernhard Posselt <nukeawhale@gmail.com>2013-04-02 12:04:45 +0200
committerBernhard Posselt <nukeawhale@gmail.com>2013-04-02 12:04:45 +0200
commitc795c0aa10f7d404a96ac893d3ba2972724d8511 (patch)
tree56b8a9bc27379ac0fb28d21abd831acf8eaef13f /bl/feedbl.php
parentbd7d13ce963f286459684934257a6a1e61d7bfc7 (diff)
fix #11 by not relying on db exceptions anymore since there is no fking proper exception handling in the owncloud db code and stuff will break. instead update when item has been found and if not insert
Diffstat (limited to 'bl/feedbl.php')
-rw-r--r--bl/feedbl.php21
1 files changed, 10 insertions, 11 deletions
diff --git a/bl/feedbl.php b/bl/feedbl.php
index 0bd0e9e0d..661f1f8f5 100644
--- a/bl/feedbl.php
+++ b/bl/feedbl.php
@@ -111,33 +111,32 @@ class FeedBl extends Bl {
// newest item
for($i=count($items)-1; $i>=0; $i--){
$item = $items[$i];
+ $item->setFeedId($feed->getId());
- // if a database exception is being thrown the unique constraint
- // on the item guid hash is being violated and we need to update
- // the item
+ // if a doesnotexist exception is being thrown the entry does not
+ // exist and the item needs to be created, otherwise
+ // update it
try {
- $item->setFeedId($feed->getId());
- $this->itemMapper->insert($item);
- } catch(\DatabaseException $ex){
+ $existing = $this->itemMapper->findByGuidHash(
+ $item->getGuidHash(), $feedId, $userId);
// in case of an update the existing item has to be deleted
// if the pub_date changed because we sort by id on the
// client side since this is the only reliable way to do it
// to not get weird behaviour
- $existing = $this->itemMapper->findByGuidHash(
- $item->getGuidHash(), $feedId, $userId);
-
if($existing->getPubDate() !== $item->getPubDate()){
// because the item is being replaced we need to keep
- // status flags
+ // status flags but we want the new entry to be unread
$item->setStatus($existing->getStatus());
$item->setUnread();
$this->itemMapper->delete($existing);
$this->itemMapper->insert($item);
}
-
+
+ } catch(DoesNotExistException $ex){
+ $this->itemMapper->insert($item);
}
}