comparison mod_archive/mod_archive.lua @ 188:5e8ea3733dc6

mod_archive: there can be only one note/previous/next/x element in a collection.
author shinysky<shinysky1986(AT)gmail.com>
date Sun, 27 Jun 2010 15:04:24 +0800
parents 670c99e96c52
children 18a0e5c0bb62
comparison
equal deleted inserted replaced
187:670c99e96c52 188:5e8ea3733dc6
299 if collection.attr["with"] == elem.attr["with"] 299 if collection.attr["with"] == elem.attr["with"]
300 and collection.attr["start"] == elem.attr["start"] then 300 and collection.attr["start"] == elem.attr["start"] then
301 -- TODO check if there're duplicates 301 -- TODO check if there're duplicates
302 for newchild in elem:children() do 302 for newchild in elem:children() do
303 if type(newchild) == "table" then 303 if type(newchild) == "table" then
304 collection:add_child(newchild) 304 if newchild.name == "from" or newchild.name == "to" then
305 collection:add_child(newchild);
306 elseif newchild.name == "note" or newchild.name == "previous" or newchild.name == "next" or newchild.name == "x" then
307 local found = false;
308 for i, c in ipairs(collection) do
309 if c.name == newchild.name then
310 found = true;
311 collection[i] = newchild;
312 break;
313 end
314 end
315 if not found then
316 collection:add_child(newchild);
317 end
318 end
305 end 319 end
306 end 320 end
307 local ver = tonumber(collection.attr["version"]) + 1; 321 local ver = tonumber(collection.attr["version"]) + 1;
308 collection.attr["version"] = tostring(ver); 322 collection.attr["version"] = tostring(ver);
309 collection.attr["subject"] = elem.attr["subject"]; 323 collection.attr["subject"] = elem.attr["subject"];
315 end 329 end
316 end 330 end
317 -- not found, create new collection 331 -- not found, create new collection
318 elem.attr["version"] = "0"; 332 elem.attr["version"] = "0";
319 origin.send(st.reply(stanza):add_child(save_result(elem))); 333 origin.send(st.reply(stanza):add_child(save_result(elem)));
334 -- TODO check if elem is valid(?)
320 dm.list_append(node, host, ARCHIVE_DIR, st.preserialize(elem)); 335 dm.list_append(node, host, ARCHIVE_DIR, st.preserialize(elem));
321 -- TODO unsuccessful reply 336 -- TODO unsuccessful reply
322 return true; 337 return true;
323 end 338 end
324 339