|
|
@@ -182,8 +182,8 @@ SQL;
|
|
|
return $res === null ? null : (current(self::daoToTags($res)) ?: null);
|
|
|
}
|
|
|
|
|
|
- /** @return array<int,FreshRSS_Tag>|false where the key is the label ID */
|
|
|
- public function listTags(bool $precounts = false): array|false {
|
|
|
+ /** @return array<int,FreshRSS_Tag> where the key is the label ID */
|
|
|
+ public function listTags(bool $precounts = false): array {
|
|
|
if ($precounts) {
|
|
|
$sql = <<<'SQL'
|
|
|
SELECT t.id, t.name, count(e.id) AS unreads
|
|
|
@@ -198,13 +198,12 @@ SQL;
|
|
|
}
|
|
|
|
|
|
$stm = $this->pdo->query($sql);
|
|
|
- if ($stm !== false) {
|
|
|
- $res = $stm->fetchAll(PDO::FETCH_ASSOC) ?: [];
|
|
|
+ if ($stm !== false && ($res = $stm->fetchAll(PDO::FETCH_ASSOC)) !== false) {
|
|
|
return self::daoToTags($res);
|
|
|
} else {
|
|
|
$info = $this->pdo->errorInfo();
|
|
|
Minz_Log::error('SQL error ' . __METHOD__ . json_encode($info));
|
|
|
- return false;
|
|
|
+ return [];
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -319,9 +318,9 @@ SQL;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * @return array<int,array{id:int,name:string,checked:bool}>|false
|
|
|
+ * @return list<array{id:int,name:string,checked:bool}>
|
|
|
*/
|
|
|
- public function getTagsForEntry(string $id_entry): array|false {
|
|
|
+ public function getTagsForEntry(string $id_entry): array {
|
|
|
$sql = <<<'SQL'
|
|
|
SELECT t.id, t.name, et.id_entry IS NOT NULL as checked
|
|
|
FROM `_tag` t
|
|
|
@@ -332,24 +331,27 @@ SQL;
|
|
|
$stm = $this->pdo->prepare($sql);
|
|
|
$values = [$id_entry];
|
|
|
|
|
|
- if ($stm !== false && $stm->execute($values)) {
|
|
|
- $lines = $stm->fetchAll(PDO::FETCH_ASSOC);
|
|
|
- for ($i = count($lines) - 1; $i >= 0; $i--) {
|
|
|
- $lines[$i]['id'] = (int)($lines[$i]['id']);
|
|
|
- $lines[$i]['checked'] = !empty($lines[$i]['checked']);
|
|
|
+ if ($stm !== false && $stm->execute($values) && ($lines = $stm->fetchAll(PDO::FETCH_ASSOC)) !== false) {
|
|
|
+ $result = [];
|
|
|
+ foreach ($lines as $line) {
|
|
|
+ $result[] = [
|
|
|
+ 'id' => (int)($line['id']),
|
|
|
+ 'name' => $line['name'],
|
|
|
+ 'checked' => !empty($line['checked']),
|
|
|
+ ];
|
|
|
}
|
|
|
- return $lines;
|
|
|
+ return $result;
|
|
|
}
|
|
|
$info = $stm === false ? $this->pdo->errorInfo() : $stm->errorInfo();
|
|
|
Minz_Log::error('SQL error ' . __METHOD__ . json_encode($info));
|
|
|
- return false;
|
|
|
+ return [];
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* @param list<FreshRSS_Entry|numeric-string> $entries
|
|
|
- * @return list<array{id_entry:int|numeric-string,id_tag:int,name:string}>|false
|
|
|
+ * @return list<array{id_entry:int|numeric-string,id_tag:int,name:string}>|null
|
|
|
*/
|
|
|
- public function getTagsForEntries(array $entries): array|false {
|
|
|
+ public function getTagsForEntries(array $entries): array|null {
|
|
|
$sql = <<<'SQL'
|
|
|
SELECT et.id_entry, et.id_tag, t.name
|
|
|
FROM `_tag` t
|
|
|
@@ -364,7 +366,7 @@ SQL;
|
|
|
foreach ($idsChunks as $idsChunk) {
|
|
|
$valuesChunk = $this->getTagsForEntries($idsChunk);
|
|
|
if (!is_array($valuesChunk)) {
|
|
|
- return false;
|
|
|
+ return null;
|
|
|
}
|
|
|
$values = array_merge($values, $valuesChunk);
|
|
|
}
|
|
|
@@ -384,7 +386,7 @@ SQL;
|
|
|
}
|
|
|
$info = $stm === false ? $this->pdo->errorInfo() : $stm->errorInfo();
|
|
|
Minz_Log::error('SQL error ' . __METHOD__ . json_encode($info));
|
|
|
- return false;
|
|
|
+ return null;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -395,7 +397,7 @@ SQL;
|
|
|
*/
|
|
|
public function getEntryIdsTagNames(array $entries): array {
|
|
|
$result = [];
|
|
|
- foreach ($this->getTagsForEntries($entries) ?: [] as $line) {
|
|
|
+ foreach ($this->getTagsForEntries($entries) ?? [] as $line) {
|
|
|
$entryId = 'e_' . $line['id_entry'];
|
|
|
$tagName = $line['name'];
|
|
|
if (empty($result[$entryId])) {
|