From ad94be80646212ca15754958ac0301fea2cb578c Mon Sep 17 00:00:00 2001 From: Goffi Date: Wed, 24 Mar 2010 16:50:53 +1100 Subject: [PATCH] plugin xep-0045: added roomUserJoined and roomUserLeft signals --- plugins/plugin_xep_0045.py | 11 +++++++++++ sat_bridge/DBus.py | 1 + 2 files changed, 12 insertions(+) diff --git a/plugins/plugin_xep_0045.py b/plugins/plugin_xep_0045.py index 640a8787..a60a0d9f 100755 --- a/plugins/plugin_xep_0045.py +++ b/plugins/plugin_xep_0045.py @@ -70,6 +70,8 @@ class XEP_0045(): self.clients={} host.bridge.addMethod("joinMUC", ".communication", in_sign='ssss', out_sign='', method=self.join) host.bridge.addSignal("roomJoined", ".communication", signature='ssasss') #args: room_id, room_service, room_nicks, user_nick, profile + host.bridge.addSignal("roomUserJoined", ".communication", signature='sssa{ss}s') #args: room_id, room_service, user_nick, user_data, profile + host.bridge.addSignal("roomUserLeft", ".communication", signature='sssa{ss}s') #args: room_id, room_service, user_nick, user_data, profile def __check_profile(self, profile): if not profile or not self.clients.has_key(profile) or not self.host.isConnected(profile): @@ -122,6 +124,15 @@ class SatMUCClient (muc.MUCClient): def receivedGroupChat(self, room, user, body): debug('receivedGroupChat: room=%s user=%s body=%s', room, user, body) + def userJoinedRoom(self, room, user): + debug (_("user %(nick)s has joined room (%(room_id)s)") % {'nick':user.nick, 'room_id':room.occupantJID.userhost()}) + user_data={'entity':user.entity or '', 'affiliation':user.affiliation, 'role':user.role} + self.host.bridge.roomUserJoined(room.roomIdentifier, room.service, user.nick, user_data, self.parent.profile) + + def userLeftRoom(self, room, user): + debug (_("user %(nick)s left room (%(room_id)s)") % {'nick':user.nick, 'room_id':room.occupantJID.userhost()}) + user_data={'entity':user.entity or '', 'affiliation':user.affiliation, 'role':user.role} + self.host.bridge.roomUserLeft(room.roomIdentifier, room.service, user.nick, user_data, self.parent.profile) #def connectionInitialized(self): #pass diff --git a/sat_bridge/DBus.py b/sat_bridge/DBus.py index c74c55af..cc74f862 100755 --- a/sat_bridge/DBus.py +++ b/sat_bridge/DBus.py @@ -362,4 +362,5 @@ class DBusBridge(Bridge): def addSignal(self, name, int_suffix, signature): self.dbus_bridge.addSignal(name, int_suffix, signature) + setattr(DBusBridge, name, getattr(self.dbus_bridge, name))