diff options
Diffstat (limited to 'vmail-model.lua')
-rw-r--r-- | vmail-model.lua | 76 |
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 = {} |