Commit e32531df authored by God Ly's avatar God Ly Committed by it2000

OF-359 added plugin.broadcast.all2offline

git-svn-id: http://svn.igniterealtime.org/svn/repos/openfire/trunk@11680 b35dd754-fafc-0310-a699-88a17e54d16e
parent 5ffe8439
...@@ -44,6 +44,12 @@ ...@@ -44,6 +44,12 @@
Broadcast Plugin Changelog Broadcast Plugin Changelog
</h1> </h1>
<p><b>1.8.1</b> -- April 1, 2010</p>
<ul>
<li>Requires Openfire 3.7.0.</li>
<li>[<a href='http://www.igniterealtime.org/issues/browse/OF-359'>OF-359</a>] - Allows broadcasting to all (online and offline) users.</li>
</ul>
<p><b>1.8.0</b> -- December 1, 2009</p> <p><b>1.8.0</b> -- December 1, 2009</p>
<ul> <ul>
<li>Now requires Openfire 3.7.0.</li> <li>Now requires Openfire 3.7.0.</li>
......
...@@ -8,8 +8,8 @@ ...@@ -8,8 +8,8 @@
<name>Broadcast</name> <name>Broadcast</name>
<description>Broadcasts messages to users.</description> <description>Broadcasts messages to users.</description>
<author>Jive Software</author> <author>Jive Software</author>
<version>1.8.0</version> <version>1.8.1</version>
<date>12/1/2009</date> <date>4/1/2010</date>
<url>http://www.igniterealtime.org</url> <url>http://www.igniterealtime.org</url>
<minServerVersion>3.7.0</minServerVersion> <minServerVersion>3.7.0</minServerVersion>
</plugin> </plugin>
\ No newline at end of file
...@@ -76,6 +76,9 @@ be configured under Server/Server Manager/System Properties: ...@@ -76,6 +76,9 @@ be configured under Server/Server Manager/System Properties:
to broadcast messages to all connected users at once. When this property isn't set, to broadcast messages to all connected users at once. When this property isn't set,
anyone is allowed to broadcast messages to all users. Users should be specified by their anyone is allowed to broadcast messages to all users. Users should be specified by their
bare JID (e.g. john@myserver.com)</li> bare JID (e.g. john@myserver.com)</li>
<li><tt>plugin.broadcast.all2offline</tt> -- true to deliver broadcast messages sent
to all@[serviceName].[serverName] to online and offline users. When false or not
set only online users get the messages as described below.</li>
</ul> </ul>
<h2>Using the Plugin</h2> <h2>Using the Plugin</h2>
......
...@@ -36,6 +36,8 @@ import org.jivesoftware.openfire.container.PluginManager; ...@@ -36,6 +36,8 @@ import org.jivesoftware.openfire.container.PluginManager;
import org.jivesoftware.openfire.group.Group; import org.jivesoftware.openfire.group.Group;
import org.jivesoftware.openfire.group.GroupManager; import org.jivesoftware.openfire.group.GroupManager;
import org.jivesoftware.openfire.group.GroupNotFoundException; import org.jivesoftware.openfire.group.GroupNotFoundException;
import org.jivesoftware.openfire.user.User;
import org.jivesoftware.openfire.user.UserManager;
import org.jivesoftware.util.JiveGlobals; import org.jivesoftware.util.JiveGlobals;
import org.jivesoftware.util.PropertyEventDispatcher; import org.jivesoftware.util.PropertyEventDispatcher;
import org.jivesoftware.util.PropertyEventListener; import org.jivesoftware.util.PropertyEventListener;
...@@ -71,8 +73,10 @@ public class BroadcastPlugin implements Plugin, Component, PropertyEventListener ...@@ -71,8 +73,10 @@ public class BroadcastPlugin implements Plugin, Component, PropertyEventListener
private List<JID> allowedUsers; private List<JID> allowedUsers;
private boolean groupMembersAllowed; private boolean groupMembersAllowed;
private boolean disableGroupPermissions; private boolean disableGroupPermissions;
private boolean all2ofline;
private ComponentManager componentManager; private ComponentManager componentManager;
private PluginManager pluginManager; private PluginManager pluginManager;
private UserManager userManager;
/** /**
* Constructs a new broadcast plugin. * Constructs a new broadcast plugin.
...@@ -84,6 +88,8 @@ public class BroadcastPlugin implements Plugin, Component, PropertyEventListener ...@@ -84,6 +88,8 @@ public class BroadcastPlugin implements Plugin, Component, PropertyEventListener
groupMembersAllowed = JiveGlobals.getBooleanProperty( groupMembersAllowed = JiveGlobals.getBooleanProperty(
"plugin.broadcast.groupMembersAllowed", true); "plugin.broadcast.groupMembersAllowed", true);
allowedUsers = stringToList(JiveGlobals.getProperty("plugin.broadcast.allowedUsers", "")); allowedUsers = stringToList(JiveGlobals.getProperty("plugin.broadcast.allowedUsers", ""));
all2ofline = JiveGlobals.getBooleanProperty(
"plugin.broadcast.all2offline", false);
} }
// Plugin Interface // Plugin Interface
...@@ -92,6 +98,7 @@ public class BroadcastPlugin implements Plugin, Component, PropertyEventListener ...@@ -92,6 +98,7 @@ public class BroadcastPlugin implements Plugin, Component, PropertyEventListener
pluginManager = manager; pluginManager = manager;
sessionManager = SessionManager.getInstance(); sessionManager = SessionManager.getInstance();
groupManager = GroupManager.getInstance(); groupManager = GroupManager.getInstance();
userManager = UserManager.getInstance();
// Register as a component. // Register as a component.
componentManager = ComponentManagerFactory.getComponentManager(); componentManager = ComponentManagerFactory.getComponentManager();
...@@ -116,6 +123,7 @@ public class BroadcastPlugin implements Plugin, Component, PropertyEventListener ...@@ -116,6 +123,7 @@ public class BroadcastPlugin implements Plugin, Component, PropertyEventListener
} }
} }
componentManager = null; componentManager = null;
userManager = null;
pluginManager = null; pluginManager = null;
sessionManager = null; sessionManager = null;
groupManager = null; groupManager = null;
...@@ -216,7 +224,25 @@ public class BroadcastPlugin implements Plugin, Component, PropertyEventListener ...@@ -216,7 +224,25 @@ public class BroadcastPlugin implements Plugin, Component, PropertyEventListener
} }
return; return;
} }
sessionManager.broadcast(message);
if (all2ofline==false) {
// send to online users
sessionManager.broadcast(message);
} else {
// send to all users
Collection<User> users = userManager.getUsers();
String xmppdomain = "@" + JiveGlobals.getProperty("xmpp.domain");
for (User u : users)
{
Message newMessage = message.createCopy();
newMessage.setTo(u.getUsername() + xmppdomain);
try {
componentManager.sendPacket(this, newMessage);
} catch (Exception e) {
Log.error(e.getMessage(), e);
}
}
}
} }
// See if the name is a group. // See if the name is a group.
else { else {
......
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