examples/readonly.lua
author Myhailo Danylenko <isbear@ukrpost.net>
Wed, 28 Nov 2012 20:17:53 +0200
changeset 146 04d19c9c1196
parent 125 3e2421384d7a
permissions -rw-r--r--
Fix module loading problem


--  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: --