From d3e5a84ecdf311b05939be649d97e88edfba6c93 Mon Sep 17 00:00:00 2001 From: srosse <none@none> Date: Tue, 28 Aug 2012 13:58:17 +0200 Subject: [PATCH] OO-291: make the synchronization groups to IM more configurable with a sync all, per group config, never --- .../manager/BusinessGroupServiceImpl.java | 13 ++- .../ui/homepage/GroupInfoMainController.java | 2 +- .../AbstractBusinessGroupListController.java | 3 + .../run/BusinessGroupMainRunController.java | 2 +- .../org/olat/instantMessaging/IMConfig.java | 34 +++---- .../olat/instantMessaging/IMConfigSync.java | 30 ++++++ .../instantMessaging/InstantMessagingJob.java | 2 +- .../InstantMessagingModule.java | 99 ++----------------- .../SmackInstantMessagingImpl.java | 18 +++- .../_spring/instantMessagingContext.xml | 7 +- .../fo/restapi/MyForumsWebService.java | 3 +- .../resources/serviceconfig/olat.properties | 11 +-- .../_spring/instantMessagingTestContext.xml | 7 +- 13 files changed, 88 insertions(+), 143 deletions(-) create mode 100644 src/main/java/org/olat/instantMessaging/IMConfigSync.java diff --git a/src/main/java/org/olat/group/manager/BusinessGroupServiceImpl.java b/src/main/java/org/olat/group/manager/BusinessGroupServiceImpl.java index 4cad783c644..9cba012ec1a 100644 --- a/src/main/java/org/olat/group/manager/BusinessGroupServiceImpl.java +++ b/src/main/java/org/olat/group/manager/BusinessGroupServiceImpl.java @@ -87,6 +87,7 @@ import org.olat.group.model.SearchBusinessGroupParams; import org.olat.group.right.BGRightManager; import org.olat.group.ui.BGMailHelper; import org.olat.group.ui.edit.BusinessGroupModifiedEvent; +import org.olat.instantMessaging.IMConfigSync; import org.olat.instantMessaging.InstantMessagingModule; import org.olat.instantMessaging.syncservice.SyncSingleUserTask; import org.olat.notifications.NotificationsManagerImpl; @@ -1136,9 +1137,10 @@ public class BusinessGroupServiceImpl implements BusinessGroupService, UserDataD private void addToRoster(Identity ureqIdentity, Identity identity, BusinessGroup group) { if (InstantMessagingModule.isEnabled()) { //evaluate whether to sync or not - boolean syncGroup = InstantMessagingModule.getAdapter().getConfig().isSyncLearningGroups(); + IMConfigSync syncGroup = InstantMessagingModule.getAdapter().getConfig().getSyncGroupsConfig(); //only sync when a group is a certain type and this type is configured that you want to sync it - if(syncGroup) { + if(syncGroup.equals(IMConfigSync.allGroups) || + (syncGroup.equals(IMConfigSync.perConfig) && isChatEnableFor(group))) { String groupID = InstantMessagingModule.getAdapter().createChatRoomString(group); String groupDisplayName = group.getName(); //course group enrolment is time critial so we move this in an separate thread and catch all failures @@ -1146,6 +1148,13 @@ public class BusinessGroupServiceImpl implements BusinessGroupService, UserDataD } } } + private boolean isChatEnableFor(BusinessGroup group) { + CollaborationTools tools = CollaborationToolsFactory.getInstance().getOrCreateCollaborationTools(group); + if(tools == null) { + return false; + } + return tools.isToolEnabled(CollaborationTools.TOOL_CHAT); + } @Override public void removeOwners(Identity ureqIdentity, Collection<Identity> identitiesToRemove, BusinessGroup group) { diff --git a/src/main/java/org/olat/group/ui/homepage/GroupInfoMainController.java b/src/main/java/org/olat/group/ui/homepage/GroupInfoMainController.java index 1b3a7ca8d58..5b3fa5f9712 100644 --- a/src/main/java/org/olat/group/ui/homepage/GroupInfoMainController.java +++ b/src/main/java/org/olat/group/ui/homepage/GroupInfoMainController.java @@ -236,7 +236,7 @@ public class GroupInfoMainController extends MainLayoutBasicController implement return true; } if(BusinessGroupModule.CONTACT_BUSINESS_CARD_GROUP_CONFIG.equals(contactConfig)) { - CollaborationTools tools = CollaborationToolsFactory.getInstance().getCollaborationToolsIfExists(businessGroup); + CollaborationTools tools = CollaborationToolsFactory.getInstance().getOrCreateCollaborationTools(businessGroup); return tools == null ? false : tools.isToolEnabled(CollaborationTools.TOOL_CONTACT); } return false; diff --git a/src/main/java/org/olat/group/ui/main/AbstractBusinessGroupListController.java b/src/main/java/org/olat/group/ui/main/AbstractBusinessGroupListController.java index b51f8fe60b5..40ff61baa64 100644 --- a/src/main/java/org/olat/group/ui/main/AbstractBusinessGroupListController.java +++ b/src/main/java/org/olat/group/ui/main/AbstractBusinessGroupListController.java @@ -492,6 +492,9 @@ abstract class AbstractBusinessGroupListController extends BasicController imple if(groups.isEmpty()) { showWarning("msg.alleastone.editable.group"); return; + } else if(CollaborationTools.TOOLS == null) { + //init the available tools + CollaborationToolsFactory.getInstance().getOrCreateCollaborationTools(groups.get(0)); } boolean isAuthor = ureq.getUserSession().getRoles().isAuthor() diff --git a/src/main/java/org/olat/group/ui/run/BusinessGroupMainRunController.java b/src/main/java/org/olat/group/ui/run/BusinessGroupMainRunController.java index 0bd4b30f0f2..2d62a3c1981 100644 --- a/src/main/java/org/olat/group/ui/run/BusinessGroupMainRunController.java +++ b/src/main/java/org/olat/group/ui/run/BusinessGroupMainRunController.java @@ -1034,7 +1034,7 @@ public class BusinessGroupMainRunController extends MainLayoutBasicController im if (InstantMessagingModule.isEnabled() && collabTools.isToolEnabled(CollaborationTools.TOOL_CHAT) && - InstantMessagingModule.isSyncLearningGroups() // whether LearningGroups can have chat or not) + InstantMessagingModule.isSyncGroups() // whether LearningGroups can have chat or not) ) { gtnChild = new GenericTreeNode(); gtnChild.setTitle(translate("menutree.chat")); diff --git a/src/main/java/org/olat/instantMessaging/IMConfig.java b/src/main/java/org/olat/instantMessaging/IMConfig.java index dc966e59f0e..247d0cf2f7d 100644 --- a/src/main/java/org/olat/instantMessaging/IMConfig.java +++ b/src/main/java/org/olat/instantMessaging/IMConfig.java @@ -43,12 +43,10 @@ public class IMConfig { private String replaceStringForEmailAt; private String adminUsername = "admin"; private String adminPassword; - private boolean generateTestUsers = false; private String CONFERENCE_PREFIX = "conference"; private int idlePolltime; private int chatPolltime; - private boolean syncPersonalGroups; - private boolean syncLearningGroups; + private String syncGroups; public static final String RESOURCE = "OLAT"; // fxdiff: FXOLAT-46 private boolean hideExternalClientInfo; @@ -123,14 +121,6 @@ public class IMConfig { return nodeId; } - public boolean generateTestUsers() { - return generateTestUsers; - } - - public void setGenerateTestUsers(boolean generateTestUsers) { - this.generateTestUsers = generateTestUsers; - } - public String getConferenceServer() { return CONFERENCE_PREFIX+"."+servername; } @@ -156,22 +146,20 @@ public class IMConfig { this.chatPolltime = chatPolltime; } - public boolean isSyncPersonalGroups() { - return syncPersonalGroups; - } - - public void setSyncPersonalGroups(boolean syncPersonalGroups) { - this.syncPersonalGroups = syncPersonalGroups; + public IMConfigSync getSyncGroupsConfig() { + if("true".equals(syncGroups)) { + return IMConfigSync.allGroups; + } + if("groupconfig".equals(syncGroups)) { + return IMConfigSync.perConfig; + } + return IMConfigSync.never; } - public boolean isSyncLearningGroups() { - return syncLearningGroups; + public void setSyncGroups(String syncGroups) { + this.syncGroups = syncGroups; } - public void setSyncLearningGroups(boolean syncLearningGroups) { - this.syncLearningGroups = syncLearningGroups; - } - public void setPacketReplyTimeout (int timeout) { SmackConfiguration.setPacketReplyTimeout(timeout); } diff --git a/src/main/java/org/olat/instantMessaging/IMConfigSync.java b/src/main/java/org/olat/instantMessaging/IMConfigSync.java new file mode 100644 index 00000000000..4c716980153 --- /dev/null +++ b/src/main/java/org/olat/instantMessaging/IMConfigSync.java @@ -0,0 +1,30 @@ +/** + * <a href="http://www.openolat.org"> + * OpenOLAT - Online Learning and Training</a><br> + * <p> + * Licensed under the Apache License, Version 2.0 (the "License"); <br> + * you may not use this file except in compliance with the License.<br> + * You may obtain a copy of the License at the + * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> + * <p> + * Unless required by applicable law or agreed to in writing,<br> + * software distributed under the License is distributed on an "AS IS" BASIS, <br> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> + * See the License for the specific language governing permissions and <br> + * limitations under the License. + * <p> + * Initial code contributed and copyrighted by<br> + * frentix GmbH, http://www.frentix.com + * <p> + */ +package org.olat.instantMessaging; + +/** + * + * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com + */ +public enum IMConfigSync { + allGroups, + perConfig, + never +} diff --git a/src/main/java/org/olat/instantMessaging/InstantMessagingJob.java b/src/main/java/org/olat/instantMessaging/InstantMessagingJob.java index 6bea7ddcf00..ddc9ec66066 100644 --- a/src/main/java/org/olat/instantMessaging/InstantMessagingJob.java +++ b/src/main/java/org/olat/instantMessaging/InstantMessagingJob.java @@ -56,7 +56,7 @@ public class InstantMessagingJob extends JobWithDB { try { List<Property> props = propertyManager.findProperties(null, null, null, "classConfig", createPropertyName(this.getClass(), CONFIG_SYNCED_LEARNING_GROUPS)); if (props.size() == 0 || !Boolean.getBoolean(props.get(0).getStringValue())) { - if (InstantMessagingModule.isSyncLearningGroups()) { + if (InstantMessagingModule.isSyncGroups()) { long start = System.currentTimeMillis(); log.info("Start synching learning groups with IM"); boolean result = im.synchronizeBusinessGroupsWithIMServer(); diff --git a/src/main/java/org/olat/instantMessaging/InstantMessagingModule.java b/src/main/java/org/olat/instantMessaging/InstantMessagingModule.java index 192e442376b..5f57f6c352d 100644 --- a/src/main/java/org/olat/instantMessaging/InstantMessagingModule.java +++ b/src/main/java/org/olat/instantMessaging/InstantMessagingModule.java @@ -26,16 +26,10 @@ package org.olat.instantMessaging; -import java.util.List; - import org.jivesoftware.smack.ConnectionConfiguration; import org.jivesoftware.smack.XMPPConnection; import org.olat.admin.user.delete.service.UserDeletionManager; -import org.olat.basesecurity.Authentication; -import org.olat.basesecurity.BaseSecurity; -import org.olat.basesecurity.BaseSecurityManager; import org.olat.core.commons.persistence.DB; -import org.olat.core.commons.persistence.DBFactory; import org.olat.core.configuration.Destroyable; import org.olat.core.configuration.Initializable; import org.olat.core.gui.control.Event; @@ -44,7 +38,6 @@ import org.olat.core.logging.OLog; import org.olat.core.logging.Tracing; import org.olat.core.util.event.FrameworkStartupEventChannel; import org.olat.core.util.event.GenericEventListener; -import org.olat.properties.Property; import org.olat.properties.PropertyManager; import org.olat.user.UserDataDeletable; import org.springframework.beans.factory.annotation.Autowired; @@ -66,12 +59,10 @@ public class InstantMessagingModule implements Initializable, Destroyable, UserD private static XMPPConnection adminConnection; //FIXME: used for legacy access private static InstantMessaging instantMessaingStatic; - private IMConfig config; private static boolean enabled = false; - private static final String CONFIG_SYNCED_BUDDY_GROUPS = "issynced"; //fxdiff: FXOLAT-219 decrease the load for synching groups public static final String CONFIG_SYNCED_LEARNING_GROUPS = "syncedlearninggroups"; - OLog log = Tracing.createLoggerFor(this.getClass()); + private static final OLog log = Tracing.createLoggerFor(InstantMessagingModule.class); @Autowired private PropertyManager propertyManager; @Autowired @@ -112,43 +103,11 @@ public class InstantMessagingModule implements Initializable, Destroyable, UserD */ @Autowired(required=true) public void setIMConfig(IMConfig config) { - this.config = config; enabled = config.isEnabled(); } - /** - * @see org.olat.core.configuration.OLATModule#init(com.anthonyeden.lib.config.Configuration) - */ public void init() { - if (config.isEnabled()) { - - //create test accounts local and on the IM server - if (config.generateTestUsers()) checkAndCreateTestUsers(); - - // synchronizing of existing buddygroups with the instant messaging - // server - // if done we set a property (it gets only done once, to reactivate delete - // entry in table o_property) - /** - * delete from o_property where name='org.olat.instantMessaging.InstantMessagingModule::syncedbuddygroups'; - */ - - List<Property> props = propertyManager.findProperties(null, null, null, "classConfig", createPropertyName(this.getClass(), CONFIG_SYNCED_BUDDY_GROUPS)); - if (props.size() == 0) { - - if (config.isSyncPersonalGroups()) { - instantMessaging.synchronizeBusinessGroupsWithIMServer(); - } - Property property = propertyManager.createPropertyInstance(null, null, null, "classConfig", createPropertyName(this.getClass(), CONFIG_SYNCED_BUDDY_GROUPS), null, null, Boolean.toString(true), null); - propertyManager.saveProperty(property); - } - - // Cleanup, otherwise this subjects will have problems in normal OLAT - // operation - DBFactory.getInstance().intermediateCommit(); - - }// end if enabled - + //synched moved to the job } /** @@ -159,54 +118,10 @@ public class InstantMessagingModule implements Initializable, Destroyable, UserD */ //fxdiff: FXOLAT-219 decrease the load for synching groups - public static String createPropertyName(Class clazz, String configurationName) { - return clazz.getName() + "::" + configurationName; + public static String createPropertyName(Class<?> clazz, String configurationName) { + return clazz.getName() + "::" + configurationName; } - - - - /** - * if enabled in the configuration some testusers for IM are created in the - * database. It has nothing to do with accounts on the jabber server itself. - */ - private void checkAndCreateTestUsers() { - Identity identity; - Authentication auth; - BaseSecurity securityManager = BaseSecurityManager.getInstance(); - identity = securityManager.findIdentityByName("author"); - auth = BaseSecurityManager.getInstance().findAuthentication(identity, ClientManager.PROVIDER_INSTANT_MESSAGING); - if (auth == null) { // create new authentication for provider - BaseSecurityManager.getInstance().createAndPersistAuthentication(identity, ClientManager.PROVIDER_INSTANT_MESSAGING, identity.getName(), - "test"); - instantMessaging.createAccount("author", "test", "Aurich Throw", "author@olat-newinstallation.org"); - } - - identity = securityManager.findIdentityByName("administrator"); - auth = BaseSecurityManager.getInstance().findAuthentication(identity, ClientManager.PROVIDER_INSTANT_MESSAGING); - if (auth == null) { // create new authentication for provider - BaseSecurityManager.getInstance().createAndPersistAuthentication(identity, ClientManager.PROVIDER_INSTANT_MESSAGING, identity.getName(), - "olat"); - instantMessaging.createAccount("administrator", "olat", "Administrator", "administrator@olat-newinstallation.org"); - } - - identity = securityManager.findIdentityByName("learner"); - auth = BaseSecurityManager.getInstance().findAuthentication(identity, ClientManager.PROVIDER_INSTANT_MESSAGING); - if (auth == null) { // create new authentication for provider - BaseSecurityManager.getInstance().createAndPersistAuthentication(identity, ClientManager.PROVIDER_INSTANT_MESSAGING, identity.getName(), - "test"); - instantMessaging.createAccount("learner", "test", "Leise Arnerich", "learner@olat-newinstallation.org"); - } - - identity = securityManager.findIdentityByName("test"); - auth = BaseSecurityManager.getInstance().findAuthentication(identity, ClientManager.PROVIDER_INSTANT_MESSAGING); - if (auth == null) { // create new authentication for provider - BaseSecurityManager.getInstance().createAndPersistAuthentication(identity, ClientManager.PROVIDER_INSTANT_MESSAGING, identity.getName(), - "test"); - instantMessaging.createAccount("test", "test", "Thomas Est", "test@olat-newinstallation.org"); - } - } - /** * @see org.olat.core.configuration.OLATModule#destroy() */ @@ -286,8 +201,10 @@ public class InstantMessagingModule implements Initializable, Destroyable, UserD } - public static boolean isSyncLearningGroups() { - return instantMessaingStatic.getConfig().isEnabled() && instantMessaingStatic.getConfig().isSyncLearningGroups(); + public static boolean isSyncGroups() { + return instantMessaingStatic.getConfig().isEnabled() + && (IMConfigSync.allGroups.equals(instantMessaingStatic.getConfig().getSyncGroupsConfig()) + || IMConfigSync.perConfig.equals(instantMessaingStatic.getConfig().getSyncGroupsConfig())); } @Override diff --git a/src/main/java/org/olat/instantMessaging/SmackInstantMessagingImpl.java b/src/main/java/org/olat/instantMessaging/SmackInstantMessagingImpl.java index 121c42caa5e..1f31beff371 100644 --- a/src/main/java/org/olat/instantMessaging/SmackInstantMessagingImpl.java +++ b/src/main/java/org/olat/instantMessaging/SmackInstantMessagingImpl.java @@ -39,6 +39,8 @@ import org.olat.basesecurity.BaseSecurity; import org.olat.basesecurity.BaseSecurityManager; import org.olat.basesecurity.IdentityShort; import org.olat.basesecurity.SecurityGroup; +import org.olat.collaboration.CollaborationTools; +import org.olat.collaboration.CollaborationToolsFactory; import org.olat.core.commons.persistence.DBFactory; import org.olat.core.gui.UserRequest; import org.olat.core.gui.control.Controller; @@ -289,7 +291,7 @@ public class SmackInstantMessagingImpl extends LogDelegator implements InstantMe } //fxdiff: FXOLAT-219 decrease the load for synching groups - private boolean synchonizeBuddyRoster(BusinessGroup group, Set<Long> checkedIdentities) { + private boolean synchonizeRoster(BusinessGroup group, Set<Long> checkedIdentities) { BaseSecurity securityManager = BaseSecurityManager.getInstance(); List<SecurityGroup> secGroups = new ArrayList<SecurityGroup>(); secGroups.add(group.getOwnerGroup()); @@ -329,6 +331,14 @@ public class SmackInstantMessagingImpl extends LogDelegator implements InstantMe return true; } + private boolean isChatEnabled(BusinessGroup group) { + CollaborationTools tools = CollaborationToolsFactory.getInstance().getOrCreateCollaborationTools(group); + if(tools == null) { + return false; + } + return tools.isToolEnabled(CollaborationTools.TOOL_CHAT); + } + /** * * @see org.olat.instantMessaging.InstantMessaging#synchronizeLearningGroupsWithIMServer() @@ -341,7 +351,7 @@ public class SmackInstantMessagingImpl extends LogDelegator implements InstantMe } logInfo("Starting synchronisation of LearningGroups with IM server"); long start = System.currentTimeMillis(); - boolean syncLearn = InstantMessagingModule.getAdapter().getConfig().isSyncLearningGroups(); + IMConfigSync syncGroups = InstantMessagingModule.getAdapter().getConfig().getSyncGroupsConfig(); int counter = 0; int GROUP_BATCH_SIZE = 50; @@ -351,12 +361,12 @@ public class SmackInstantMessagingImpl extends LogDelegator implements InstantMe do { groups = businessGroupService.findBusinessGroups(params, null, counter, GROUP_BATCH_SIZE); for (BusinessGroup group:groups) { - if (!syncLearn) { + if (syncGroups == IMConfigSync.never || (syncGroups == IMConfigSync.perConfig && !isChatEnabled(group))) { String groupID = InstantMessagingModule.getAdapter().createChatRoomString(group); if (deleteRosterGroup(groupID)) { logInfo("deleted unwanted group: "+group.getResourceableTypeName()+" "+groupID, null); } - } else if (!synchonizeBuddyRoster(group, checkedIdentities)) { + } else if (!synchonizeRoster(group, checkedIdentities)) { logError("couldn't sync group: "+group.getResourceableTypeName(), null); } if (counter++ % 6 == 0) { diff --git a/src/main/java/org/olat/instantMessaging/_spring/instantMessagingContext.xml b/src/main/java/org/olat/instantMessaging/_spring/instantMessagingContext.xml index b28fa98e02c..35929316a69 100644 --- a/src/main/java/org/olat/instantMessaging/_spring/instantMessagingContext.xml +++ b/src/main/java/org/olat/instantMessaging/_spring/instantMessagingContext.xml @@ -91,7 +91,6 @@ <property name="servername" value="${instantMessaging.server.name}" /> <property name="nodeId" value="${node.id}" /> <property name="multipleInstances" value="${instantMessaging.multipleInstances}"/> - <property name="generateTestUsers" value="${instantMessaging.generateTestUsers}" /> <property name="adminName" value="${instantMessaging.admin.username}" /> <property name="adminPassword" value="${instantMessaging.admin.password}" /> <property name="replaceStringForEmailAt" value="${instantMessaging.replaceStringForEmailAt}" /> @@ -104,10 +103,8 @@ <property name="idlePolltime" value="5000" /> <!-- polling intervall while chatting --> <property name="chatPolltime" value="2000" /> - <!-- synchonisation of olat group as buddy group on IM server. Runs only once --> - <property name="syncPersonalGroups" value="${instantMessaging.sync.personal.groups}" /> - <!-- synchonisation of olat learning group as buddy group on IM server. Runs only once --> - <property name="syncLearningGroups" value="${instantMessaging.sync.learning.groups}" /> + <!-- synchonisation of groups on IM server. --> + <property name="syncGroups" value="${instantMessaging.sync.groups}" /> <property name="packetReplyTimeout" value="${instantMessaging.packetReplyTimeout}" /> </bean> diff --git a/src/main/java/org/olat/modules/fo/restapi/MyForumsWebService.java b/src/main/java/org/olat/modules/fo/restapi/MyForumsWebService.java index 799b6f9ae2e..ea2a7363010 100644 --- a/src/main/java/org/olat/modules/fo/restapi/MyForumsWebService.java +++ b/src/main/java/org/olat/modules/fo/restapi/MyForumsWebService.java @@ -72,7 +72,6 @@ import org.olat.repository.RepositoryManager; import org.olat.repository.SearchRepositoryEntryParameters; import org.olat.resource.accesscontrol.ACService; import org.olat.resource.accesscontrol.AccessResult; -import org.olat.resource.accesscontrol.manager.ACFrontendManager; import org.olat.restapi.group.LearningGroupWebService; /** @@ -187,7 +186,7 @@ public class MyForumsWebService { final List<ForumVO> forumVOs = new ArrayList<ForumVO>(); RepositoryManager rm = RepositoryManager.getInstance(); - ACService acManager = (ACFrontendManager)CoreSpringFactory.getImpl(ACService.class); + ACService acManager = CoreSpringFactory.getImpl(ACService.class); SearchRepositoryEntryParameters repoParams = new SearchRepositoryEntryParameters(retrievedUser, roles, "CourseModule"); repoParams.setOnlyExplicitMember(true); List<RepositoryEntry> entries = rm.genericANDQueryWithRolesRestriction(repoParams, 0, -1, true); diff --git a/src/main/resources/serviceconfig/olat.properties b/src/main/resources/serviceconfig/olat.properties index 53b4393d85b..eb035c71705 100644 --- a/src/main/resources/serviceconfig/olat.properties +++ b/src/main/resources/serviceconfig/olat.properties @@ -440,17 +440,12 @@ instantMessaging.multipleInstances=false # when using multiple OLAT instances if you use email addresses as OLAT # usernames then the '@' must be replaced ! instantMessaging.replaceStringForEmailAt=_at_ -# only required for testing/debugging purposes -instantMessaging.generateTestUsers=false # an "admin" account must be present, do not change this username! instantMessaging.admin.username=admin instantMessaging.admin.password=admin -#if true all personal groups are synchronized with the im server -instantMessaging.sync.personal.groups=true -#if true all learning groups (all groups from all courses!) are synchronized with the im server. -#ATTENTION: On a server with many courses and groups this can generate thousand of groups and therefore -#generete millions of presence messages. Check openfire reguarly if set to true! -instantMessaging.sync.learning.groups=true +#if true all groups are synchronized with the im server +instantMessaging.sync.groups=true +instantMessaging.sync.groups.values=true,groupconfig,false #FXOLAT-219 The delay instantMessaging.sync.learning.groups.start.delay=15000 #Default in Smack is 5000 so set to that here diff --git a/src/test/java/org/olat/instantMessaging/_spring/instantMessagingTestContext.xml b/src/test/java/org/olat/instantMessaging/_spring/instantMessagingTestContext.xml index 258df1861b0..91ec458ae4a 100644 --- a/src/test/java/org/olat/instantMessaging/_spring/instantMessagingTestContext.xml +++ b/src/test/java/org/olat/instantMessaging/_spring/instantMessagingTestContext.xml @@ -87,7 +87,6 @@ <property name="servername" value="${instantMessaging.server.name}" /> <property name="nodeId" value="${node.id}" /> <property name="multipleInstances" value="${instantMessaging.multipleInstances}"/> - <property name="generateTestUsers" value="${instantMessaging.generateTestUsers}" /> <property name="adminName" value="${instantMessaging.admin.username}" /> <property name="adminPassword" value="${instantMessaging.admin.password}" /> <property name="replaceStringForEmailAt" value="${instantMessaging.replaceStringForEmailAt}" /> @@ -98,10 +97,8 @@ <property name="idlePolltime" value="15000" /> <!-- polling intervall while chatting --> <property name="chatPolltime" value="2500" /> - <!-- synchonisation of olat group as buddy group on IM server. Runs only once --> - <property name="syncPersonalGroups" value="${instantMessaging.sync.personal.groups}" /> - <!-- synchonisation of olat learning group as buddy group on IM server. Runs only once --> - <property name="syncLearningGroups" value="${instantMessaging.sync.learning.groups}" /> + <!-- synchonisation of groups on IM server. --> + <property name="syncGroups" value="${instantMessaging.sync.groups}" /> </bean> -- GitLab