ejabberdsql2prosody: Don't print password of imported accounts (thanks azerttyu)
[prosody.git] / util / dataforms.lua
index f71ceb466a27f3554e94e4125b9fdf1ca663fbdb..56671347a86eb4b6fe96cef917f66e5b6c8f90a8 100644 (file)
@@ -23,8 +23,8 @@ function new(layout)
        return setmetatable(layout, form_mt);
 end
 
-function form_t.form(layout, data)
-       local form = st.stanza("x", { xmlns = xmlns_forms, type = "form" });
+function form_t.form(layout, data, formtype)
+       local form = st.stanza("x", { xmlns = xmlns_forms, type = formtype or "form" });
        if layout.title then
                form:tag("title"):text(layout.title):up();
        end
@@ -93,7 +93,13 @@ function form_t.data(layout, stanza)
        local data = {};
        
        for field_tag in stanza:childtags() do
-               local field_type = field_tag.attr.type;
+               local field_type;
+               for n, field in ipairs(layout) do
+                       if field.name == field_tag.attr.var then
+                               field_type = field.type;
+                               break;
+                       end
+               end
                
                local reader = field_readers[field_type];
                if reader then
@@ -118,6 +124,17 @@ field_readers["text-private"] =
 field_readers["jid-single"] =
        field_readers["text-single"];
 
+field_readers["jid-multi"] = 
+       function (field_tag)
+               local result = {};
+               for value_tag in field_tag:childtags() do
+                       if value_tag.name == "value" then
+                               result[#result+1] = value_tag[1];
+                       end
+               end
+               return result;
+       end
+
 field_readers["text-multi"] = 
        function (field_tag)
                local result = {};