--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/readonly.lua Tue Aug 07 02:43:46 2012 +0300
@@ -0,0 +1,66 @@
+
+-- READONLY
+
+-- public functions:
+-- * readonly
+-- * readwrite
+-- * toggle_readonly
+-- * readonly_jids
+-- FIXME:
+-- * does not work, as mcabber ignores hook retval on hook-message-out
+-- TODO:
+-- * more accessors (merge storage with marking?)
+-- * commands?
+
+local readonly_db = {}
+
+function readonly ( jid )
+ if ( not jid ) or ( jid == '.' ) then
+ jid = main.current_buddy ()
+ end
+ if jid then
+ readonly_db [ jid ] = true
+ end
+end
+
+function readwrite ( jid )
+ if ( not jid ) or ( jid == '.' ) then
+ jid = main.current_buddy ()
+ end
+ if jid then
+ readonly_db [ jid ] = nil
+ end
+end
+
+function toggle_readonly ( jid )
+ if ( not jid ) or ( jid == '.' ) then
+ jid = main.current_buddy ()
+ end
+ if jid then
+ if readonly_db [ jid ] then
+ readwrite ( jid )
+ else
+ readonly ( jid )
+ end
+ end
+end
+
+function readonly_jids ()
+ local result = {}
+ for jid in pairs ( readonly_db ) do
+ table.insert ( result, jid )
+ end
+ return result
+end
+
+main.hook ( 'hook-message-out',
+ function ( args )
+ if readonly_db [ args.jid ] then
+ main.print_info ( args.jid, "Readonly JID, message dropped." )
+ return 'drop'
+ else
+ return 'proceed'
+ end
+ end )
+
+-- vim: se ts=4 sw=4: --