diff -r 286a034e4d5f -r 3e2421384d7a examples/readonly.lua --- /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: --