summaryrefslogtreecommitdiffstats
path: root/vmail-model.lua
diff options
context:
space:
mode:
Diffstat (limited to 'vmail-model.lua')
-rw-r--r--vmail-model.lua39
1 files changed, 39 insertions, 0 deletions
diff --git a/vmail-model.lua b/vmail-model.lua
index 51261cf..f3f7cac 100644
--- a/vmail-model.lua
+++ b/vmail-model.lua
@@ -751,6 +751,45 @@ mymodule.list_users = function()
return cfe({ type="structure", value=users, label="Voicemail Users", errtxt=errtxt })
end
+mymodule.get_search_options = function(self, clientdata)
+ retval = cfe({type="group", value={}, label="User Search"})
+ retval.value.username = cfe({label="Extension", seq=1})
+ retval.value.firstname = cfe({label="First Name", seq=2})
+ retval.value.lastname = cfe({label="Last Name", seq=3})
+ return retval
+end
+
+mymodule.search_users = function(self, search)
+ -- No validation
+ local res, err = pcall(function()
+ local connected = vmaildb.databaseconnect()
+ local where = {}
+ if search.value.username.value ~= "" then
+ where[#where+1] = "u.username ~ '"..vmaildb.escape(search.value.username.value).."'"
+ end
+ if search.value.firstname.value ~= "" then
+ where[#where+1] = "v2.value ~ '"..vmaildb.escape(search.value.firstname.value).."'"
+ end
+ if search.value.lastname.value ~= "" then
+ where[#where+1] = "v1.value ~ '"..vmaildb.escape(search.value.lastname.value).."'"
+ end
+ -- This crazy query gets the username from voicemail_users, the firstname and lastname from two instances of voicemail_values (using voicemail_params to determine the corresponding nid values) drops usernames starting with "tempuser" and ordering by username
+ local sql = "SELECT u.username, v1.value lastname, v2.value firstname FROM voicemail_users u LEFT OUTER JOIN voicemail_values v1 ON u.uid = v1.uid AND v1.nid=(SELECT nid FROM voicemail_params WHERE name='lastname') LEFT OUTER JOIN voicemail_values v2 ON u.uid = v2.uid AND v2.nid=(SELECT nid FROM voicemail_params WHERE name='firstname')"
+ if #where then
+ sql = sql.." WHERE "..table.concat(where, " AND ")
+ end
+ sql = sql.." ORDER BY u.username"
+ local users = vmaildb.getselectresponse(sql)
+ search.value.result = cfe({ type="structure", value=users, label="Voicemail Users" })
+ if connected then databasedisconnect() end
+ end)
+ if not res and err then
+ search.errtxt = err
+ end
+
+ return search
+end
+
mymodule.get_delete_user = function(self, clientdata)
local result = {}
result.username = cfe({ value=clientdata.username or "", label="User Name" })