Просмотр исходного кода

Plus possible d'ajouter un flux déjà existant + meilleure gestion actualisation / import OPML

Marien Fressinaud 13 лет назад
Родитель
Сommit
61943f1661
4 измененных файлов с 52 добавлено и 32 удалено
  1. 36 24
      app/controllers/feedController.php
  2. 0 4
      app/models/Category.php
  3. 0 2
      app/models/Entry.php
  4. 16 2
      app/models/Feed.php

+ 36 - 24
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é à <em>' . $feed->name () . '</em>'
+						);
+						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 (),

+ 0 - 4
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;
 		}
 	}

+ 0 - 2
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;
 		}
 	}

+ 16 - 2
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;
 		}
 	}