74 lines
1.9 KiB
JavaScript
74 lines
1.9 KiB
JavaScript
const xss = require('xss')
|
|
const cache = require('../cache')
|
|
const Portal = require('../portal')
|
|
|
|
const INSTANCE_SETTING_NAMESPACE = 'instance-setting'
|
|
const INSTANCE_SETTING_CACHE_EXPIRE_TIME = 60 * 60 // 1 hour.
|
|
const SLOVENIAN_LANGUAGE_ID_CACHE_EXPIRE_TIME = 60 * 60 // 1 hour.
|
|
|
|
exports.intoDbArray = (inputData, mode) => {
|
|
if (Array.isArray(inputData)) {
|
|
return inputData
|
|
} else if (inputData === undefined || inputData === '') {
|
|
if (mode === 'always') return []
|
|
if (mode === 'undefined') return undefined
|
|
else return null
|
|
// return mode === 'always' ? [] : null
|
|
}
|
|
return [inputData]
|
|
}
|
|
|
|
exports.removeHtmlTags = text => {
|
|
return tagFilter.process(text)
|
|
}
|
|
|
|
// Returns setting value by its name from table instance_settings.
|
|
exports.getInstanceSetting = async settingName => {
|
|
const settingCacheName = `${INSTANCE_SETTING_NAMESPACE}:${settingName}`
|
|
let settingValue = await cache.get(settingCacheName)
|
|
|
|
if (!settingValue) {
|
|
settingValue = await Portal.getInstanceSettingValue(settingName)
|
|
await cache.set(
|
|
settingCacheName,
|
|
settingValue,
|
|
'EX',
|
|
INSTANCE_SETTING_CACHE_EXPIRE_TIME
|
|
)
|
|
}
|
|
|
|
return settingValue
|
|
}
|
|
|
|
// Deletes cached instance settings.
|
|
exports.clearCachedInstanceSettings = async () => {
|
|
const settingNames = await Portal.fetchAllInstanceSettingNames()
|
|
const settingCacheNames = settingNames.map(
|
|
settingName => `${INSTANCE_SETTING_NAMESPACE}:${settingName}`
|
|
)
|
|
await cache.unlink(...settingCacheNames)
|
|
}
|
|
|
|
// Returns slovenian language id and keeps it cached.
|
|
exports.getSlovenianLanguageId = async () => {
|
|
const settingCacheName = 'slovenian-language-id'
|
|
let id = await cache.get(settingCacheName)
|
|
|
|
if (!id) {
|
|
id = (await Portal.getSlovenianLanguageId()).toString()
|
|
await cache.set(
|
|
settingCacheName,
|
|
id,
|
|
'EX',
|
|
SLOVENIAN_LANGUAGE_ID_CACHE_EXPIRE_TIME
|
|
)
|
|
}
|
|
|
|
return id
|
|
}
|
|
|
|
const tagFilter = new xss.FilterXSS({
|
|
whiteList: {},
|
|
stripIgnoreTag: true
|
|
})
|