diff options
author | Ted Trask <ttrask01@yahoo.com> | 2013-12-08 23:07:24 +0000 |
---|---|---|
committer | Ted Trask <ttrask01@yahoo.com> | 2013-12-08 23:07:24 +0000 |
commit | 5d25b383c7e3318f6d3ba9fa00bb23616159ac54 (patch) | |
tree | 1d2fab08cdc1c77897ea77a16bd124ba73abed7f | |
parent | a7ac20b54272bda016a4f320b9291e76c2652286 (diff) | |
download | acf-freeswitch-vmail-5d25b383c7e3318f6d3ba9fa00bb23616159ac54.tar.bz2 acf-freeswitch-vmail-5d25b383c7e3318f6d3ba9fa00bb23616159ac54.tar.xz |
Some cleanup of bulk creation
-rw-r--r-- | vmail-controller.lua | 2 | ||||
-rw-r--r-- | vmail-model.lua | 69 |
2 files changed, 38 insertions, 33 deletions
diff --git a/vmail-controller.lua b/vmail-controller.lua index 9999f75..517664c 100644 --- a/vmail-controller.lua +++ b/vmail-controller.lua @@ -111,7 +111,7 @@ mymodule.createuser = function( self ) end mymodule.createmanyusers = function( self ) - return self.handle_form(self, self.model.get_bunchsettings, self.model.set_bunchsettings, self.clientdata, "Create Many", "Create Users", "User Created") + return self.handle_form(self, self.model.get_bunchsettings, self.model.set_bunchsettings, self.clientdata, "Create Many", "Create Users", "Users Created") end mymodule.processdialplanxml = function( self ) diff --git a/vmail-model.lua b/vmail-model.lua index e818a7f..98fd7a4 100644 --- a/vmail-model.lua +++ b/vmail-model.lua @@ -701,41 +701,46 @@ mymodule.get_bunchsettings = function (self) return cfe({ type="group", value={bunch=bunch}, label="Voicemail Users List" }) end -mymodule.set_bunchsettings = function (self, clientdata) - local connected = databaseconnect() - local nExts = {} - tFile = assert(io.tmpfile()) - tFile:write(clientdata.value.bunch.value) - tFile:seek("set",0) - - for line in tFile:lines() do - for ext, fname, lname, pass in string.gmatch(line, "(%w+):(%w+):(%w+):(%w+)") do - nExts.username = ext or nil - nExts.firstname = fname or nil - nExts.lastname = lname or nil - nExts.password = pass or nil - - sql = "INSERT INTO voicemail_users VALUES(null, '"..escape(nExts.username).."')" - runsqlcommand(sql) - - sql = "SELECT uid FROM voicemail_users where username ='"..escape(nExts.username).."'"; - uid = getselectresponse(sql) - nExts.uid = uid[1].uid or nil - - sql = "INSERT INTO voicemail_values VALUES('"..uid[1].uid.."', '2', '"..escape(tostring(nExts.firstname)).."')" - runsqlcommand(sql) - - sql = "INSERT INTO voicemail_values VALUES('"..uid[1].uid.."', '3', '"..escape(tostring(nExts.lastname)).."')" - runsqlcommand(sql) - - sql = "INSERT INTO voicemail_prefs (username, domain, password) VALUES ('"..escape(nExts.username).."', '"..config.domain.."', '"..escape(nExts.password).."')" - runsqlcommand(sql) +mymodule.set_bunchsettings = function (self, bunchdata) + local res, err = pcall(function() + local connected = vmaildb.databaseconnect() + + local sql = "BEGIN TRANSACTION" + vmaildb.runsqlcommand(sql) + + for line in string.gmatch(bunchdata.value.bunch.value, "[^\n]+") do + local username, firstname, lastname, password = string.match(line, "(%w+):(%w+):(%w+):(%w+)") + if username then + sql = "INSERT INTO voicemail_users VALUES(null, '"..vmaildb.escape(username).."')" + vmaildb.runsqlcommand(sql) + + sql = "SELECT uid FROM voicemail_users where username ='"..vmaildb.escape(username).."'"; + uid = vmaildb.getselectresponse(sql) + + sql = "INSERT INTO voicemail_values VALUES('"..uid[1].uid.."', '2', '"..vmaildb.escape(tostring(firstname)).."')" + vmaildb.runsqlcommand(sql) + + sql = "INSERT INTO voicemail_values VALUES('"..uid[1].uid.."', '3', '"..vmaildb.escape(tostring(lastname)).."')" + vmaildb.runsqlcommand(sql) + + sql = "INSERT INTO voicemail_prefs (username, domain, password) VALUES ('"..vmaildb.escape(username).."', '"..config.domain.."', '"..vmaildb.escape(password).."')" + vmaildb.runsqlcommand(sql) + else + bunchdata.value.bunch.errtxt = "Invalid syntax" + bunchdata.errtxt = "Failed to create users" + vmaildb.runsqlcommand("ROLLBACK") + break + end end - end + vmaildb.runsqlcommand("COMMIT") - if connected then databasedisconnect() end + if connected then vmaildb.databasedisconnect() end + end) + if not res and err then + bunchdata.errtxt = err + end - return clientdata + return bunchdata end mymodule.get_usersettings = function(self, clientdata) |