diff --git a/src/main/java/org/olat/basesecurity/Constants.java b/src/main/java/org/olat/basesecurity/Constants.java index 8cd0fa250b2b7722a7b8fb66cb4c13f7930a779f..f64e2e4373b487ef1a17dd5aeced673d8e603796 100644 --- a/src/main/java/org/olat/basesecurity/Constants.java +++ b/src/main/java/org/olat/basesecurity/Constants.java @@ -211,4 +211,27 @@ public class Constants { */ public static final OLATResourceable ORESOURCE_GUESTONLY = OresHelper.lookupType(BaseSecurityModule.class, "RGuestOnly"); + /** + * status of a user + * <code>USERSTATUS_ACTIVE</code> is an active user + */ + public static final Integer USERSTATUS_ACTIVE = 2; + + /** + * status of a user + * <code>USERSTATUS_NOT_DELETEABLE</code> is a not deleteable user + */ + public static final Integer USERSTATUS_NOT_DELETEABLE = 1; + + /** + * status of a user + * <code>USERSTATUS_LOGIN_DENIED</code> is a user, whose login is denied + */ + public static final Integer USERSTATUS_LOGIN_DENIED = 101; + + /** + * status of a user + * <code>USERSTATUS_DELETED</code> is a deleted user + */ + public static final Integer USERSTATUS_DELETED = 199; } \ No newline at end of file diff --git a/src/main/java/org/olat/commons/calendar/ICalFileCalendarManager.java b/src/main/java/org/olat/commons/calendar/ICalFileCalendarManager.java index 94a7b5c5b2b18f2d355de2d3ea084310f07c9cab..03e8df7a8ae5ba67f7024aedb17e9ff17ebd46b3 100644 --- a/src/main/java/org/olat/commons/calendar/ICalFileCalendarManager.java +++ b/src/main/java/org/olat/commons/calendar/ICalFileCalendarManager.java @@ -484,7 +484,7 @@ public class ICalFileCalendarManager extends BasicManager implements CalendarMan Date end = null; if (dur != null) { end = dur.getDuration().getTime(event.getStartDate().getDate()); - } else { + } else if(event.getEndDate() != null) { end = event.getEndDate().getDate(); } diff --git a/src/main/java/org/olat/commons/calendar/ui/components/FullCalendarMapper.java b/src/main/java/org/olat/commons/calendar/ui/components/FullCalendarMapper.java index 32766ed3da2d7f693f6f11b486028cb61de0dcea..b17f37067efddb8dd8a0954c0276ed8efdcd8930 100644 --- a/src/main/java/org/olat/commons/calendar/ui/components/FullCalendarMapper.java +++ b/src/main/java/org/olat/commons/calendar/ui/components/FullCalendarMapper.java @@ -138,12 +138,22 @@ public class FullCalendarMapper implements Mapper { private boolean isInRange(Date from, Date to, KalendarEvent event) { Date end = event.getEnd(); Date begin = event.getBegin(); - if(from.compareTo(begin) <= 0 && to.compareTo(end) >= 0) { - return true; - } else if(from.compareTo(begin) <= 0 && to.compareTo(begin) >= 0) { - return true; - } else if(from.compareTo(end) <= 0 && to.compareTo(end) >= 0) { - return true; + if(begin != null && end != null) { + if(from.compareTo(begin) <= 0 && to.compareTo(end) >= 0) { + return true; + } else if(from.compareTo(begin) <= 0 && to.compareTo(begin) >= 0) { + return true; + } else if(from.compareTo(end) <= 0 && to.compareTo(end) >= 0) { + return true; + } + } else if(begin != null) { + if(from.compareTo(begin) <= 0 && to.compareTo(begin) >= 0) { + return true; + } + } else if(end != null) { + if(from.compareTo(end) <= 0 && to.compareTo(end) >= 0) { + return true; + } } 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 4e5ab328cbbc0d098d493be1821a9e25a586e049..af140de1ec66c52debeb23eb95d2e9fe4733cbb4 100644 --- a/src/main/java/org/olat/group/ui/main/AbstractBusinessGroupListController.java +++ b/src/main/java/org/olat/group/ui/main/AbstractBusinessGroupListController.java @@ -75,6 +75,8 @@ import org.olat.core.util.mail.MailHelper; import org.olat.core.util.mail.MailPackage; import org.olat.core.util.mail.MailTemplate; import org.olat.core.util.resource.OresHelper; +import org.olat.core.util.vfs.Quota; +import org.olat.core.util.vfs.QuotaManager; import org.olat.group.BusinessGroup; import org.olat.group.BusinessGroupManagedFlag; import org.olat.group.BusinessGroupMembership; @@ -676,6 +678,16 @@ public abstract class AbstractBusinessGroupListController extends FormBasicContr tools.setToolEnabled(enabledTool, true); if(CollaborationTools.TOOL_FOLDER.equals(enabledTool)) { tools.saveFolderAccess(new Long(configuration.getFolderAccess())); + + Quota quota = configuration.getQuota(); + if(quota != null) { + String path = tools.getFolderRelPath(); + Quota fQuota = QuotaManager.getInstance() + .createQuota(path, quota.getQuotaKB(), quota.getUlLimitKB()); + QuotaManager.getInstance() + .setCustomQuotaKB(fQuota); + } + } else if (CollaborationTools.TOOL_CALENDAR.equals(enabledTool)) { tools.saveCalendarAccess(new Long(configuration.getCalendarAccess())); } diff --git a/src/main/java/org/olat/group/ui/wizard/BGConfigQuotaController.java b/src/main/java/org/olat/group/ui/wizard/BGConfigQuotaController.java index 6338e4c1d445e1d6d01f9af4675e4cdc622ce01b..0e198d0b62ca7f09046a9fb73c05826703d5903e 100644 --- a/src/main/java/org/olat/group/ui/wizard/BGConfigQuotaController.java +++ b/src/main/java/org/olat/group/ui/wizard/BGConfigQuotaController.java @@ -30,6 +30,7 @@ import org.olat.core.commons.modules.bc.FolderConfig; import org.olat.core.gui.UserRequest; import org.olat.core.gui.components.form.flexible.FormItemContainer; import org.olat.core.gui.components.form.flexible.elements.IntegerElement; +import org.olat.core.gui.components.form.flexible.impl.Form; import org.olat.core.gui.components.form.flexible.impl.FormBasicController; import org.olat.core.gui.control.Controller; import org.olat.core.gui.control.Event; @@ -59,6 +60,13 @@ public class BGConfigQuotaController extends FormBasicController { this.quota = quota; initForm(ureq); } + + public BGConfigQuotaController(UserRequest ureq, WindowControl wControl, Quota quota, Form rootForm) { + super(ureq, wControl, -1, null, rootForm); + setTranslator(Util.createPackageTranslator(QuotaForm.class, getLocale(), getTranslator())); + this.quota = quota; + initForm(ureq); + } /** * @return Quota in KB. diff --git a/src/main/java/org/olat/group/ui/wizard/BGConfigToolsStepController.java b/src/main/java/org/olat/group/ui/wizard/BGConfigToolsStepController.java index 252557a8945660cbe02092051a02cd69e1964312..33088460288eaf29f24bb800a32f87003574fcb7 100644 --- a/src/main/java/org/olat/group/ui/wizard/BGConfigToolsStepController.java +++ b/src/main/java/org/olat/group/ui/wizard/BGConfigToolsStepController.java @@ -116,7 +116,7 @@ public class BGConfigToolsStepController extends StepFormBasicController { //add quota configuration for admin only if(ureq.getUserSession().getRoles().isOLATAdmin()) { Quota quota = quotaManager.createQuota(null, null, null); - config.quotaCtrl = new BGConfigQuotaController(ureq, getWindowControl(), quota); + config.quotaCtrl = new BGConfigQuotaController(ureq, getWindowControl(), quota, mainForm); config.configContainer.add("quota", config.quotaCtrl.getInitialFormItem()); config.quotaCtrl.getInitialFormItem().setVisible(false); } @@ -168,7 +168,9 @@ public class BGConfigToolsStepController extends StepFormBasicController { configuration.setFolderAccess(config.folderCtrl.getFolderAccess()); //only admin are allowed to configure quota if(ureq.getUserSession().getRoles().isOLATAdmin() && config.quotaCtrl != null) { - Quota quota = quotaManager.createQuota(null, config.quotaCtrl.getQuotaKB(), config.quotaCtrl.getULLimit()); + Long quotaKB = config.quotaCtrl.getQuotaKB(); + Long ulLimit = config.quotaCtrl.getULLimit(); + Quota quota = quotaManager.createQuota(null, quotaKB, ulLimit); configuration.setQuota(quota); } } diff --git a/src/main/java/org/olat/repository/controllers/RepositorySearchController.java b/src/main/java/org/olat/repository/controllers/RepositorySearchController.java index 1e659691e39e7c1027de806ce99a92b8c32dceed..0633f992c57f8e31092dd9f20a65250fa29556b3 100644 --- a/src/main/java/org/olat/repository/controllers/RepositorySearchController.java +++ b/src/main/java/org/olat/repository/controllers/RepositorySearchController.java @@ -459,11 +459,16 @@ public class RepositorySearchController extends BasicController implements Activ displaySearchResults(ureq); } - private void doSearchById(Long id) { + private void doSearchById(Long id, Set<String> restrictedTypes) { RepositoryManager rm = RepositoryManager.getInstance(); RepositoryEntry entry = rm.lookupRepositoryEntry(id); List<RepositoryEntry> entries = new ArrayList<RepositoryEntry>(1); - if (entry != null) entries.add(entry); + if (entry != null) { + if(restrictedTypes == null || restrictedTypes.isEmpty() + || restrictedTypes.contains(entry.getOlatResource().getResourceableTypeName())) { + entries.add(entry); + } + } filterRepositoryEntries(entries); repoTableModel.setObjects(entries); tableCtr.modelChanged(); @@ -651,7 +656,7 @@ public class RepositorySearchController extends BasicController implements Activ } else if (source == searchForm) { // process search form events if (event == Event.DONE_EVENT) { if (searchForm.hasId()) { - doSearchById(searchForm.getId()); + doSearchById(searchForm.getId(), searchForm.getRestrictedTypes()); } else if (enableSearchforAllInSearchForm != null) { doSearchAllReferencables(urequest, null, true); } else { diff --git a/src/main/java/org/olat/restapi/system/OpenOLATStatisticsWebService.java b/src/main/java/org/olat/restapi/system/OpenOLATStatisticsWebService.java index 0b587e8ffdbd871248a4de4c0911487f33357a56..c03ad825bbfaf8b6b9eeef97d9b06b714c3bd5d5 100644 --- a/src/main/java/org/olat/restapi/system/OpenOLATStatisticsWebService.java +++ b/src/main/java/org/olat/restapi/system/OpenOLATStatisticsWebService.java @@ -31,6 +31,7 @@ import javax.ws.rs.core.Response; import org.olat.admin.sysinfo.manager.SessionStatsManager; import org.olat.admin.sysinfo.model.SessionsStats; import org.olat.basesecurity.BaseSecurity; +import org.olat.basesecurity.Constants; import org.olat.core.CoreSpringFactory; import org.olat.core.util.SessionInfo; import org.olat.core.util.UserSession; @@ -168,6 +169,8 @@ public class OpenOLATStatisticsWebService implements Sampler { BaseSecurity securityManager = CoreSpringFactory.getImpl(BaseSecurity.class); long countUsers = securityManager.countIdentitiesByPowerSearch(null, null, false, null, null, null, null, null, null, null, null); stats.setTotalUserCount(countUsers); + long countActiveUsers = securityManager.countIdentitiesByPowerSearch(null, null, false, null, null, null, null, null, null, null, Constants.USERSTATUS_ACTIVE); + stats.setActiveUserCount(countActiveUsers); BusinessGroupService bgs = CoreSpringFactory.getImpl(BusinessGroupService.class); long countGroups = bgs.countBusinessGroups(null, null); diff --git a/src/main/java/org/olat/restapi/system/vo/UserStatisticsVO.java b/src/main/java/org/olat/restapi/system/vo/UserStatisticsVO.java index a437267751345d48309f06c86ed264a962a5fad8..146cd683971d7257454e7b8fb00802a647b6eaab 100644 --- a/src/main/java/org/olat/restapi/system/vo/UserStatisticsVO.java +++ b/src/main/java/org/olat/restapi/system/vo/UserStatisticsVO.java @@ -34,6 +34,8 @@ public class UserStatisticsVO { @XmlAttribute(name="totalUserCount", required=true) private long totalUserCount; + @XmlAttribute(name="activeUserCount", required=true) + private long activeUserCount; @XmlAttribute(name="totalGroupCount", required=true) private long totalGroupCount; @@ -46,6 +48,14 @@ public class UserStatisticsVO { this.totalUserCount = totalUserCount; } + public long getActiveUserCount() { + return activeUserCount; + } + + public void setActiveUserCount(long activeUserCount) { + this.activeUserCount = activeUserCount; + } + public long getTotalGroupCount() { return totalGroupCount; } diff --git a/src/test/java/org/olat/restapi/SystemTest.java b/src/test/java/org/olat/restapi/SystemTest.java index 291c6cb82ab20de2b51245e1e60a747b3fcc5fae..71a2e3b67969d0ffeb79e31cf0db784d9ab96022 100644 --- a/src/test/java/org/olat/restapi/SystemTest.java +++ b/src/test/java/org/olat/restapi/SystemTest.java @@ -157,6 +157,7 @@ public class SystemTest extends OlatJerseyTestCase { assertNotNull(userStats); assertTrue(userStats.getTotalUserCount() > 0); assertTrue(userStats.getTotalGroupCount() >= 0); + assertTrue(userStats.getActiveUserCount() >= 0); conn.shutdown(); }