diff --git a/controllers/script.js b/controllers/script.js index c80af0e9e..31f109200 100644 --- a/controllers/script.js +++ b/controllers/script.js @@ -46,6 +46,7 @@ var pageMetadata = require('../libs/templateHelpers').pageMetadata; //--- Configuration inclusions var removeReasons = require('../views/includes/scriptModals.json').removeReasons; +var settings = require('../models/settings.json'); //--- @@ -475,11 +476,16 @@ exports.edit = function (aReq, aRes, aNext) { remark().use(stripHTML).use(stripMD).process(aScript.about, function(aErr, aFile) { if (aErr || !aFile) { - aScript._about = (aScript.about ? aScript.about.substr(0, 512) : ''); + aScript._about = ( + aScript.about + ? aScript.about.substr(0, settings.scriptSearchQueryStoreMaxAbout).trim() + : '' + ); } else { aScript._about = ( aFile.contents - ? aFile.contents.replace(/(\r\n|\n|\r)+/gm, ' ').substr(0, 512) + ? aFile.contents.replace(/(\r\n|\n|\r)+/gm, ' ') + .substr(0, settings.scriptSearchQueryStoreMaxAbout).trim() : '' ); } diff --git a/controllers/scriptStorage.js b/controllers/scriptStorage.js index 40dfbbc33..4e980d7bb 100644 --- a/controllers/scriptStorage.js +++ b/controllers/scriptStorage.js @@ -59,6 +59,7 @@ var modelParser = require('../libs/modelParser'); var userRoles = require('../models/userRoles.json'); var blockSPDX = require('../libs/blockSPDX'); var exceptSPDX = require('../libs/exceptSPDX'); +var settings = require('../models/settings.json'); // Add greasemonkey support for Media Type if (!mediaDB['text/x-userscript-meta']) { @@ -1796,7 +1797,11 @@ exports.storeScript = function (aUser, aMeta, aBuf, aUpdate, aCallback) { // New script aScript = new Script({ name: thisName, - _description: (thisDescription ? thisDescription.substr(0, 512) : ''), + _description: ( + thisDescription + ? thisDescription.substr(0, settings.scriptSearchQueryStoreMaxDescription).trim() + : '' + ), author: aUser.name, installs: 0, rating: 0, @@ -1833,7 +1838,11 @@ exports.storeScript = function (aUser, aMeta, aBuf, aUpdate, aCallback) { }), null); return; } - aScript._description = (thisDescription ? thisDescription.substr(0, 512) : ''); + aScript._description = ( + thisDescription + ? thisDescription.substr(0, settings.scriptSearchQueryStoreMaxDescription).trim() + : '' + ); aScript.meta = aMeta; aScript.uses = libraries; diff --git a/libs/modelQuery.js b/libs/modelQuery.js index ea5c96047..497c338a2 100644 --- a/libs/modelQuery.js +++ b/libs/modelQuery.js @@ -112,10 +112,18 @@ var parseModelListSearchQuery = function (aModelListQuery, aQuery, aSearchOption }; var parseScriptSearchQuery = function (aScriptListQuery, aQuery) { - parseModelListSearchQuery(aScriptListQuery, aQuery, { - partialWordMatchFields: ['name', '_description', 'author', '_about' ], - fullWordMatchFields: ['meta.UserScript.include.value', 'meta.UserScript.match.value'] - }); + if (process.env.LIMIT_SEARCH_QUERY === 'true' + || process.env.FORCE_BUSY_UPDATEURL_CHECK === 'true') { + parseModelListSearchQuery(aScriptListQuery, aQuery, { + partialWordMatchFields: ['name', '_description', 'author' ], + fullWordMatchFields: ['meta.UserScript.include.value', 'meta.UserScript.match.value'] + }); + } else { + parseModelListSearchQuery(aScriptListQuery, aQuery, { + partialWordMatchFields: ['name', '_description', 'author', '_about' ], + fullWordMatchFields: ['meta.UserScript.include.value', 'meta.UserScript.match.value'] + }); + } }; exports.parseScriptSearchQuery = parseScriptSearchQuery; diff --git a/models/settings.json b/models/settings.json index e0d97431f..805eea49a 100644 --- a/models/settings.json +++ b/models/settings.json @@ -8,5 +8,10 @@ "timerSanity": 7, "timerSanityExpiry": 11, "maximum": 12 - } + }, + + "NOTE": "Requires DB migration for changing below settings", + + "scriptSearchQueryStoreMaxDescription": 512, + "scriptSearchQueryStoreMaxAbout": 256 }