From 95176f517e6e1514dabb59e2b907635338d05b1c Mon Sep 17 00:00:00 2001 From: Alexey Melnichuk Date: Wed, 23 Nov 2016 13:50:00 +0300 Subject: [PATCH] Fix. Fetch correct arrays from settings. (#2162) * Fix. Fetch correct arrays from settings. Add. Use params in `settings.lua` * Fix. array from domain settings overwrite entire array from default settings instead of appends it. --- .../scripts/resources/functions/settings.lua | 105 ++++++++---------- 1 file changed, 47 insertions(+), 58 deletions(-) diff --git a/resources/install/scripts/resources/functions/settings.lua b/resources/install/scripts/resources/functions/settings.lua index 676b5f95f0..ae8dc985f6 100644 --- a/resources/install/scripts/resources/functions/settings.lua +++ b/resources/install/scripts/resources/functions/settings.lua @@ -1,21 +1,25 @@ ---debug - debug["sql"] = false; - --define the trim function require "resources.functions.trim"; +--include json library + local json + if (debug["sql"]) then + json = require "resources.functions.lunajson" + end + --get the domain_uuid if (domain_uuid == nil) then if (domain_name ~= nil) then - sql = "SELECT domain_uuid FROM v_domains "; - sql = sql .. "WHERE domain_name = '" .. domain_name .."' "; + local sql = "SELECT domain_uuid FROM v_domains "; + sql = sql .. "WHERE domain_name = :domain_name"; + local params = {domain_name = domain_name}; if (debug["sql"]) then - freeswitch.consoleLog("notice", "[conference] SQL: " .. sql .. "\n"); + freeswitch.consoleLog("notice", "[settings] SQL: " .. sql .. "; params: " .. json.encode(params) .. "\n"); end - status = dbh:query(sql, function(rows) + dbh:query(sql, params, function(rows) domain_uuid = string.lower(rows["domain_uuid"]); - end); + end); end end @@ -45,28 +49,28 @@ function settings(domain_uuid) --define the table - array = {} + local array = {} --get the default settings - sql = "SELECT * FROM v_default_settings "; + local sql = "SELECT * FROM v_default_settings "; sql = sql .. "WHERE default_setting_enabled = 'true' "; sql = sql .. "AND default_setting_category is not null "; sql = sql .. "AND default_setting_subcategory is not null "; sql = sql .. "AND default_setting_name is not null "; sql = sql .. "AND default_setting_value is not null "; sql = sql .. "ORDER BY default_setting_category, default_setting_subcategory ASC"; + if (debug["sql"]) then - freeswitch.consoleLog("notice", "SQL: " .. sql .. "\n"); + freeswitch.consoleLog("notice", "[settings] SQL: " .. sql .. "\n"); end - x = 1; - previous_category = ''; + dbh:query(sql, function(row) --variables - setting_uuid = row.default_setting_uuid - category = row.default_setting_category; - subcategory = row.default_setting_subcategory; - name = row.default_setting_name; - value = row.default_setting_value; + local setting_uuid = row.default_setting_uuid + local category = row.default_setting_category; + local subcategory = row.default_setting_subcategory; + local name = row.default_setting_name; + local value = row.default_setting_value; --add the category array if (array[category] == nil) then @@ -76,54 +80,41 @@ --add the subcategory array if (array[category][subcategory] == nil) then array[category][subcategory] = {} - x = 1; - end - - --add the subcategory array - if (array[category][subcategory][name] == nil) then - array[category][subcategory][name] = {} end --set the name and value if (name == "array") then - array[category][subcategory][x] = {} - array[category][subcategory][x] = value; + local t = array[category][subcategory] + t[#t + 1] = value else if (value ~= nil) then array[category][subcategory][name] = value; end end - - --set the previous category - previous_category = category; - - --set the previous subcategory - previous_subcategory = subcategory; - - --increment the value of x - x = x + 1; end); --get the domain settings if (domain_uuid ~= nil) then - sql = "SELECT * FROM v_domain_settings "; - sql = sql .. "WHERE domain_uuid = '" .. domain_uuid .. "' "; + local sql = "SELECT * FROM v_domain_settings "; + sql = sql .. "WHERE domain_uuid = :domain_uuid "; sql = sql .. "AND domain_setting_enabled = 'true' "; sql = sql .. "AND domain_setting_category is not null "; sql = sql .. "AND domain_setting_subcategory is not null "; sql = sql .. "AND domain_setting_name is not null "; sql = sql .. "AND domain_setting_value is not null "; sql = sql .. "ORDER BY domain_setting_category, domain_setting_subcategory ASC "; + local params = {domain_uuid = domain_uuid}; if (debug["sql"]) then - freeswitch.consoleLog("notice", "[directory] SQL: " .. sql .. "\n"); + freeswitch.consoleLog("notice", "[settings] SQL: " .. sql .. "; params: " .. json.encode(params) .. "\n"); end - dbh:query(sql, function(row) + local last_category, last_subcategory + dbh:query(sql, params, function(row) --variables - setting_uuid = row.domain_setting_uuid - category = row.domain_setting_category; - subcategory = row.domain_setting_subcategory; - name = row.domain_setting_name; - value = row.domain_setting_value; + local setting_uuid = row.domain_setting_uuid + local category = row.domain_setting_category; + local subcategory = row.domain_setting_subcategory; + local name = row.domain_setting_name; + local value = row.domain_setting_value; --add the category array if (array[category] == nil) then @@ -133,30 +124,25 @@ --add the subcategory array if (array[category][subcategory] == nil) then array[category][subcategory] = {} - x = 1; - end - - --add the subcategory array - if (array[category][subcategory][name] == nil) then - array[category][subcategory][name] = {} end --set the name and value if (name == "array") then - array[category][subcategory][x] = {} - array[category][subcategory][x] = value; + local t = array[category][subcategory] + -- overwrite entire array from default settings if needed + if last_category ~= category and last_subcategory ~= subcategory and t[1] then + t = {} + array[category][subcategory] = t + end + t[#t + 1] = value else if (value ~= nil) then array[category][subcategory][name] = value; end end - --set the previous category - previous_category = category; - - --set the previous subcategory - previous_subcategory = subcategory; - + -- set last category + last_category, last_subcategory = category, subcategory end); end @@ -168,3 +154,6 @@ --array = settings(domain_uuid); --result = array['domain']['template']['name']; --freeswitch.consoleLog("notice", result .. "\n"); + --for i, ext in ipairs(array.fax.allowed_extension) do + -- freeswitch.consoleLog("notice", "allowed_extension #" .. i .. ": " .. ext .. "\n"); + --end