Mercurial > prosody-modules
comparison mod_archive/mod_archive.lua @ 199:27b8a7482149
mod_archive: '7.3 Removing a Collection' is DONE, so '7. Archive Management' is DONE.
| author | shinysky<shinysky1986(AT)gmail.com> |
|---|---|
| date | Thu, 08 Jul 2010 13:46:04 +0800 |
| parents | a3b5810de3e4 |
| children | 254c13e049f7 |
comparison
equal
deleted
inserted
replaced
| 198:a3b5810de3e4 | 199:27b8a7482149 |
|---|---|
| 499 origin.send(reply); | 499 origin.send(reply); |
| 500 return true; | 500 return true; |
| 501 end | 501 end |
| 502 | 502 |
| 503 local function remove_handler(event) | 503 local function remove_handler(event) |
| 504 module:log("debug", "-- stanza:\n%s", tostring(event.stanza)); | 504 local origin, stanza = event.origin, event.stanza; |
| 505 local node, host = origin.username, origin.host; | |
| 506 local data = dm.list_load(node, host, ARCHIVE_DIR); | |
| 507 local elem = stanza.tags[1]; | |
| 508 if data then | |
| 509 local count = table.getn(data); | |
| 510 local found = false; | |
| 511 for i = count, 1, -1 do | |
| 512 local collection = st.deserialize(data[i]); | |
| 513 local res = filter_with(elem.attr["with"], collection.attr["with"]); | |
| 514 res = res and filter_start(elem.attr["start"], collection.attr["start"]); | |
| 515 res = res and filter_end(elem.attr["end"], collection.attr["start"]); | |
| 516 if res then | |
| 517 module:log("debug", "-- removing:\n%s", tostring(collection)); | |
| 518 table.remove(data, i); | |
| 519 found = true; | |
| 520 end | |
| 521 end | |
| 522 if found then | |
| 523 dm.list_store(node, host, ARCHIVE_DIR, st.preserialize(data)); | |
| 524 else | |
| 525 origin.send(st.error_reply(stanza, "cancel", "item-not-found")); | |
| 526 return true; | |
| 527 end | |
| 528 end | |
| 529 origin.send(st.reply(stanza)); | |
| 505 return true; | 530 return true; |
| 506 end | 531 end |
| 507 | 532 |
| 508 ------------------------------------------------------------ | 533 ------------------------------------------------------------ |
| 509 -- Replication | 534 -- Replication |
| 560 module:hook("message/full", msg_handler, 10); | 585 module:hook("message/full", msg_handler, 10); |
| 561 module:hook("message/bare", msg_handler, 10); | 586 module:hook("message/bare", msg_handler, 10); |
| 562 | 587 |
| 563 -- FIXME sort collections | 588 -- FIXME sort collections |
| 564 -- TODO exactmatch | 589 -- TODO exactmatch |
| 590 -- TODO <item/> JID match | |
| 591 -- TODO 'open attr' in removing a collection |
