diff --git a/plugins/mod_sipwise_groups.lua b/plugins/mod_sipwise_groups.lua index 059b744..57d1055 100644 --- a/plugins/mod_sipwise_groups.lua +++ b/plugins/mod_sipwise_groups.lua @@ -6,12 +6,13 @@ -- local lookup_query = [[ -SELECT g.name, s.username, d.domain +SELECT g.username, s.username, d.domain FROM provisioning.voip_subscribers AS s LEFT JOIN provisioning.voip_domains AS d ON s.domain_id = d.id -LEFT JOIN provisioning.voip_pbx_groups AS g ON s.pbx_group_id = g.id +LEFT JOIN provisioning.voip_pbx_groups AS ug ON s.id = ug.subscriber_id +LEFT JOIN provisioning.voip_subscribers AS g ON g.id = ug.group_id LEFT JOIN provisioning.voip_usr_preferences as p ON p.subscriber_id = s.id -WHERE account_id = ? AND s.is_pbx_group = 0 AND s.pbx_group_id IS NOT NULL +WHERE s.account_id = ? AND s.is_pbx_group = 0 AND ug.group_id IS NOT NULL AND (p.attribute_id = ? AND p.value = '1') ORDER BY s.username; ]]; @@ -21,29 +22,32 @@ SELECT s.username, d.domain, p.value FROM provisioning.voip_subscribers AS s LEFT JOIN provisioning.voip_domains AS d ON s.domain_id = d.id LEFT JOIN provisioning.voip_usr_preferences as p ON p.subscriber_id = s.id -WHERE account_id = ? AND s.is_pbx_group = 0 AND s.pbx_group_id IS NOT NULL +LEFT JOIN provisioning.voip_pbx_groups AS ug ON s.id = ug.subscriber_id +WHERE s.account_id = ? AND s.is_pbx_group = 0 AND ug.group_id IS NOT NULL AND p.attribute_id = ? ORDER BY s.username; ]]; local lookup_user_group_query = [[ -SELECT g.name +SELECT g.username FROM provisioning.voip_subscribers AS s LEFT JOIN provisioning.voip_domains AS d ON s.domain_id = d.id -LEFT JOIN provisioning.voip_pbx_groups AS g ON s.pbx_group_id = g.id -WHERE account_id = ? AND +LEFT JOIN provisioning.voip_pbx_groups AS ug ON s.id = ug.subscriber_id +LEFT JOIN provisioning.voip_subscribers AS g ON g.id = ug.group_id +WHERE s.account_id = ? AND s.username = ? AND d.domain = ? AND -s.is_pbx_group = 0 AND s.pbx_group_id IS NOT NULL; +s.is_pbx_group = 0 AND ug.group_id IS NOT NULL; ]]; local lookup_users_by_groups_query = [[ -SELECT g.name, s.username, d.domain +SELECT g.username, s.username, d.domain FROM provisioning.voip_subscribers AS s LEFT JOIN provisioning.voip_domains AS d ON s.domain_id = d.id -LEFT JOIN provisioning.voip_pbx_groups AS g ON s.pbx_group_id = g.id +LEFT JOIN provisioning.voip_pbx_groups AS ug ON s.id = ug.subscriber_id +LEFT JOIN provisioning.voip_subscribers AS g ON g.id = ug.group_id LEFT JOIN provisioning.voip_usr_preferences as p ON p.subscriber_id = s.id -WHERE account_id = ? AND s.is_pbx_group = 0 AND s.pbx_group_id IS NOT NULL -AND (p.attribute_id = ? AND p.value = '1') AND g.name in (?) +WHERE s.account_id = ? AND s.is_pbx_group = 0 AND ug.group_id IS NOT NULL +AND (p.attribute_id = ? AND p.value = '1') AND g.username in (?) ORDER BY s.username; ]]; @@ -52,7 +56,7 @@ SELECT s.username, d.domain FROM provisioning.voip_subscribers AS s LEFT JOIN provisioning.voip_domains AS d ON s.domain_id = d.id LEFT JOIN provisioning.voip_usr_preferences as p ON p.subscriber_id = s.id -WHERE account_id = ? AND s.is_pbx_group = 0 +WHERE s.account_id = ? AND s.is_pbx_group = 0 AND (p.attribute_id = ? AND p.value = '1') ORDER BY s.username; ]]; @@ -222,7 +226,7 @@ function inject_roster_contacts(username, host, roster) end return result; end - + account_id = lookup_account_id(); -- TODO: set this parameters from usr_preferences groups = lookup_groups(true, true); @@ -254,13 +258,13 @@ function inject_roster_contacts(username, host, roster) module:log("debug", "Importing group %s", group_name); import_jids_to_roster(group_name); end - + if roster[false] then roster[false].version = true; end end -function module.load() +function module.load() module:hook("roster-load", inject_roster_contacts); module:log("info", "Groups loaded successfully"); end