examples/readonly.lua
changeset 125 3e2421384d7a
--- /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: --