summaryrefslogtreecommitdiffstats
path: root/vmail-model.lua
diff options
context:
space:
mode:
Diffstat (limited to 'vmail-model.lua')
-rw-r--r--vmail-model.lua76
1 files changed, 72 insertions, 4 deletions
diff --git a/vmail-model.lua b/vmail-model.lua
index 886e910..1a4ce01 100644
--- a/vmail-model.lua
+++ b/vmail-model.lua
@@ -22,15 +22,15 @@ local env
local con
local voicemail_users_creation_script = {
- "CREATE TABLE voicemail_users (username text)",
+ "CREATE TABLE voicemail_users (username VARCHAR(255))",
}
local voicemail_values_creation_script = {
- "CREATE TABLE voicemail_values (username text, name text, value text)",
+ "CREATE TABLE voicemail_values (username VARCHAR(255), name VARCHAR(255), value VARCHAR(255))",
}
local voicemail_params_creation_script = {
- "CREATE TABLE voicemail_params (name text primary key, type text, label text, descr text, value text)",
+ "CREATE TABLE voicemail_params (name VARCHAR(255) primary key, type VARCHAR(255), label VARCHAR(255), descr VARCHAR(255), value VARCHAR(255))",
"INSERT INTO voicemail_params VALUES('username', 'text', 'Extension', '', '')",
"INSERT INTO voicemail_params VALUES('fullname', 'text', 'Full User Name', '', '')",
"INSERT INTO voicemail_params VALUES('vm-password', 'text', 'Voicemail Password', '', '')",
@@ -43,6 +43,11 @@ local voicemail_params_creation_script = {
"INSERT INTO voicemail_params VALUES('vm-notify-email-all-messages', 'boolean', 'Pager Email Enable', '', 'false')",
}
+local voicemail_folders_creation_script = {
+ "CREATE TABLE voicemail_folders (in_folder VARCHAR(255) primary key, label VARCHAR(255))",
+ "INSERT INTO voicemail_folders VALUES('inbox', 'Inbox')",
+}
+
local voicemail_prefs_creation_script = "CREATE TABLE voicemail_prefs (username VARCHAR(255), domain VARCHAR(255), name_path VARCHAR(255), greeting_path VARCHAR(255), password VARCHAR(255))"
-- ################################################################################
@@ -136,7 +141,7 @@ local getselectresponse = function(sql)
return retval
end
-local generatewhereclause = function(username, message)
+local generatewhereclause = function(username, message, foldername)
local sql = ""
local where = {}
if username and username ~= "" then
@@ -151,6 +156,9 @@ local generatewhereclause = function(username, message)
end
where[#where+1] = "(" .. table.concat(where2, " OR ") .. ")"
end
+ if foldername and foldername ~= "" then
+ where[#where+1] = "in_folder = '"..escape(foldername).."'"
+ end
if #where > 0 then
sql = " WHERE " .. table.concat(where, " AND ")
end
@@ -159,6 +167,16 @@ end
-- These funtions access the new voicemail tables added for ACF
+local listfolders = function(foldername)
+ if not checktable("voicemail_folders") then runscript(voicemail_folders_creation_script) end
+ local sql = "SELECT * FROM voicemail_folders" .. generatewhereclause(nil, nil, foldername).." ORDER BY label"
+ return getselectresponse(sql)
+end
+
+local validfolder = function(foldername)
+ return foldername and (foldername ~= "") and (#listfolders(foldername) > 0)
+end
+
local listusers = function(username)
if not checktable("voicemail_users") then runscript(voicemail_users_creation_script) end
local sql = "SELECT * FROM voicemail_users" .. generatewhereclause(username).." ORDER BY username"
@@ -465,6 +483,56 @@ email_message = function(message, address, username)
return retval
end
+move_message = function(message, newfolder, username)
+ local retval = cfe({ label="Move message result" })
+ local messages = format.string_to_table(message, "%s*,%s*")
+ local res, err = pcall(function()
+ local connected = databaseconnect()
+ -- Check if message exists
+ local sql = "SELECT * FROM voicemail_msgs" .. generatewhereclause(username, messages)
+ local mess = getselectresponse(sql)
+ if #mess == #messages then
+ -- Check if newfolder exists
+ if validfolder(newfolder) then
+ for i,m in ipairs(mess) do
+ local sql = "UPDATE voicemail_msgs SET in_folder='"..newfolder.."'" .. generatewhereclause(username, messages)
+ assert (con:execute(sql))
+ end
+ if #mess == 1 then
+ retval.value = "Moved message"
+ else
+ retval.value = "Moved "..#mess.." messages"
+ end
+ else
+ retval.errtxt = "Failed to move message - invalid folder"
+ end
+ else
+ retval.errtxt = "Failed to move message - message not found"
+ end
+ if connected then databasedisconnect() end
+ end)
+ if not res and err then
+ retval.errtxt = err
+ end
+
+ return retval
+end
+
+list_folders = function()
+ local errtxt
+ local folders = {}
+ local res, err = pcall(function()
+ local connected = databaseconnect()
+ folders = listfolders()
+ if connected then databasedisconnect() end
+ end)
+ if not res and err then
+ errtxt = err
+ end
+
+ return cfe({ type="structure", value=folders, label="Voicemail Folders", errtxt=errtxt })
+end
+
list_users = function()
local errtxt
local users = {}