Jelajahi Sumber

Fix issue #189: Disparition de la dernière catégorie

La dernière catégorie n'était pas générée correctement si elle ne possédait
qu'un seul flux. Le bug venait de HelperCategorie::daoToCategoryPrepopulated
Je l'ai réécrite pour qu'elle soit un peu plus claire
Marien Fressinaud 12 tahun lalu
induk
melakukan
d94d948706
1 mengubah file dengan 19 tambahan dan 15 penghapusan
  1. 19 15
      app/models/Category.php

+ 19 - 15
app/models/Category.php

@@ -175,7 +175,7 @@ class CategoryDAO extends Model_pdo {
 		}
 	}
 
-	public function listCategories ($prePopulateFeeds = true) {	//TODO: Search code-base for places where $prePopulateFeeds should be false
+	public function listCategories ($prePopulateFeeds = true) {
 		if ($prePopulateFeeds) {
 			$sql = 'SELECT c.id as c_id, c.name as c_name, c.color as c_color, count(e.id) as nbNotRead, f.* '
 			     . 'FROM  ' . $this->prefix . 'category c '
@@ -276,14 +276,9 @@ class HelperCategory {
 
 		$previousLine = null;
 		$feedsDao = array();
-		$nbLinesMinus1 = count($listDAO) - 1;
-		for ($i = 0; $i <= $nbLinesMinus1; $i++) {
-			$line = $listDAO[$i];
-			$cat_id = $line['c_id'];
-			if (($i > 0) && (($cat_id !== $previousLine['c_id']) || ($i === $nbLinesMinus1))) {	//End of current category
-				if ($i === $nbLinesMinus1) {	//End of table
-					$feedsDao[] = $line;
-				}
+		foreach ($listDAO as $line) {
+			if ($previousLine['c_id'] != null && $line['c_id'] !== $previousLine['c_id']) {
+				// End of the current category, we add it to the $list
 				$cat = new Category (
 					$previousLine['c_name'],
 					$previousLine['c_color'],
@@ -292,13 +287,22 @@ class HelperCategory {
 				$cat->_id ($previousLine['c_id']);
 				$list[] = $cat;
 
-				$feedsDao = array();	//Prepare for next category
-				$previousLine = $line;
-				$feedsDao[] = $line;
-			} else {
-				$previousLine = $line;
-				$feedsDao[] = $line;
+				$feedsDao = array();  //Prepare for next category
 			}
+
+			$previousLine = $line;
+			$feedsDao[] = $line;
+		}
+
+		// add the last category
+		if ($previousLine != null) {
+			$cat = new Category (
+				$previousLine['c_name'],
+				$previousLine['c_color'],
+				HelperFeed::daoToFeed ($feedsDao)
+			);
+			$cat->_id ($previousLine['c_id']);
+			$list[] = $cat;
 		}
 
 		return $list;