summaryrefslogtreecommitdiffstats
path: root/vmail-model.lua
diff options
context:
space:
mode:
authorTed Trask <ttrask01@yahoo.com>2012-02-23 14:39:33 +0000
committerTed Trask <ttrask01@yahoo.com>2012-02-23 14:39:33 +0000
commit774acc0d56664daa4074690c0b5158a8b4f3ec68 (patch)
tree0558cff53bc31fea93bb1478b7bdd5022d736d2a /vmail-model.lua
parentd55292adf2618b9075e9a8ef3ed5d61671b0ac36 (diff)
downloadacf-freeswitch-vmail-774acc0d56664daa4074690c0b5158a8b4f3ec68.tar.bz2
acf-freeswitch-vmail-774acc0d56664daa4074690c0b5158a8b4f3ec68.tar.xz
Started making changes for acf-core-0.15
Changed viewfunctions library to htmlviewfunctions Changed editusersettings, editmyusersettings, and createuser to use new handle_form functionality Removed views for above actions by moving customization to model - seq and readonly Changed deleteuser to be a form
Diffstat (limited to 'vmail-model.lua')
-rw-r--r--vmail-model.lua117
1 files changed, 67 insertions, 50 deletions
diff --git a/vmail-model.lua b/vmail-model.lua
index 4f6158a..0148916 100644
--- a/vmail-model.lua
+++ b/vmail-model.lua
@@ -3,9 +3,9 @@ module (..., package.seeall)
-- Load libraries
require("modelfunctions")
require("posix")
-require("fs")
-require("format")
-require("validator")
+fs = require("acf.fs")
+format = require("acf.format")
+validator = require("acf.validator")
require("luasql.sqlite3")
require("session")
@@ -34,20 +34,20 @@ local table_creation_scripts = {
"CREATE INDEX values_uid_nid_idx on voicemail_values (uid, nid)",
},
voicemail_params = {
- "CREATE TABLE voicemail_params (nid INTEGER PRIMARY KEY, name VARCHAR(255) UNIQUE, type VARCHAR(255), label VARCHAR(255), descr VARCHAR(255), value VARCHAR(255))",
+ "CREATE TABLE voicemail_params (nid INTEGER PRIMARY KEY, name VARCHAR(255) UNIQUE, type VARCHAR(255), label VARCHAR(255), descr VARCHAR(255), value VARCHAR(255), seq INTEGER)",
"CREATE INDEX params_name_idx ON voicemail_params (name)",
- "INSERT INTO voicemail_params VALUES(null, 'username', 'text', 'Extension', '', '')",
- "INSERT INTO voicemail_params VALUES(null, 'firstname', 'text', 'User First Name', '', '')",
- "INSERT INTO voicemail_params VALUES(null, 'lastname', 'text', 'User Last Name', '', '')",
- "INSERT INTO voicemail_params VALUES(null, 'vm-password', 'text', 'Voicemail Password', 'Passwords must be all numbers and at least three digits', '')",
- "INSERT INTO voicemail_params VALUES(null, 'vm-password-confirm', 'text', 'Enter again to confirm', '', '')",
- "INSERT INTO voicemail_params VALUES(null, 'vm-mailto', 'text', 'Email Address', 'Email a notification, including audio file if enabled', '')",
- "INSERT INTO voicemail_params VALUES(null, 'vm-email-all-messages', 'boolean', 'Email Enable', '', 'false')",
- "INSERT INTO voicemail_params VALUES(null, 'vm-attach-file', 'boolean', 'Attach voicemail to email', 'Option to attach audio file to email', 'false')",
- "INSERT INTO voicemail_params VALUES(null, 'vm-keep-local-after-email', 'boolean', 'Keep voicemail', 'When disabled, the message will be deleted from the voicemailbox after any notification email is sent (whether or not email is enabled). This allows receiving voicemail via email alone, rather than having the voicemail available from the Web interface or by telephone. CAUTION: \"Email Address\" must be valid and \"Email Enable\" and \"Attach voicemail to email\" must be enabled, OTHERWISE YOUR MESSAGES WILL BE LOST FOREVER.', 'true')",
- "INSERT INTO voicemail_params VALUES(null, 'vm-notify-mailto', 'text', 'Pager Email Address', 'Email a short notification', '')",
- "INSERT INTO voicemail_params VALUES(null, 'vm-notify-email-all-messages', 'boolean', 'Pager Email Enable', '', 'false')",
- "INSERT INTO voicemail_params VALUES(null, 'callmenumber', 'text', 'Call Me Number', '', '')",
+ "INSERT INTO voicemail_params VALUES(null, 'username', 'text', 'Extension', '', '', '1')",
+ "INSERT INTO voicemail_params VALUES(null, 'firstname', 'text', 'User First Name', '', '', '2')",
+ "INSERT INTO voicemail_params VALUES(null, 'lastname', 'text', 'User Last Name', '', '', '3')",
+ "INSERT INTO voicemail_params VALUES(null, 'vm-password', 'password', 'Voicemail Password', 'Passwords must be all numbers and at least three digits', '', '4')",
+ "INSERT INTO voicemail_params VALUES(null, 'vm-password-confirm', 'password', 'Enter again to confirm', '', '', '5')",
+ "INSERT INTO voicemail_params VALUES(null, 'vm-mailto', 'text', 'Email Address', 'Email a notification, including audio file if enabled', '', '6')",
+ "INSERT INTO voicemail_params VALUES(null, 'vm-email-all-messages', 'boolean', 'Email Enable', '', 'false', '7')",
+ "INSERT INTO voicemail_params VALUES(null, 'vm-attach-file', 'boolean', 'Attach voicemail to email', 'Option to attach audio file to email', 'false', '8')",
+ "INSERT INTO voicemail_params VALUES(null, 'vm-keep-local-after-email', 'boolean', 'Keep voicemail', 'When disabled, the message will be deleted from the voicemailbox after any notification email is sent (whether or not email is enabled). This allows receiving voicemail via email alone, rather than having the voicemail available from the Web interface or by telephone. CAUTION: \"Email Address\" must be valid and \"Email Enable\" and \"Attach voicemail to email\" must be enabled, OTHERWISE YOUR MESSAGES WILL BE LOST FOREVER.', 'true', '9')",
+ "INSERT INTO voicemail_params VALUES(null, 'vm-notify-mailto', 'text', 'Pager Email Address', 'Email a short notification', '', '10')",
+ "INSERT INTO voicemail_params VALUES(null, 'vm-notify-email-all-messages', 'boolean', 'Pager Email Enable', '', 'false', '11')",
+ "INSERT INTO voicemail_params VALUES(null, 'callmenumber', 'text', 'Call Me Number', '', '', '12')",
},
voicemail_folders = {
"CREATE TABLE voicemail_folders (in_folder VARCHAR(255) PRIMARY KEY, label VARCHAR(255))",
@@ -151,6 +151,7 @@ local runscript = function(script)
end
end
+local runsqlcommand
runsqlcommand = function(sql)
local res, err = con:execute(sql)
if not res and err then
@@ -165,6 +166,7 @@ runsqlcommand = function(sql)
end
end
+local getselectresponse
getselectresponse = function(sql)
local retval = {}
local res, err = pcall(function()
@@ -259,6 +261,7 @@ local getuserparams = function(username)
end
if retval.username and username then
retval.username.value = username
+ retval.username.readonly = true
local users = listusers(username)
if #users == 1 then
@@ -359,6 +362,34 @@ local function validateconfig(newconfig)
return success, newconfig
end
+local delete_user = function(username)
+ local users = listusers(username)
+ if #users == 0 then
+ return false, "User does not exist"
+ else
+ -- Delete all of the user's voicemails
+ local messages = list_messages(username)
+ if #messages.value then
+ for i,m in ipairs(messages.value) do
+ delete_message(m.uuid)
+ end
+ end
+ -- Remove the user parameters
+ local sql = "DELETE FROM voicemail_values " .. generatewhereclause(nil, nil, nil, users[1].uid)
+ runsqlcommand(sql)
+ -- Remove the user password
+ sql = "DELETE FROM voicemail_prefs " .. generatewhereclause(username)
+ runsqlcommand(sql)
+ -- Remove the user
+ sql = "DELETE FROM voicemail_users " .. generatewhereclause(nil, nil, nil, users[1].uid)
+ runsqlcommand(sql)
+ result = "Voicemail User Deleted"
+ -- Remove the greetings
+ fs.remove_directory(recording_path..(users[1].domain or config.domain).."/"..username)
+ end
+ return true
+end
+
-- ################################################################################
-- PUBLIC FUNCTIONS
@@ -681,55 +712,41 @@ list_users = function()
return cfe({ type="structure", value=users, label="Voicemail Users", errtxt=errtxt })
end
-delete_user = function(username)
+get_delete_user = function(clientdata)
+ local result = {}
+ result.username = cfe({ value=clientdata.username or "", label="User Name" })
+ return cfe({ type="group", value=result, label="Delete User" })
+end
+
+set_delete_user = function(deleterequest)
local result = ""
- local errtxt
- errtxt = nil
- if not username or username == "" then
- errtxt = "User does not exist"
- else
+ local success = true
+ if not deleterequest.value.username.value == "" then
+ deleterequest.value.username.errtxt = "User does not exist"
+ success = false
+ end
+ if success then
local res, err = pcall(function()
local connected = databaseconnect()
- local users = listusers(username)
- if #users == 0 or username == "" then
- errtxt = "User does not exist"
- else
- -- Delete all of the user's voicemails
- local messages = list_messages(username)
- if #messages.value then
- for i,m in ipairs(messages.value) do
- delete_message(m.uuid)
- end
- end
- -- Remove the user parameters
- sql = "DELETE FROM voicemail_values " .. generatewhereclause(nil, nil, nil, users[1].uid)
- runsqlcommand(sql)
- -- Remove the user password
- sql = "DELETE FROM voicemail_prefs " .. generatewhereclause(username)
- runsqlcommand(sql)
- -- Remove the user
- sql = "DELETE FROM voicemail_users " .. generatewhereclause(nil, nil, nil, users[1].uid)
- runsqlcommand(sql)
- result = "Voicemail User Deleted"
- -- Remove the greetings
- fs.remove_directory(recording_path..(users[1].domain or config.domain).."/"..username)
- end
+ success, deleterequest.errtxt = delete_user(deleterequest.value.username.value)
if connected then databasedisconnect() end
end)
if not res and err then
- errtxt = err
+ deleterequest.errtxt = err
end
+ else
+ deleterequest.errtxt = "Failed to delete user"
end
- return cfe({ value=result, errtxt=errtxt, label="Delete User Result" })
+ return deleterequest
end
-get_usersettings = function(username)
+get_usersettings = function(clientdata)
local retval = {}
local errtxt
local res, err = pcall(function()
local connected = databaseconnect()
- retval = getuserparams(username)
+ retval = getuserparams(clientdata.username)
if connected then databasedisconnect() end
end)
if not res and err then