Mercurial > prosody-modules
comparison mod_profile/mod_profile.lua @ 1442:253e374824a8
mod_profile: Load profile into PEP on initial presence
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Sat, 21 Jun 2014 14:58:55 +0200 |
| parents | 07c9306c2c1f |
| children | 843769eb40c3 |
comparison
equal
deleted
inserted
replaced
| 1441:07c9306c2c1f | 1442:253e374824a8 |
|---|---|
| 10 local pep_plus; | 10 local pep_plus; |
| 11 if module:get_host_type() == "local" and module:get_option_boolean("vcard_to_pep", true) then | 11 if module:get_host_type() == "local" and module:get_option_boolean("vcard_to_pep", true) then |
| 12 pep_plus = module:depends"pep_plus"; | 12 pep_plus = module:depends"pep_plus"; |
| 13 end | 13 end |
| 14 | 14 |
| 15 local loaded_pep_for = module:shared"loaded-pep-for"; | |
| 15 local storage = module:open_store(); | 16 local storage = module:open_store(); |
| 16 local legacy_storage = module:open_store("vcard"); | 17 local legacy_storage = module:open_store("vcard"); |
| 17 | 18 |
| 18 local function get_item(vcard, name) | 19 local function get_item(vcard, name) |
| 19 local item; | 20 local item; |
| 113 return origin.send(st.error_reply(stanza, "cancel", "internal-server-error", err)); | 114 return origin.send(st.error_reply(stanza, "cancel", "internal-server-error", err)); |
| 114 end | 115 end |
| 115 | 116 |
| 116 if pep_plus and username then | 117 if pep_plus and username then |
| 117 update_pep(username, data); | 118 update_pep(username, data); |
| 119 loaded_pep_for[username] = true; | |
| 118 end | 120 end |
| 119 | 121 |
| 120 return origin.send(st.reply(stanza)); | 122 return origin.send(st.reply(stanza)); |
| 121 end | 123 end |
| 122 | 124 |
| 123 module:hook("iq-get/bare/vcard-temp:vCard", handle_get); | 125 module:hook("iq-get/bare/vcard-temp:vCard", handle_get); |
| 124 module:hook("iq-get/host/vcard-temp:vCard", handle_get); | 126 module:hook("iq-get/host/vcard-temp:vCard", handle_get); |
| 125 | 127 |
| 126 module:hook("iq-set/bare/vcard-temp:vCard", handle_set); | 128 module:hook("iq-set/bare/vcard-temp:vCard", handle_set); |
| 127 module:hook("iq-set/host/vcard-temp:vCard", handle_set); | 129 module:hook("iq-set/host/vcard-temp:vCard", handle_set); |
| 130 | |
| 131 module:hook("presence/initial", function (event) | |
| 132 local username = event.origin.username | |
| 133 if not loaded_pep_for[username] then | |
| 134 data = storage:get(username); | |
| 135 if data then | |
| 136 update_pep(username, data); | |
| 137 end | |
| 138 loaded_pep_for[username] = true; | |
| 139 end | |
| 140 end); | |
| 128 | 141 |
| 129 -- The vCard4 part | 142 -- The vCard4 part |
| 130 if vcard.to_vcard4 then | 143 if vcard.to_vcard4 then |
| 131 module:add_feature("urn:ietf:params:xml:ns:vcard-4.0"); | 144 module:add_feature("urn:ietf:params:xml:ns:vcard-4.0"); |
| 132 | 145 |
