Ver código fonte

Fix fetch preview (#2993)

* Fix fetch preview

#fix https://github.com/FreshRSS/FreshRSS/issues/2923
In MariaDB / MySQL, we cannot start a new query if we have not consumed
the previous buffered query fully.

* Fix for reload

* Typo in comment
Alexandre Alapetite 5 anos atrás
pai
commit
857f588790
2 arquivos alterados com 11 adições e 10 exclusões
  1. 8 5
      app/Controllers/feedController.php
  2. 3 5
      app/Models/FeedDAO.php

+ 8 - 5
app/Controllers/feedController.php

@@ -700,14 +700,16 @@ class FreshRSS_feed_Controller extends Minz_ActionController {
 		//Extract all feed entries from database, load complete content and store them back in database.
 		$entries = $entryDAO->listWhere('f', $feed_id, FreshRSS_Entry::STATE_ALL, 'DESC', 0);
 
-		$entryDAO->beginTransaction();
+		//We need another DB connection in parallel
+		Minz_ModelPdo::$usesSharedPdo = false;
+		$entryDAO2 = FreshRSS_Factory::createEntryDao();
 
 		foreach ($entries as $entry) {
 			$entry->loadCompleteContent(true);
-			$entryDAO->updateEntry($entry->toArray());
+			$entryDAO2->updateEntry($entry->toArray());
 		}
 
-		$entryDAO->commit();
+		Minz_ModelPdo::$usesSharedPdo = true;
 
 		//Give feedback to user.
 		Minz_Request::good(_t('feedback.sub.feed.reloaded', $feed->name()), array(
@@ -755,8 +757,9 @@ class FreshRSS_feed_Controller extends Minz_ActionController {
 
 		//Get first entry (syntax robust for Generator or Array)
 		foreach ($entries as $myEntry) {
-			$entry = $myEntry;
-			break;
+			if ($entry == null) {
+				$entry = $myEntry;
+			}
 		}
 
 		if ($entry == null) {

+ 3 - 5
app/Models/FeedDAO.php

@@ -258,12 +258,10 @@ class FreshRSS_FeedDAO extends Minz_ModelPdo implements FreshRSS_Searchable {
 	}
 
 	public function searchById($id) {
-		$sql = 'SELECT * FROM `_feed` WHERE id=?';
+		$sql = 'SELECT * FROM `_feed` WHERE id=:id';
 		$stm = $this->pdo->prepare($sql);
-
-		$values = array($id);
-
-		$stm->execute($values);
+		$stm->bindParam(':id', $id, PDO::PARAM_INT);
+		$stm->execute();
 		$res = $stm->fetchAll(PDO::FETCH_ASSOC);
 		$feed = self::daoToFeed($res);