Convert @ to : in parameter names
- Still more to do; possible connection exhaustion
This commit is contained in:
@@ -83,12 +83,13 @@ class Data
|
||||
/**
|
||||
* Create a JSON field comparison to find bookmarked items
|
||||
*
|
||||
* @param bool $value The flag to set (optional; defaults to true)
|
||||
* @param string $qualifier The table qualifier to include (optional; defaults to no qualifier)
|
||||
* @return Field A field that will find bookmarked items
|
||||
*/
|
||||
public static function bookmarkField(string $qualifier = ''): Field
|
||||
public static function bookmarkField(bool $value = true, string $qualifier = ''): Field
|
||||
{
|
||||
$bookField = Field::EQ('is_bookmarked', 1, '@book');
|
||||
$bookField = Field::EQ('is_bookmarked', ($value ? 1 : 0), ':book');
|
||||
$bookField->qualifier = $qualifier;
|
||||
return $bookField;
|
||||
}
|
||||
@@ -102,7 +103,7 @@ class Data
|
||||
*/
|
||||
public static function feedField(int $feedId, string $qualifier = ''): Field
|
||||
{
|
||||
$feedField = Field::EQ(Configuration::$idField, $feedId, '@feed');
|
||||
$feedField = Field::EQ(Configuration::$idField, $feedId, ':feed');
|
||||
$feedField->qualifier = $qualifier;
|
||||
return $feedField;
|
||||
}
|
||||
@@ -115,7 +116,7 @@ class Data
|
||||
*/
|
||||
public static function unreadField(string $qualifier = ''): Field
|
||||
{
|
||||
$readField = Field::EQ('is_read', 0, '@read');
|
||||
$readField = Field::EQ('is_read', 0, ':read');
|
||||
$readField->qualifier = $qualifier;
|
||||
return $readField;
|
||||
}
|
||||
@@ -128,7 +129,7 @@ class Data
|
||||
*/
|
||||
public static function userIdField(string $qualifier = ''): Field
|
||||
{
|
||||
$userField = Field::EQ('user_id', $_SESSION[Key::USER_ID], '@user');
|
||||
$userField = Field::EQ('user_id', $_SESSION[Key::USER_ID], ':user');
|
||||
$userField->qualifier = $qualifier;
|
||||
return $userField;
|
||||
}
|
||||
|
||||
@@ -116,25 +116,25 @@ class Feed
|
||||
return ['error' => 'Unrecognized purge type ' . PURGE_TYPE];
|
||||
}
|
||||
|
||||
$fields = [Field::EQ('feed_id', $feedId, '@feed'), Field::EQ('is_bookmarked', 0, '@book')];
|
||||
$fields = [Field::EQ('feed_id', $feedId, ':feed'), Data::bookmarkField(false)];
|
||||
$sql = Query\Delete::byFields(Table::ITEM, $fields);
|
||||
if (PURGE_TYPE == self::PURGE_READ) {
|
||||
$readField = Field::EQ('is_read', 1, '@read');
|
||||
$readField = Field::EQ('is_read', 1, ':read');
|
||||
$fields[] = $readField;
|
||||
$sql .= ' AND ' . Query::whereByFields([$readField]);
|
||||
} elseif (PURGE_TYPE == self::PURGE_BY_DAYS) {
|
||||
$fields[] = Field::EQ('', Data::formatDate('-' . PURGE_NUMBER . ' day'), '@oldest');
|
||||
$sql .= " AND date(coalesce(data->>'updated_on', data->>'published_on)) < date(@oldest)";
|
||||
$fields[] = Field::EQ('', Data::formatDate('-' . PURGE_NUMBER . ' day'), ':oldest');
|
||||
$sql .= " AND date(coalesce(data->>'updated_on', data->>'published_on)) < date(:oldest)";
|
||||
} elseif (PURGE_TYPE == self::PURGE_BY_COUNT) {
|
||||
$fields[] = Field::EQ('', PURGE_NUMBER, '@keep');
|
||||
$fields[] = Field::EQ('', PURGE_NUMBER, ':keep');
|
||||
$id = Configuration::$idField;
|
||||
$table = Table::ITEM;
|
||||
$sql .= ' ' . <<<SQL
|
||||
AND data->>'$id' IN (
|
||||
SELECT data->>'$id' FROM $table
|
||||
WHERE data->>'feed_id' = @feed
|
||||
WHERE data->>'feed_id' = :feed
|
||||
ORDER BY date(coalesce(data->>'updated_on', data->>'published_on')) DESC
|
||||
LIMIT -1 OFFSET @keep
|
||||
LIMIT -1 OFFSET :keep
|
||||
)
|
||||
SQL;
|
||||
}
|
||||
@@ -204,7 +204,7 @@ class Feed
|
||||
|
||||
Document::insert(Table::FEED, self::fromParsed($feed), $pdo);
|
||||
|
||||
$doc = Find::firstByFields(Table::FEED, $fields, self::class);
|
||||
$doc = Find::firstByFields(Table::FEED, $fields, static::class);
|
||||
if (!$doc) return ['error' => 'Could not retrieve inserted feed'];
|
||||
|
||||
$result = self::updateItems($doc->id, $feed, date_create_immutable(WWW_EPOCH), $pdo);
|
||||
|
||||
@@ -58,7 +58,7 @@ class ItemList
|
||||
try {
|
||||
$this->dbList = Custom::list(
|
||||
ItemWithFeed::SELECT_WITH_FEED . ' WHERE '
|
||||
. Query::whereByFields(array_filter($allFields, fn($it) => $it->paramName <> '@search'))
|
||||
. Query::whereByFields(array_filter($allFields, fn($it) => $it->paramName <> ':search'))
|
||||
. $searchWhere,
|
||||
Parameters::addFields($allFields, []), new DocumentMapper(ItemWithFeed::class));
|
||||
} catch (DocumentException $ex) {
|
||||
@@ -73,7 +73,7 @@ class ItemList
|
||||
*/
|
||||
public static function allBookmarked(): static
|
||||
{
|
||||
$list = new static('Bookmarked', '/?bookmarked', [Data::bookmarkField(Table::ITEM)]);
|
||||
$list = new static('Bookmarked', '/?bookmarked', [Data::bookmarkField(qualifier: Table::ITEM)]);
|
||||
$list->linkFeed = true;
|
||||
return $list;
|
||||
}
|
||||
@@ -124,7 +124,7 @@ class ItemList
|
||||
public static function bookmarkedForFeed(int $feedId): static
|
||||
{
|
||||
return new static('Bookmarked', "/feed/items?id=$feedId&bookmarked",
|
||||
[Data::feedField($feedId, Table::FEED), Data::bookmarkField(Table::ITEM)]);
|
||||
[Data::feedField($feedId, Table::FEED), Data::bookmarkField(qualifier: Table::ITEM)]);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -136,12 +136,12 @@ class ItemList
|
||||
*/
|
||||
public static function matchingSearch(string $search, bool $isBookmarked): static
|
||||
{
|
||||
$fields = [Field::EQ('content', $search, '@search')];
|
||||
if ($isBookmarked) $fields[] = Data::bookmarkField(Table::ITEM);
|
||||
$fields = [Field::EQ('content', $search, ':search')];
|
||||
if ($isBookmarked) $fields[] = Data::bookmarkField(qualifier: Table::ITEM);
|
||||
$list = new static('Matching' . ($isBookmarked ? ' Bookmarked' : ''),
|
||||
"/search?search=$search&items=" . ($isBookmarked ? 'bookmarked' : 'all'), $fields,
|
||||
' AND ' . Table::ITEM . ".data->>'" . Configuration::$idField . "' IN "
|
||||
. '(SELECT ROWID FROM item_search WHERE content MATCH @search)');
|
||||
. '(SELECT ROWID FROM item_search WHERE content MATCH :search)');
|
||||
$list->showIndicators = true;
|
||||
$list->displayFeed = true;
|
||||
return $list;
|
||||
|
||||
@@ -36,9 +36,9 @@ class ItemWithFeed extends Item
|
||||
*/
|
||||
private static function idAndUserFields(int $id): array
|
||||
{
|
||||
$idField = Field::EQ(Configuration::$idField, $id, '@id');
|
||||
$idField = Field::EQ(Configuration::$idField, $id, ':id');
|
||||
$idField->qualifier = Table::ITEM;
|
||||
$userField = Field::EQ('user_id', $_SESSION[Key::USER_ID], '@user');
|
||||
$userField = Field::EQ('user_id', $_SESSION[Key::USER_ID], ':user');
|
||||
$userField->qualifier = Table::FEED;
|
||||
return [$idField, $userField];
|
||||
}
|
||||
|
||||
@@ -57,7 +57,7 @@ class User
|
||||
*/
|
||||
public static function hasBookmarks(): bool
|
||||
{
|
||||
$fields = [Data::userIdField(Table::FEED), Data::bookmarkField(Table::ITEM)];
|
||||
$fields = [Data::userIdField(Table::FEED), Data::bookmarkField(true, Table::ITEM)];
|
||||
return Custom::scalar(Query\Exists::query(ItemWithFeed::FROM_WITH_JOIN, Query::whereByFields($fields)),
|
||||
Parameters::addFields($fields, []), new ExistsMapper());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user