Browse Source

Fix user queries when they contain " (#3037)

Before, the user queries were working filter-wise but they failed at being displayed
properly in the configuration page. Thus they were stored without the search param.
Now, the search is URL encoded to avoid that kind of behavior and keep the search
param through out the user query's life.
Alexis Degrugillier 5 years ago
parent
commit
b2b249d6d6
2 changed files with 5 additions and 2 deletions
  1. 3 0
      app/Controllers/configureController.php
  2. 2 2
      app/views/configure/queries.phtml

+ 3 - 0
app/Controllers/configureController.php

@@ -281,6 +281,9 @@ class FreshRSS_configure_Controller extends Minz_ActionController {
 				if (!$query['name']) {
 				if (!$query['name']) {
 					$query['name'] = _t('conf.query.number', $key + 1);
 					$query['name'] = _t('conf.query.number', $key + 1);
 				}
 				}
+				if ($query['search']) {
+					$query['search'] = urldecode($query['search']);
+				}
 				$queries[] = new FreshRSS_UserQuery($query, $feed_dao, $category_dao);
 				$queries[] = new FreshRSS_UserQuery($query, $feed_dao, $category_dao);
 			}
 			}
 			FreshRSS_Context::$user_conf->queries = $queries;
 			FreshRSS_Context::$user_conf->queries = $queries;

+ 2 - 2
app/views/configure/queries.phtml

@@ -15,7 +15,7 @@
 
 
 			<div class="group-controls">
 			<div class="group-controls">
 				<input type="hidden" id="queries_<?= $key ?>_url" name="queries[<?= $key ?>][url]" value="<?= $query->getUrl() ?>"/>
 				<input type="hidden" id="queries_<?= $key ?>_url" name="queries[<?= $key ?>][url]" value="<?= $query->getUrl() ?>"/>
-				<input type="hidden" id="queries_<?= $key ?>_search" name="queries[<?= $key ?>][search]" value="<?= $query->getSearch() ?>"/>
+				<input type="hidden" id="queries_<?= $key ?>_search" name="queries[<?= $key ?>][search]" value="<?= urlencode($query->getSearch()) ?>"/>
 				<input type="hidden" id="queries_<?= $key ?>_state" name="queries[<?= $key ?>][state]" value="<?= $query->getState() ?>"/>
 				<input type="hidden" id="queries_<?= $key ?>_state" name="queries[<?= $key ?>][state]" value="<?= $query->getState() ?>"/>
 				<input type="hidden" id="queries_<?= $key ?>_order" name="queries[<?= $key ?>][order]" value="<?= $query->getOrder() ?>"/>
 				<input type="hidden" id="queries_<?= $key ?>_order" name="queries[<?= $key ?>][order]" value="<?= $query->getOrder() ?>"/>
 				<input type="hidden" id="queries_<?= $key ?>_get" name="queries[<?= $key ?>][get]" value="<?= $query->getGet() ?>"/>
 				<input type="hidden" id="queries_<?= $key ?>_get" name="queries[<?= $key ?>][get]" value="<?= $query->getGet() ?>"/>
@@ -52,7 +52,7 @@
 
 
 					<ul>
 					<ul>
 						<?php if ($query->hasSearch()) { ?>
 						<?php if ($query->hasSearch()) { ?>
-						<li class="item"><?= _t('conf.query.search', $query->getSearch()->getRawInput()) ?></li>
+						<li class="item"><?= _t('conf.query.search', htmlspecialchars($query->getSearch()->getRawInput(), ENT_NOQUOTES, 'UTF-8')) ?></li>
 						<?php } ?>
 						<?php } ?>
 
 
 						<?php if ($query->getState()) { ?>
 						<?php if ($query->getState()) { ?>