summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2017-12-03 10:10:01 +0300
committerAndrew Dolgov <[email protected]>2017-12-03 10:10:01 +0300
commit49a888ecce9c7fbbee0156b7845c3b28b3f48c1a (patch)
tree9cdbabbc6a22d1bc17fc82abd5e84c9fd2baf409
parent64312bfd7195e0c2af3f8c854025c44ade4af9a4 (diff)
rssutils: forbid question marks in tsvector data, PDO gets confused sometimes even by quoted ?s
-rw-r--r--classes/rssutils.php38
-rwxr-xr-xupdate.php3
2 files changed, 26 insertions, 15 deletions
diff --git a/classes/rssutils.php b/classes/rssutils.php
index 696b8604c..98f494d70 100644
--- a/classes/rssutils.php
+++ b/classes/rssutils.php
@@ -973,29 +973,39 @@ class RSSUtils {
_debug("resulting RID: $entry_ref_id, IID: $entry_int_id", $debug_enabled);
if (DB_TYPE == "pgsql") {
- $tsvector_combined = mb_substr($entry_title . ' ' . strip_tags(str_replace('<', ' <', $entry_content)),
+ $tsvector_combined = mb_substr($entry_title . ' ' .
+ preg_replace('/[<\?\:]/', ' ', strip_tags($entry_content)),
0, 1000000);
- $tsvector_qpart = "tsvector_combined = to_tsvector('$feed_language', ".$pdo->quote($tsvector_combined)."),";
+ $tsvector_qpart = "tsvector_combined = to_tsvector(".$pdo->quote($feed_language).", ".$pdo->quote($tsvector_combined)."),";
} else {
$tsvector_qpart = "";
}
+ //_debug($tsvector_qpart);
+
$sth = $pdo->prepare("UPDATE ttrss_entries
- SET title = ?,
- content = ?,
- content_hash = ?,
- updated = ?,
+ SET title = :title,
$tsvector_qpart
- num_comments = ?,
- plugin_data = ?,
- author = ?,
- lang = ?
- WHERE id = ?");
-
- $sth->execute([$entry_title, $entry_content, $entry_current_hash, $entry_timestamp_fmt,
- (int)$num_comments, $entry_plugin_data, $entry_author, $entry_language, $ref_id]);
+ content = :content,
+ content_hash = :content_hash,
+ updated = :updated,
+ num_comments = :num_comments,
+ plugin_data = :plugin_data,
+ author = :author,
+ lang = :lang
+ WHERE id = :id");
+
+ $sth->execute([":title" => $entry_title,
+ ":content" => $entry_content,
+ ":content_hash" => $entry_current_hash,
+ ":updated" => $entry_timestamp_fmt,
+ ":num_comments" => (int)$num_comments,
+ ":plugin_data" => $entry_plugin_data,
+ ":author" => $entry_author,
+ ":lang" => $entry_language,
+ ":id" => $ref_id]);
// update aux data
$sth = $pdo->prepare("UPDATE ttrss_user_entries
diff --git a/update.php b/update.php
index 22dded675..3116ab781 100755
--- a/update.php
+++ b/update.php
@@ -367,7 +367,8 @@
while (true) {
while ($line = $sth->fetch()) {
- $tsvector_combined = mb_substr($line['title'] . ' ' . strip_tags(str_replace('<', ' <', $line['content'])),
+ $tsvector_combined = mb_substr($line['title'] . ' ' .
+ preg_replace('/[<\?\:]/', ' ', strip_tags($line['content'])),
0, 1000000);
$usth->execute([$tsvector_combined, $line['id']]);