Commit 7caa170b authored by Gaston Dombiak's avatar Gaston Dombiak Committed by gato

1) Do not include in transcript events of room owner

2) Do not count room owner as room occupant

git-svn-id: http://svn.igniterealtime.org/svn/repos/openfire/trunk@10459 b35dd754-fafc-0310-a699-88a17e54d16e
parent e4a97455
......@@ -2,6 +2,7 @@ package org.jivesoftware.openfire.clearspace;
import org.jivesoftware.openfire.muc.*;
import org.jivesoftware.openfire.XMPPServer;
import org.jivesoftware.openfire.user.UserNotFoundException;
import org.jivesoftware.util.TaskEngine;
import org.jivesoftware.util.JiveConstants;
import org.jivesoftware.util.Log;
......@@ -154,10 +155,21 @@ public class ClearspaceMUCTranscriptManager implements MUCEventListener {
JID jid = new JID(roomJid);
MultiUserChatService mucService = mucManager.getMultiUserChatService(jid);
MUCRoom room = mucService.getChatRoom(jid.getNode());
// Not count room owners as occupants
int totalOccupants = room.getOccupantsCount();
for (String owner : room.getOwners()) {
try {
if (!room.getOccupantsByBareJID(owner).isEmpty()) {
totalOccupants--;
}
} catch (UserNotFoundException e) {
// Ignore
}
}
Element occUpdateElement = transcriptElement.addElement("occupant-count-update");
occUpdateElement.addElement("roomjid").setText(roomJid);
occUpdateElement.addElement("count").setText(Integer.toString(room.getOccupantsCount()));
occUpdateElement.addElement("count").setText(Integer.toString(totalOccupants));
}
// Send the transcript-update packet to Clearspace.
......@@ -191,26 +203,41 @@ public class ClearspaceMUCTranscriptManager implements MUCEventListener {
}
public void occupantJoined(JID roomJID, JID user, String nickname) {
if (!isRoomOwner(roomJID, user)) {
addGroupChatEvent(ClearspaceMUCTranscriptEvent.occupantJoined(roomJID, user, new Date().getTime()));
}
}
public void occupantLeft(JID roomJID, JID user) {
if (!isRoomOwner(roomJID, user)) {
addGroupChatEvent(ClearspaceMUCTranscriptEvent.occupantLeft(roomJID, user, new Date().getTime()));
}
}
public void nicknameChanged(JID roomJID, JID user, String oldNickname, String newNickname) {
// Do nothing
}
public void messageReceived(JID roomJID, JID user, String nickname, Message message) {
if (!isRoomOwner(roomJID, user)) {
addGroupChatEvent(ClearspaceMUCTranscriptEvent.messageReceived(roomJID, user, message.getBody(),
new Date().getTime()));
}
}
public void roomSubjectChanged(JID roomJID, JID user, String newSubject) {
if (!isRoomOwner(roomJID, user)) {
addGroupChatEvent(ClearspaceMUCTranscriptEvent.roomSubjectChanged(roomJID, user, newSubject,
new Date().getTime()));
}
}
private boolean isRoomOwner(JID roomJID, JID user) {
MultiUserChatService chatService =
XMPPServer.getInstance().getMultiUserChatManager().getMultiUserChatService(roomJID);
MUCRoom room = chatService.getChatRoom(roomJID.getNode());
return room != null && room.getOwners().contains(user.toBareJID());
}
/**
* Queues the group chat event to be later sent to Clearspace.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment