SELECT rowid, snippet(backlog_fts, 0, '$this->opening_tag', '$this->closing_tag', '...', 64) AS message, rank FROM backlog_fts WHERE backlog_fts MATCH ('message: ' || :query)
)
SELECT
ranked_messages.bufferid,
ranked_messages.buffername,
ranked_messages.networkname,
ranked_messages.messageid,
ranked_messages.type,
datetime(ranked_messages.time / 1000, 'unixepoch') AS time,
JOIN matching_backlog ON backlog.messageid = matching_backlog.rowid
WHERE buffer.userid = :userid
AND (:ignore_since OR backlog.time > CAST(strftime('%s', strftime('%Y-%m-%d', :since)) AS INT) * 1000)
AND (:ignore_before OR backlog.time < CAST(strftime('%s', strftime('%Y-%m-%d', :before)) AS INT) * 1000)
AND (:ignore_buffer OR buffer.buffername LIKE '%' || :buffer || '%')
AND backlog.type & 23559 > 0
) matching_messages
JOIN sender ON matching_messages.senderid = sender.senderid
JOIN network ON matching_messages.networkid = network.networkid
WHERE (:ignore_network OR network.networkname LIKE '%' || :network || '%')
AND (:ignore_sender OR sender.sender LIKE '%' || :sender || '%')
) ranked_messages
WHERE ranked_messages.rank <= :limit
ORDER BY ranked_messages.max_rank_value DESC, ranked_messages.rank_value DESC;
");
}
publicfunctionfindInBuffersCount():\PDOStatement
{
// TODO: Implement findInBuffersCount() method.
return$this->db->prepare("
WITH matching_backlog AS (
SELECT rowid FROM backlog_fts WHERE backlog_fts MATCH ('message: ' || :query)
)
SELECT
backlog.bufferid,
COUNT(*) > (:limit + :offset) AS hasmore
FROM
backlog
JOIN buffer ON backlog.bufferid = buffer.bufferid
JOIN sender ON backlog.senderid = sender.senderid
JOIN network ON buffer.networkid = network.networkid
JOIN matching_backlog ON backlog.messageid = matching_backlog.rowid
WHERE buffer.userid = :userid
AND (:ignore_since OR backlog.time > CAST(strftime('%s', strftime('%Y-%m-%d', :since)) AS INT) * 1000)
AND (:ignore_before OR backlog.time < CAST(strftime('%s', strftime('%Y-%m-%d', :before)) AS INT) * 1000)
AND (:ignore_buffer OR buffer.buffername LIKE '%' || :buffer || '%')
AND (:ignore_network OR network.networkname LIKE '%' || :network || '%')
AND (:ignore_sender OR sender.sender LIKE '%' || :sender || '%')
AND backlog.type & 23559 > 0
GROUP BY backlog.bufferid;
");
}
publicfunctionfindInBuffer():\PDOStatement
{
// TODO: Implement findInBuffer() method.
$rankingFunction=$this->rankingFunction();
return$this->db->prepare("
WITH matching_backlog AS (
SELECT rowid, snippet(backlog_fts, 0, '$this->opening_tag', '$this->closing_tag', '...', 64) AS message, rank FROM backlog_fts WHERE backlog_fts MATCH ('message: ' || :query)
)
SELECT
matching_messages.messageid,
matching_messages.time,
datetime(matching_messages.time / 1000, 'unixepoch') AS time,