Add query length limit option
This commit is contained in:
parent
57ef2a6599
commit
fed2b979e1
|
@ -638,6 +638,11 @@ if (!$_SESSION['admin_username']) {
|
|||
|
||||
// ***** Search >> Search Settings
|
||||
case 'os_s_search_config':
|
||||
if (isset($_POST['os_s_limit_query'])) {
|
||||
$_POST['os_s_limit_query'] = max(1, min(255, (int)$_POST['os_s_limit_query']));
|
||||
OS_setValue('s_limit_query', (int)$_POST['os_s_limit_query']);
|
||||
}
|
||||
|
||||
if (isset($_POST['os_s_limit_terms'])) {
|
||||
$_POST['os_s_limit_terms'] = max(1, min(255, (int)$_POST['os_s_limit_terms']));
|
||||
OS_setValue('s_limit_terms', (int)$_POST['os_s_limit_terms']);
|
||||
|
@ -901,7 +906,9 @@ Object.keys(os_rdata.s_weights).forEach(key => {
|
|||
});
|
||||
|
||||
let os_odata = {
|
||||
version: '<?php echo $_ODATA['version']; ?>',
|
||||
jw_compression: <?php echo $_ODATA['jw_compression']; ?>,
|
||||
s_limit_query: <?php echo $_ODATA['s_limit_query']; ?>,
|
||||
s_limit_terms: <?php echo $_ODATA['s_limit_terms']; ?>,
|
||||
s_limit_term_length: <?php echo $_ODATA['s_limit_term_length']; ?>,
|
||||
s_limit_matchtext: <?php echo $_ODATA['s_limit_matchtext']; ?>,
|
||||
|
@ -978,7 +985,7 @@ function os_return_all() {
|
|||
|
||||
// {{{{{ Create the Mustache template
|
||||
let os_TEMPLATE = {
|
||||
version: '<?php echo $_ODATA['version']; ?>',
|
||||
version: os_odata.version,
|
||||
searchable: false,
|
||||
addError: function(text) {
|
||||
if (!this.errors) {
|
||||
|
@ -993,7 +1000,8 @@ let os_TEMPLATE = {
|
|||
if (os_crawldata.length) {
|
||||
os_TEMPLATE.searchable = {};
|
||||
os_TEMPLATE.searchable.form_action = window.location.pathname;
|
||||
os_TEMPLATE.searchable.limit_term_length = <?php echo $_ODATA['s_limit_term_length']; ?>;
|
||||
os_TEMPLATE.searchable.limit_query = os_odata.s_limit_query;
|
||||
os_TEMPLATE.searchable.limit_term_length = os_odata.s_limit_term_length;
|
||||
|
||||
os_request.c = os_params.get('c');
|
||||
if (!os_request.c || !os_rdata.s_category_list[os_request.c])
|
||||
|
@ -1023,9 +1031,9 @@ if (os_crawldata.length) {
|
|||
if (os_odata.jw_compression < 100)
|
||||
os_request.q = os_request.q.replace(/"/g, '');
|
||||
|
||||
if (os_request.q.length > 127) {
|
||||
os_request.q = os_request.q.substring(0, 127);
|
||||
os_TEMPLATE.addError('Search query truncated to maximum 127 characters');
|
||||
if (os_request.q.length > os_odata.s_limit_query) {
|
||||
os_request.q = os_request.q.substring(0, os_odata.s_limit_query);
|
||||
os_TEMPLATE.addError('Search query truncated to maximum ' + os_odata.s_limit_query + ' characters');
|
||||
}
|
||||
|
||||
os_TEMPLATE.searchable.request_q = os_request.q;
|
||||
|
@ -2658,6 +2666,13 @@ document.write(mustache.render(
|
|||
<ul class="list-group mb-2">
|
||||
<li class="list-group-item">
|
||||
<h4>Query Limits</h4>
|
||||
<label class="d-flex lh-lg w-100 mb-2">
|
||||
<strong class="pe-2">Maximum Allowed Query Length:</strong>
|
||||
<span class="flex-grow-1 text-end text-nowrap">
|
||||
<input type="number" name="os_s_limit_query" value="<?php echo $_ODATA['s_limit_query']; ?>" min="0" max="255" step="1" class="form-control d-inline-block"
|
||||
data-bs-toggle="tooltip" data-bs-placement="bottom" title="Search queries will be limited to this length before any processing. Max: 255">
|
||||
</span>
|
||||
</label>
|
||||
<label class="d-flex lh-lg w-100 mb-2">
|
||||
<strong class="pe-2">Maximum Number of Terms:</strong>
|
||||
<span class="flex-grow-1 text-end text-nowrap">
|
||||
|
|
|
@ -84,6 +84,7 @@ if (!in_array($_DDATA['tbprefix'].'config', $_DDATA['tables'])) {
|
|||
`sp_email_success` BOOLEAN NOT NULL,
|
||||
`sp_email_failure` BOOLEAN NOT NULL,
|
||||
`sp_log` MEDIUMTEXT NOT NULL,
|
||||
`s_limit_query` TINYINT UNSIGNED NOT NULL,
|
||||
`s_limit_terms` TINYINT UNSIGNED NOT NULL,
|
||||
`s_limit_term_length` TINYINT UNSIGNED NOT NULL,
|
||||
`s_limit_results` TINYINT UNSIGNED NOT NULL,
|
||||
|
@ -162,6 +163,7 @@ if (!count($testConf->fetchAll())) {
|
|||
`sp_email_success`=0,
|
||||
`sp_email_failure`=1,
|
||||
`sp_log`=\'\',
|
||||
`s_limit_query`=127,
|
||||
`s_limit_terms`=7,
|
||||
`s_limit_term_length`=3,
|
||||
`s_limit_results`=30,
|
||||
|
@ -529,7 +531,7 @@ if (!$_ODATA['s_result_template']) {
|
|||
|
||||
<form action="{{form_action}}" method="get" role="search">
|
||||
<label>
|
||||
<input type="search" name="q" value="{{request_q}}"
|
||||
<input type="search" name="q" value="{{request_q}}" maxlength="{{limit_query}}"
|
||||
class="os_typeahead" placeholder="Search..." aria-label="Search">
|
||||
</label>
|
||||
{{#categories}}
|
||||
|
|
|
@ -63,6 +63,7 @@ $_ORCINUS = new OS_Mustache();
|
|||
if ($_RDATA['s_searchable_pages']) {
|
||||
$_ORCINUS->searchable = new stdClass();
|
||||
$_ORCINUS->searchable->form_action = $_SERVER['REQUEST_URI'];
|
||||
$_ORCINUS->searchable->limit_query = $_ODATA['s_limit_query'];
|
||||
$_ORCINUS->searchable->limit_term_length = $_ODATA['s_limit_term_length'];
|
||||
|
||||
if (empty($_REQUEST['c']) || empty($_RDATA['s_category_list'][$_REQUEST['c']]))
|
||||
|
@ -90,9 +91,9 @@ if ($_RDATA['s_searchable_pages']) {
|
|||
// Convert to UTF-8 from specified encoding
|
||||
$_REQUEST['q'] = mb_convert_encoding($_REQUEST['q'], 'UTF-8', $_ODATA['s_charset']);
|
||||
|
||||
if (strlen($_REQUEST['q']) > 127) {
|
||||
$_REQUEST['q'] = substr($_REQUEST['q'], 0, 127);
|
||||
$_ORCINUS->addError('Search query truncated to maximum 127 characters');
|
||||
if (strlen($_REQUEST['q']) > $_ODATA['s_limit_query']) {
|
||||
$_REQUEST['q'] = substr($_REQUEST['q'], 0, $_ODATA['s_limit_query']);
|
||||
$_ORCINUS->addError('Search query truncated to maximum '.$_ODATA['s_limit_query'].' characters');
|
||||
}
|
||||
|
||||
$_ORCINUS->searchable->request_q = $_REQUEST['q'];
|
||||
|
|
Loading…
Reference in a new issue