From 61943f1661383bf8017b4c2a76fd11618e4adae0 Mon Sep 17 00:00:00 2001 From: Marien Fressinaud Date: Thu, 11 Apr 2013 20:32:10 +0200 Subject: Plus possible d'ajouter un flux déjà existant + meilleure gestion actualisation / import OPML MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/feedController.php | 60 +++++++++++++++++++++++--------------- app/models/Category.php | 4 --- app/models/Entry.php | 2 -- app/models/Feed.php | 18 ++++++++++-- 4 files changed, 52 insertions(+), 32 deletions(-) diff --git a/app/controllers/feedController.php b/app/controllers/feedController.php index 3fbb20835..d2a2f29f5 100755 --- a/app/controllers/feedController.php +++ b/app/controllers/feedController.php @@ -34,7 +34,13 @@ class feedController extends ActionController { 'lastUpdate' => time () ); - if ($feedDAO->addFeed ($values)) { + if ($feedDAO->searchByUrl ($values['url'])) { + $notif = array ( + 'type' => 'bad', + 'content' => 'Vous êtes déjà abonné à ' . $feed->name () . '' + ); + Session::_param ('notification', $notif); + } elseif ($feedDAO->addFeed ($values)) { $entryDAO = new EntryDAO (); $entries = $feed->entries (); @@ -101,19 +107,19 @@ class feedController extends ActionController { foreach ($feeds as $feed) { try { $feed->load (); - } catch (FeedException $e) { - Log::record ($e->getMessage (), Log::ERROR); - } - $entries = $feed->entries (); + $entries = $feed->entries (); - foreach ($entries as $entry) { - if ($entry->date (true) >= $date_min) { - $values = $entry->toArray (); - $entryDAO->addEntry ($values); + foreach ($entries as $entry) { + if ($entry->date (true) >= $date_min) { + $values = $entry->toArray (); + $entryDAO->addEntry ($values); + } } - } - $feedDAO->updateLastUpdate ($feed->id ()); + $feedDAO->updateLastUpdate ($feed->id ()); + } catch (FeedException $e) { + Log::record ($e->getMessage (), Log::ERROR); + } $i++; if ($i >= 10) { @@ -153,20 +159,26 @@ class feedController extends ActionController { $i = 0; foreach ($feeds as $feed) { - $feed->load (); + try { + $feed->load (); - // Enregistrement du flux - $values = array ( - 'id' => $feed->id (), - 'url' => $feed->url (), - 'category' => $feed->category (), - 'name' => $feed->name (), - 'website' => $feed->website (), - 'description' => $feed->description (), - 'lastUpdate' => 0 - ); + // Enregistrement du flux + $values = array ( + 'id' => $feed->id (), + 'url' => $feed->url (), + 'category' => $feed->category (), + 'name' => $feed->name (), + 'website' => $feed->website (), + 'description' => $feed->description (), + 'lastUpdate' => 0 + ); - $feedDAO->addFeed ($values); + if (!$feedDAO->searchByUrl ($values['url'])) { + $feedDAO->addFeed ($values); + } + } catch (FeedException $e) { + Log::record ($e->getMessage (), Log::ERROR); + } } Request::forward (array ( @@ -203,7 +215,7 @@ class feedController extends ActionController { $catDAO = new CategoryDAO (); foreach ($categories as $cat) { - if (!$catDAO->searchByName ()) { + if (!$catDAO->searchByName ($cat->name ())) { $values = array ( 'id' => $cat->id (), 'name' => $cat->name (), diff --git a/app/models/Category.php b/app/models/Category.php index a153b8838..ae803591f 100755 --- a/app/models/Category.php +++ b/app/models/Category.php @@ -130,8 +130,6 @@ class CategoryDAO extends Model_pdo { if (isset ($cat[0])) { return $cat[0]; } else { - $info = $stm->errorInfo(); - Log::record ('SQL error : ' . $info[2], Log::ERROR); return false; } } @@ -148,8 +146,6 @@ class CategoryDAO extends Model_pdo { if (isset ($cat[0])) { return $cat[0]; } else { - $info = $stm->errorInfo(); - Log::record ('SQL error : ' . $info[2], Log::ERROR); return false; } } diff --git a/app/models/Entry.php b/app/models/Entry.php index 4c672bcf3..c8d05c5eb 100755 --- a/app/models/Entry.php +++ b/app/models/Entry.php @@ -372,8 +372,6 @@ class EntryDAO extends Model_pdo { if (isset ($entry[0])) { return $entry[0]; } else { - $info = $stm->errorInfo(); - Log::record ('SQL error : ' . $info[2], Log::ERROR); return false; } } diff --git a/app/models/Feed.php b/app/models/Feed.php index 056cbf626..2e6782921 100644 --- a/app/models/Feed.php +++ b/app/models/Feed.php @@ -287,8 +287,22 @@ class FeedDAO extends Model_pdo { if (isset ($feed[$id])) { return $feed[$id]; } else { - $info = $stm->errorInfo(); - Log::record ('SQL error : ' . $info[2], Log::ERROR); + return false; + } + } + public function searchByUrl ($url) { + $sql = 'SELECT * FROM feed WHERE url=?'; + $stm = $this->bd->prepare ($sql); + + $values = array ($url); + + $stm->execute ($values); + $res = $stm->fetchAll (PDO::FETCH_ASSOC); + $feed = current (HelperFeed::daoToFeed ($res)); + + if (isset ($feed)) { + return $feed; + } else { return false; } } -- cgit v1.2.3