Skip to content

Commit

Permalink
Merge pull request #39 from Silencer2K/patch-8
Browse files Browse the repository at this point in the history
maillistadmin search
  • Loading branch information
disaykin committed Sep 10, 2015
2 parents 44d43eb + 50b9d2d commit 5329c4d
Showing 1 changed file with 48 additions and 1 deletion.
49 changes: 48 additions & 1 deletion selist.lua
Original file line number Diff line number Diff line change
Expand Up @@ -163,6 +163,14 @@ function selist2_get_senders(...)
return _selist2_get_senders(_selist2_parse_params(...))
end

function selist2_get_search_count(value, ...)
return _selist2_get_search_count(value, _selist2_parse_params_count(...))
end

function selist2_get_search(value, ...)
return _selist2_get_search(value, _selist2_parse_params(...))
end

function selist2_get_top_domains_count(...)
return _selist2_get_top_domains_count(_selist2_parse_params_count(...))
end
Expand Down Expand Up @@ -217,6 +225,45 @@ function _selist2_get_senders(offset, limit, filter_cat, sort_order, sort_revers
return _selist2_unpack_result(ret_list, offset, limit, sort_reverse)
end

function _selist2_check_search_cond(value, tuple)
value = string.lower(value)

return
string.find(string.lower(tuple[1]), value) or
string.find(string.lower(tuple[2]), value) or
string.find(string.lower(tuple[3]), value)
end

function _selist2_get_search_count(value, filter_cat)
local count = 0

local sort_index = { name = 1, domain = 2, name_ru = 4, name_rus = 4, name_en = 5, name_eng = 5, cat = 3 }
local index = sort_index[sort_order] or 0

_selist2_iterate_tuples(filter_cat, index, function(tuple)
if _selist2_check_search_cond(value, tuple) then
count = count + 1
end
end)

return count
end

function _selist2_get_search(value, offset, limit, filter_cat, sort_order, sort_reverse)
local ret_list = {}

local sort_index = { name = 1, domain = 2, name_ru = 4, name_rus = 4, name_en = 5, name_eng = 5, cat = 3 }
local index = sort_index[sort_order] or 0

_selist2_iterate_tuples(filter_cat, index, function(tuple)
if _selist2_check_search_cond(value, tuple) then
table.insert(ret_list, tuple)
end
end)

return _selist2_unpack_result(ret_list, offset, limit, sort_reverse)
end

function _selist2_get_top_domains_count(filter_cat)
local count = 0
local uniq_domains = {}
Expand Down Expand Up @@ -293,7 +340,7 @@ function _selist2_unpack_result(result, offset, limit, sort_reverse)

local v
for _, v in ipairs({ unpack(result, limit_from, limit_to) }) do
table.insert(reverse, 0, v)
table.insert(reverse, 1, v)
end

return unpack(reverse)
Expand Down

0 comments on commit 5329c4d

Please sign in to comment.