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

Fix API starred (#5366)

* Fix API starred
Fix https://github.com/FreshRSS/FreshRSS/issues/5363
https://github.com/FreshRSS/FreshRSS/commit/c72914bba2363e436574204b3d6093a6f3cfce89#commitcomment-111220080

* Minor type fix

* Additional check

* Minor syntax change

* Forgotten type change
Alexandre Alapetite 2 лет назад
Родитель
Сommit
53808c6c05
2 измененных файлов с 11 добавлено и 3 удалено
  1. 10 2
      app/Models/EntryDAO.php
  2. 1 1
      p/api/greader.php

+ 10 - 2
app/Models/EntryDAO.php

@@ -1201,12 +1201,20 @@ SQL;
 	/**
 	 * @phpstan-param 'a'|'A'|'s'|'S'|'c'|'f'|'t'|'T'|'ST' $type
 	 * @param int $id category/feed/tag ID
-	 * @return array<numeric-string>
+	 * @return array<numeric-string>|null
 	 */
 	public function listIdsWhere(string $type = 'a', int $id = 0, int $state = FreshRSS_Entry::STATE_ALL,
 		string $order = 'DESC', int $limit = 1, string $firstId = '', ?FreshRSS_BooleanSearch $filters = null): ?array {
+
 		[$values, $sql] = $this->sqlListWhere($type, $id, $state, $order, $limit, $firstId, $filters);
-		return $this->fetchColumn($sql, 0, $values);
+		$stm = $this->pdo->prepare($sql);
+		if ($stm !== false && $stm->execute($values) && ($res = $stm->fetchAll(PDO::FETCH_COLUMN, 0)) !== false) {
+			/** @var array<numeric-string> $res */
+			return $res;
+		}
+		$info = $stm == null ? $this->pdo->errorInfo() : $stm->errorInfo();
+		Minz_Log::error('SQL error ' . __METHOD__ . json_encode($info));
+		return null;
 	}
 
 	/**

+ 1 - 1
p/api/greader.php

@@ -746,7 +746,7 @@ final class GReaderAPI {
 
 		$entryDAO = FreshRSS_Factory::createEntryDao();
 		$ids = $entryDAO->listIdsWhere($type, $id, $state, $order === 'o' ? 'ASC' : 'DESC', $count, $continuation, $searches);
-		if ($ids == null) {
+		if ($ids === null) {
 			self::internalServerError();
 		}