|
|
@@ -95,7 +95,7 @@ SQL;
|
|
|
private $addEntryPrepared = false;
|
|
|
|
|
|
/** @param array{'id':string,'guid':string,'title':string,'author':string,'content':string,'link':string,'date':int,'lastSeen':int,'hash':string,
|
|
|
- * 'is_read':bool|int|null,'is_favorite':bool|int|null,'id_feed':int,'tags':string,'attributes':array<string,mixed>} $valuesTmp */
|
|
|
+ * 'is_read':bool|int|null,'is_favorite':bool|int|null,'id_feed':int,'tags':string,'attributes'?:null|string|array<string,mixed>} $valuesTmp */
|
|
|
public function addEntry(array $valuesTmp, bool $useTmpTable = true): bool {
|
|
|
if ($this->addEntryPrepared == null) {
|
|
|
$sql = static::sqlIgnoreConflict(
|
|
|
@@ -693,19 +693,22 @@ SQL;
|
|
|
}
|
|
|
|
|
|
/** @return Traversable<array{'id':string,'guid':string,'title':string,'author':string,'content':string,'link':string,'date':int,'lastSeen':int,
|
|
|
- * 'hash':string,'is_read':?bool,'is_favorite':?bool,'id_feed':int,'tags':string,'attributes':array<string,mixed>}> */
|
|
|
- public function selectAll(): Traversable {
|
|
|
+ * 'hash':string,'is_read':bool,'is_favorite':bool,'id_feed':int,'tags':string,'attributes':?string}> */
|
|
|
+ public function selectAll(?int $limit = null): Traversable {
|
|
|
$content = static::isCompressed() ? 'UNCOMPRESS(content_bin) AS content' : 'content';
|
|
|
$hash = static::sqlHexEncode('hash');
|
|
|
$sql = <<<SQL
|
|
|
SELECT id, guid, title, author, {$content}, link, date, `lastSeen`, {$hash} AS hash, is_read, is_favorite, id_feed, tags, attributes
|
|
|
FROM `_entry`
|
|
|
SQL;
|
|
|
+ if (is_int($limit) && $limit >= 0) {
|
|
|
+ $sql .= ' ORDER BY id DESC LIMIT ' . $limit;
|
|
|
+ }
|
|
|
$stm = $this->pdo->query($sql);
|
|
|
if ($stm != false) {
|
|
|
while ($row = $stm->fetch(PDO::FETCH_ASSOC)) {
|
|
|
/** @var array{'id':string,'guid':string,'title':string,'author':string,'content':string,'link':string,'date':int,'lastSeen':int,
|
|
|
- * 'hash':string,'is_read':?bool,'is_favorite':?bool,'id_feed':int,'tags':string,'attributes':array<string,mixed>} $row */
|
|
|
+ * 'hash':string,'is_read':bool,'is_favorite':bool,'id_feed':int,'tags':string,'attributes':?string} $row */
|
|
|
yield $row;
|
|
|
}
|
|
|
} else {
|
|
|
@@ -727,7 +730,7 @@ FROM `_entry` WHERE id_feed=:id_feed AND guid=:guid
|
|
|
SQL;
|
|
|
$res = $this->fetchAssoc($sql, [':id_feed' => $id_feed, ':guid' => $guid]);
|
|
|
/** @var array<array{'id':string,'id_feed':int,'guid':string,'title':string,'author':string,'content':string,'link':string,'date':int,
|
|
|
- * 'is_read':int,'is_favorite':int,'tags':string,'attributes'?:string}> $res */
|
|
|
+ * 'is_read':int,'is_favorite':int,'tags':string,'attributes':?string}> $res */
|
|
|
return isset($res[0]) ? FreshRSS_Entry::fromArray($res[0]) : null;
|
|
|
}
|
|
|
|
|
|
@@ -740,7 +743,7 @@ FROM `_entry` WHERE id=:id
|
|
|
SQL;
|
|
|
$res = $this->fetchAssoc($sql, [':id' => $id]);
|
|
|
/** @var array<array{'id':string,'id_feed':int,'guid':string,'title':string,'author':string,'content':string,'link':string,'date':int,
|
|
|
- * 'is_read':int,'is_favorite':int,'tags':string,'attributes'?:string}> $res */
|
|
|
+ * 'is_read':int,'is_favorite':int,'tags':string,'attributes':?string}> $res */
|
|
|
return isset($res[0]) ? FreshRSS_Entry::fromArray($res[0]) : null;
|
|
|
}
|
|
|
|
|
|
@@ -1167,7 +1170,7 @@ SQL;
|
|
|
while ($row = $stm->fetch(PDO::FETCH_ASSOC)) {
|
|
|
if (is_array($row)) {
|
|
|
/** @var array{'id':string,'id_feed':int,'guid':string,'title':string,'author':string,'content':string,'link':string,'date':int,
|
|
|
- * 'hash':string,'is_read':int,'is_favorite':int,'tags':string,'attributes'?:string} $row */
|
|
|
+ * 'hash':string,'is_read':int,'is_favorite':int,'tags':string,'attributes'?:?string} $row */
|
|
|
yield FreshRSS_Entry::fromArray($row);
|
|
|
}
|
|
|
}
|
|
|
@@ -1212,7 +1215,7 @@ SQL;
|
|
|
while ($row = $stm->fetch(PDO::FETCH_ASSOC)) {
|
|
|
if (is_array($row)) {
|
|
|
/** @var array{'id':string,'id_feed':int,'guid':string,'title':string,'author':string,'content':string,'link':string,'date':int,
|
|
|
- * 'hash':string,'is_read':int,'is_favorite':int,'tags':string,'attributes'?:string} $row */
|
|
|
+ * 'hash':string,'is_read':int,'is_favorite':int,'tags':string,'attributes':?string} $row */
|
|
|
yield FreshRSS_Entry::fromArray($row);
|
|
|
}
|
|
|
}
|