aboutsummaryrefslogtreecommitdiff
path: root/app/Models
diff options
context:
space:
mode:
authorGravatar Marien Fressinaud <dev@marienfressinaud.fr> 2014-03-30 14:28:13 +0200
committerGravatar Marien Fressinaud <dev@marienfressinaud.fr> 2014-03-30 14:28:13 +0200
commit779afe9c4ee00f8099a423e1fceee40197a90cfa (patch)
treeabfe8682ba0032711e0eba53eb615a248943a1bd /app/Models
parent9ea3819402746d8425d4a608f2d5f3c0f5bc29fb (diff)
Import of articles is implemented!
- Remove massiveImportAction and addCategories from FeedController - Fix typo for some methods (camelCase) - addCategoryObject and addFeedObject return id if corresponding object already exists in DB - introduce addEntryObject. Return -1 if Entry already exist (in order to keep quite good performances) - Complete importArticles method Need some more tests + better performance
Diffstat (limited to 'app/Models')
-rw-r--r--app/Models/CategoryDAO.php5
-rw-r--r--app/Models/EntryDAO.php30
-rw-r--r--app/Models/FeedDAO.php5
3 files changed, 36 insertions, 4 deletions
diff --git a/app/Models/CategoryDAO.php b/app/Models/CategoryDAO.php
index 8be732b98..6a9b839b9 100644
--- a/app/Models/CategoryDAO.php
+++ b/app/Models/CategoryDAO.php
@@ -19,7 +19,8 @@ class FreshRSS_CategoryDAO extends Minz_ModelPdo {
}
public function addCategoryObject($category) {
- if (!$this->searchByName($category->name())) {
+ $cat = $this->searchByName($category->name());
+ if (!$cat) {
// Category does not exist yet in DB so we add it before continue
$values = array(
'name' => $category->name(),
@@ -27,7 +28,7 @@ class FreshRSS_CategoryDAO extends Minz_ModelPdo {
return $this->addCategory($values);
}
- return false;
+ return $cat->id();
}
public function updateCategory ($id, $valuesTmp) {
diff --git a/app/Models/EntryDAO.php b/app/Models/EntryDAO.php
index e4cf128ea..6d00967fc 100644
--- a/app/Models/EntryDAO.php
+++ b/app/Models/EntryDAO.php
@@ -35,6 +35,36 @@ class FreshRSS_EntryDAO extends Minz_ModelPdo {
}
}
+ public function addEntryObject($entry, $conf, $feedHistory) {
+ $existingGuids = array_fill_keys(
+ $this->listLastGuidsByFeed($entry->feed(), 20), 1
+ );
+
+ $nb_month_old = max($conf->old_entries, 1);
+ $date_min = time() - (3600 * 24 * 30 * $nb_month_old);
+
+ $eDate = $entry->date(true);
+
+ if ($feedHistory == -2) {
+ $feedHistory = $conf->keep_history_default;
+ }
+
+ if (!isset($existingGuids[$entry->guid()]) &&
+ ($feedHistory != 0 || $eDate >= $date_min)) {
+ $values = $entry->toArray();
+
+ $useDeclaredDate = empty($existingGuids);
+ $values['id'] = ($useDeclaredDate || $eDate < $date_min) ?
+ min(time(), $eDate) . uSecString() :
+ uTimeString();
+
+ return $this->addEntry($values);
+ }
+
+ // We don't return Entry object to avoid a research in DB
+ return -1;
+ }
+
public function markFavorite($ids, $is_favorite = true) {
if (!is_array($ids)) {
$ids = array($ids);
diff --git a/app/Models/FeedDAO.php b/app/Models/FeedDAO.php
index eac21df7e..b65ff4af0 100644
--- a/app/Models/FeedDAO.php
+++ b/app/Models/FeedDAO.php
@@ -29,7 +29,8 @@ class FreshRSS_FeedDAO extends Minz_ModelPdo {
// should not be aware about feed class
// Add feed only if we don't find it in DB
- if (!$this->searchByUrl($feed->url())) {
+ $feed_search = $this->searchByUrl($feed->url());
+ if (!$feed_search) {
$values = array(
'id' => $feed->id(),
'url' => $feed->url(),
@@ -50,7 +51,7 @@ class FreshRSS_FeedDAO extends Minz_ModelPdo {
return $id;
}
- return false;
+ return $feed_search->id();
}
public function updateFeed ($id, $valuesTmp) {