You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by so...@apache.org on 2020/10/13 17:06:46 UTC
[openmeetings] branch master updated: [OPENMEETINGS-2465] meeting
room is available few minutes before start for OM internal users
This is an automated email from the ASF dual-hosted git repository.
solomax pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/openmeetings.git
The following commit(s) were added to refs/heads/master by this push:
new af35377 [OPENMEETINGS-2465] meeting room is available few minutes before start for OM internal users
af35377 is described below
commit af35377abfe90e2e682f2bf2eca166bdbb058e03
Author: Maxim Solodovnik <so...@gmail.com>
AuthorDate: Wed Oct 14 00:06:31 2020 +0700
[OPENMEETINGS-2465] meeting room is available few minutes before start for OM internal users
---
.../db/dao/basic/ConfigurationDao.java | 58 ++++++----------------
.../db/entity/calendar/Appointment.java | 5 ++
.../apache/openmeetings/db/entity/user/User.java | 6 ++-
.../installation/ImportInitvalues.java | 8 ++-
.../service/calendar/AppointmentLogic.java | 8 +--
.../service/room/InvitationManager.java | 13 ++---
.../openmeetings/util/OpenmeetingsVariables.java | 20 +++++++-
.../apache/openmeetings/web/room/RoomPanel.java | 3 +-
8 files changed, 61 insertions(+), 60 deletions(-)
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/basic/ConfigurationDao.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/basic/ConfigurationDao.java
index 273ce5f..3561fdb 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/basic/ConfigurationDao.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/basic/ConfigurationDao.java
@@ -287,19 +287,11 @@ public class ConfigurationDao implements IDataProviderDao<Configuration> {
reloadRestAllowOrigin();
break;
case CONFIG_LOGIN_MIN_LENGTH:
- reloadLoginMinLength();
- break;
case CONFIG_PASS_MIN_LENGTH:
- reloadPasswdMinLength();
- break;
case CONFIG_PASS_CHECK_UPPER:
- reloadPwdCheckUpper();
- break;
case CONFIG_PASS_CHECK_DIGIT:
- reloadPwdCheckDigit();
- break;
case CONFIG_PASS_CHECK_SPECIAL:
- reloadPwdCheckSpecial();
+ reloadLoginPassword();
break;
case CONFIG_DEFAULT_GROUP_ID:
reloadDefaultGroup();
@@ -317,13 +309,9 @@ public class ConfigurationDao implements IDataProviderDao<Configuration> {
reloadChatSendOnEnter();
break;
case CONFIG_REGISTER_FRONTEND:
- reloadAllowRegisterFront();
- break;
case CONFIG_REGISTER_SOAP:
- reloadAllowRegisterSoap();
- break;
case CONFIG_REGISTER_OAUTH:
- reloadAllowRegisterOauth();
+ reloadRegister();
break;
case CONFIG_EMAIL_VERIFICATION:
reloadSendVerificationEmail();
@@ -359,6 +347,10 @@ public class ConfigurationDao implements IDataProviderDao<Configuration> {
case CONFIG_SMTP_TIMEOUT:
reloadMailSettings();
break;
+ case CONFIG_APPOINTMENT_REMINDER_MINUTES:
+ case CONFIG_APPOINTMENT_PRE_START_MINUTES:
+ reloadAppointmentSettings();
+ break;
}
return entity;
}
@@ -430,23 +422,11 @@ public class ConfigurationDao implements IDataProviderDao<Configuration> {
setRestAllowOrigin(getString(CONFIG_REST_ALLOW_ORIGIN, null));
}
- private void reloadLoginMinLength() {
+ private void reloadLoginPassword() {
setMinLoginLength(getInt(CONFIG_LOGIN_MIN_LENGTH, USER_LOGIN_MINIMUM_LENGTH));
- }
-
- private void reloadPasswdMinLength() {
setMinPasswdLength(getInt(CONFIG_LOGIN_MIN_LENGTH, USER_PASSWORD_MINIMUM_LENGTH));
- }
-
- private void reloadPwdCheckUpper() {
setPwdCheckUpper(getBool(CONFIG_PASS_CHECK_UPPER, true));
- }
-
- private void reloadPwdCheckDigit() {
setPwdCheckDigit(getBool(CONFIG_PASS_CHECK_DIGIT, true));
- }
-
- private void reloadPwdCheckSpecial() {
setPwdCheckSpecial(getBool(CONFIG_PASS_CHECK_SPECIAL, true));
}
@@ -470,15 +450,9 @@ public class ConfigurationDao implements IDataProviderDao<Configuration> {
setChatSendOnEnter(getBool(CONFIG_CHAT_SEND_ON_ENTER, false));
}
- private void reloadAllowRegisterFront() {
+ private void reloadRegister() {
setAllowRegisterFrontend(getBool(CONFIG_REGISTER_FRONTEND, false));
- }
-
- private void reloadAllowRegisterSoap() {
setAllowRegisterSoap(getBool(CONFIG_REGISTER_SOAP, false));
- }
-
- private void reloadAllowRegisterOauth() {
setAllowRegisterOauth(getBool(CONFIG_REGISTER_OAUTH, false));
}
@@ -511,6 +485,11 @@ public class ConfigurationDao implements IDataProviderDao<Configuration> {
setMailAddReplyTo(getBool(CONFIG_REPLY_TO_ORGANIZER, true));
}
+ private void reloadAppointmentSettings() {
+ setAppointmentPreStartMinutes(getInt(CONFIG_APPOINTMENT_PRE_START_MINUTES, 5));
+ setAppointmentReminderMinutes(getInt(CONFIG_APPOINTMENT_REMINDER_MINUTES, 15));
+ }
+
public void reinit() {
reloadMaxUpload();
reloadCrypt();
@@ -524,24 +503,19 @@ public class ConfigurationDao implements IDataProviderDao<Configuration> {
reloadTimezone();
reloadRestAllowOrigin();
reloadRoomSettings();
- reloadLoginMinLength();
- reloadPasswdMinLength();
- reloadPwdCheckUpper();
- reloadPwdCheckDigit();
- reloadPwdCheckSpecial();
+ reloadLoginPassword();
reloadDefaultGroup();
reloadSipContext();
reloadFnameMinLength();
reloadLnameMinLength();
reloadChatSendOnEnter();
- reloadAllowRegisterFront();
- reloadAllowRegisterSoap();
- reloadAllowRegisterOauth();
+ reloadRegister();
reloadSendVerificationEmail();
reloadSendRegisterEmail();
reloadDisplayNameEditable();
reloadMyRoomsEnabled();
reloadMailSettings();
+ reloadAppointmentSettings();
updateCsp();
}
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/calendar/Appointment.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/calendar/Appointment.java
index e605cc0..28572bd 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/calendar/Appointment.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/calendar/Appointment.java
@@ -19,6 +19,7 @@
package org.apache.openmeetings.db.entity.calendar;
import static org.apache.openmeetings.db.bind.Constants.APPOINTMENT_NODE;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.getAppointmentPreStartMinutes;
import java.util.Calendar;
import java.util.Date;
@@ -331,6 +332,10 @@ public class Appointment extends HistoricalEntity {
return start;
}
+ public static Date allowedStart(Date start) {
+ return new Date(start.getTime() - (getAppointmentPreStartMinutes() * 60 * 1000));
+ }
+
public Calendar startCalendar(TimeZone timeZone) {
Calendar cal = Calendar.getInstance(timeZone);
cal.setTime(start);
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/User.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/User.java
index 05388a3..e225a32 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/User.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/User.java
@@ -409,7 +409,9 @@ public class User extends HistoricalEntity {
}
public User setDisplayName(String displayName) {
- if (!Strings.isEmpty(displayName)) {
+ if (Strings.isEmpty(displayName)) {
+ resetDisplayName();
+ } else {
this.displayName = escapeMarkup(displayName).toString();
}
return this;
@@ -673,7 +675,7 @@ public class User extends HistoricalEntity {
if (!Strings.isEmpty(last)) {
sb.append(delim).append(last);
}
- if (Strings.isEmpty(sb)) {
+ if (id != null && Strings.isEmpty(sb)) {
if (Type.CONTACT == type && address != null && !Strings.isEmpty(address.getEmail())) {
sb.append(address.getEmail());
} else {
diff --git a/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java b/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java
index 60fe1cf..718078e 100644
--- a/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java
+++ b/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java
@@ -25,6 +25,7 @@ import static org.apache.openmeetings.db.dto.user.OAuthUser.PARAM_LNAME;
import static org.apache.openmeetings.db.dto.user.OAuthUser.PARAM_LOGIN;
import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_APPLICATION_BASE_URL;
import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_APPLICATION_NAME;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_APPOINTMENT_PRE_START_MINUTES;
import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_APPOINTMENT_REMINDER_MINUTES;
import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_AUTO_OPEN_SHARING;
import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_CALENDAR_ROOM_CAPACITY;
@@ -108,9 +109,10 @@ import static org.apache.openmeetings.util.OpenmeetingsVariables.DEFAULT_CSP_DAT
import static org.apache.openmeetings.util.OpenmeetingsVariables.DEFAULT_CSP_FONT;
import static org.apache.openmeetings.util.OpenmeetingsVariables.DEFAULT_CSP_STYLE;
import static org.apache.openmeetings.util.OpenmeetingsVariables.DEFAULT_MAX_UPLOAD_SIZE;
-import static org.apache.openmeetings.util.OpenmeetingsVariables.DEFAULT_MINUTES_REMINDER_SEND;
import static org.apache.openmeetings.util.OpenmeetingsVariables.USER_LOGIN_MINIMUM_LENGTH;
import static org.apache.openmeetings.util.OpenmeetingsVariables.USER_PASSWORD_MINIMUM_LENGTH;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.getAppointmentPreStartMinutes;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.getAppointmentReminderMinutes;
import static org.apache.openmeetings.util.OpenmeetingsVariables.getAudioBitrate;
import static org.apache.openmeetings.util.OpenmeetingsVariables.getAudioRate;
import static org.apache.openmeetings.util.OpenmeetingsVariables.getDefaultGroup;
@@ -307,7 +309,7 @@ public class ImportInitvalues {
addCfg(list, CONFIG_MAX_UPLOAD_SIZE, String.valueOf(DEFAULT_MAX_UPLOAD_SIZE), Configuration.Type.NUMBER,
"Maximum size of upload file (bytes)", VER_1_8);
- addCfg(list, CONFIG_APPOINTMENT_REMINDER_MINUTES, String.valueOf(DEFAULT_MINUTES_REMINDER_SEND), Configuration.Type.NUMBER,
+ addCfg(list, CONFIG_APPOINTMENT_REMINDER_MINUTES, String.valueOf(getAppointmentReminderMinutes()), Configuration.Type.NUMBER,
"The number of minutes before reminder emails are send. Set to 0 to disable reminder emails", VER_1_9);
addCfg(list, CONFIG_LOGIN_MIN_LENGTH, String.valueOf(USER_LOGIN_MINIMUM_LENGTH), Configuration.Type.NUMBER,
@@ -391,6 +393,8 @@ public class ImportInitvalues {
addCfg(list, CONFIG_PASS_CHECK_UPPER, String.valueOf(true), Configuration.Type.BOOL, "Whether or not Password MUST contain uppercase characters", VER_5_0_1);
addCfg(list, CONFIG_PASS_CHECK_DIGIT, String.valueOf(true), Configuration.Type.BOOL, "Whether or not Password MUST contain numeric", VER_5_0_1);
addCfg(list, CONFIG_PASS_CHECK_SPECIAL, String.valueOf(true), Configuration.Type.BOOL, "Whether or not Password MUST contain special character", VER_5_0_1);
+ addCfg(list, CONFIG_APPOINTMENT_PRE_START_MINUTES, String.valueOf(getAppointmentPreStartMinutes()), Configuration.Type.NUMBER
+ , "How many minutes before the start the room should be open (default: " + getAppointmentPreStartMinutes() + ")", VER_5_0_1);
return list;
}
public void loadConfiguration(InstallationConfig cfg) {
diff --git a/openmeetings-service/src/main/java/org/apache/openmeetings/service/calendar/AppointmentLogic.java b/openmeetings-service/src/main/java/org/apache/openmeetings/service/calendar/AppointmentLogic.java
index ba872e4..5d31d5a 100644
--- a/openmeetings-service/src/main/java/org/apache/openmeetings/service/calendar/AppointmentLogic.java
+++ b/openmeetings-service/src/main/java/org/apache/openmeetings/service/calendar/AppointmentLogic.java
@@ -19,8 +19,7 @@
package org.apache.openmeetings.service.calendar;
import static org.apache.openmeetings.db.util.TimezoneUtil.getTimeZone;
-import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_APPOINTMENT_REMINDER_MINUTES;
-import static org.apache.openmeetings.util.OpenmeetingsVariables.DEFAULT_MINUTES_REMINDER_SEND;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.getAppointmentReminderMinutes;
import static org.apache.openmeetings.util.OpenmeetingsVariables.getBaseUrl;
import java.util.Calendar;
@@ -28,7 +27,6 @@ import java.util.List;
import java.util.TimeZone;
import org.apache.openmeetings.core.notifier.NotifierService;
-import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
import org.apache.openmeetings.db.dao.calendar.AppointmentDao;
import org.apache.openmeetings.db.dao.room.InvitationDao;
import org.apache.openmeetings.db.entity.calendar.Appointment;
@@ -47,8 +45,6 @@ public class AppointmentLogic {
@Autowired
private AppointmentDao appointmentDao;
@Autowired
- private ConfigurationDao cfgDao;
- @Autowired
private InvitationDao invitationDao;
@Autowired
private NotifierService notifierService;
@@ -81,7 +77,7 @@ public class AppointmentLogic {
log.error("Error retrieving baseUrl for application");
return;
}
- int minutesReminderSend = cfgDao.getInt(CONFIG_APPOINTMENT_REMINDER_MINUTES, DEFAULT_MINUTES_REMINDER_SEND);
+ int minutesReminderSend = getAppointmentReminderMinutes();
if (minutesReminderSend == 0) {
log.warn("minutesReminderSend is 0, disabling reminder scheduler");
diff --git a/openmeetings-service/src/main/java/org/apache/openmeetings/service/room/InvitationManager.java b/openmeetings-service/src/main/java/org/apache/openmeetings/service/room/InvitationManager.java
index 4f594f3..9dde6a5 100644
--- a/openmeetings-service/src/main/java/org/apache/openmeetings/service/room/InvitationManager.java
+++ b/openmeetings-service/src/main/java/org/apache/openmeetings/service/room/InvitationManager.java
@@ -19,6 +19,7 @@
package org.apache.openmeetings.service.room;
import static java.util.UUID.randomUUID;
+import static org.apache.openmeetings.db.entity.calendar.Appointment.allowedStart;
import static org.apache.openmeetings.db.util.ApplicationHelper.ensureApplication;
import static org.apache.openmeetings.db.util.TimezoneUtil.getTimeZone;
@@ -183,8 +184,8 @@ public class InvitationManager implements IInvitationManager {
@Override
public Invitation getInvitation(Invitation inInvitation, User inveetee, Room room
- , boolean isPasswordProtected, String invitationpass, Valid valid,
- User createdBy, Long languageId, Date gmtTimeStart, Date gmtTimeEnd
+ , boolean isPasswordProtected, String invitationpass, Valid valid
+ , User createdBy, Long languageId, Date mmStart, Date mmEnd
, Appointment appointment) {
Invitation invitation = inInvitation;
@@ -204,8 +205,8 @@ public class InvitationManager implements IInvitationManager {
// valid period of Invitation
switch (valid) {
case PERIOD:
- invitation.setValidFrom(new Date(gmtTimeStart.getTime() - (5 * 60 * 1000)));
- invitation.setValidTo(gmtTimeEnd);
+ invitation.setValidFrom(allowedStart(mmStart));
+ invitation.setValidTo(mmEnd);
break;
case ENDLESS:
case ONE_TIME:
@@ -229,10 +230,10 @@ public class InvitationManager implements IInvitationManager {
@Override
public Invitation getInvitation(User inveetee, Room room, boolean isPasswordProtected, String invitationpass, Valid valid,
- User createdBy, Long languageId, Date gmtTimeStart, Date gmtTimeEnd, Appointment appointment)
+ User createdBy, Long languageId, Date mmStart, Date mmEnd, Appointment appointment)
{
Invitation i = getInvitation((Invitation)null, inveetee, room, isPasswordProtected, invitationpass, valid, createdBy
- , languageId, gmtTimeStart, gmtTimeEnd, appointment);
+ , languageId, mmStart, mmEnd, appointment);
i = invitationDao.update(i);
return i;
}
diff --git a/openmeetings-util/src/main/java/org/apache/openmeetings/util/OpenmeetingsVariables.java b/openmeetings-util/src/main/java/org/apache/openmeetings/util/OpenmeetingsVariables.java
index 5455445..0b9fc15 100644
--- a/openmeetings-util/src/main/java/org/apache/openmeetings/util/OpenmeetingsVariables.java
+++ b/openmeetings-util/src/main/java/org/apache/openmeetings/util/OpenmeetingsVariables.java
@@ -57,6 +57,7 @@ public class OpenmeetingsVariables {
public static final String CONFIG_IGNORE_BAD_SSL = "oauth2.ignore.bad.ssl";
public static final String CONFIG_REDIRECT_URL_FOR_EXTERNAL = "redirect.url.for.external.users";
public static final String CONFIG_APPOINTMENT_REMINDER_MINUTES = "number.minutes.reminder.send";
+ public static final String CONFIG_APPOINTMENT_PRE_START_MINUTES = "appointment.pre.start.minutes";
public static final String CONFIG_APPLICATION_NAME = "application.name";
public static final String CONFIG_APPLICATION_BASE_URL = "application.base.url";
public static final String CONFIG_SCREENSHARING_QUALITY = "screensharing.default.quality";
@@ -118,7 +119,6 @@ public class OpenmeetingsVariables {
public static final String DEFAULT_APP_NAME = "OpenMeetings";
public static final String DEFAULT_CONTEXT_NAME = "openmeetings";
public static final long DEFAULT_MAX_UPLOAD_SIZE = 100 * 1024 * 1024L; // 100MB
- public static final int DEFAULT_MINUTES_REMINDER_SEND = 15;
public static final String DEFAULT_BASE_URL = "http://localhost:5080/openmeetings/";
public static final String DEFAULT_SIP_CONTEXT = "rooms";
public static final String DEFAULT_CSP_FONT = "https://fonts.gstatic.com";
@@ -175,6 +175,8 @@ public class OpenmeetingsVariables {
private static int smtpConnectionTimeOut;
private static String mailFrom;
private static boolean mailAddReplyTo;
+ private static int appointmentReminderMinutes = 15;
+ private static int appointmentPreStartMinutes = 5;
private OpenmeetingsVariables() {}
@@ -582,4 +584,20 @@ public class OpenmeetingsVariables {
public static void setMailAddReplyTo(boolean addReplyTo) {
mailAddReplyTo = addReplyTo;
}
+
+ public static int getAppointmentPreStartMinutes() {
+ return appointmentPreStartMinutes;
+ }
+
+ public static void setAppointmentPreStartMinutes(int minutes) {
+ appointmentPreStartMinutes = minutes;
+ }
+
+ public static int getAppointmentReminderMinutes() {
+ return appointmentReminderMinutes;
+ }
+
+ public static void setAppointmentReminderMinutes(int minutes) {
+ appointmentReminderMinutes = minutes;
+ }
}
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
index ce40b7d..73f9049 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
@@ -21,6 +21,7 @@ package org.apache.openmeetings.web.room;
import static java.time.Duration.ZERO;
import static org.apache.openmeetings.core.remote.KurentoHandler.activityAllowed;
import static org.apache.openmeetings.core.util.ChatWebSocketHelper.ID_USER_PREFIX;
+import static org.apache.openmeetings.db.entity.calendar.Appointment.allowedStart;
import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_PDF;
import static org.apache.openmeetings.web.app.WebSession.getDateFormat;
import static org.apache.openmeetings.web.app.WebSession.getUserId;
@@ -335,7 +336,7 @@ public class RoomPanel extends BasePanel {
}
if (allowed) {
Calendar cal = WebSession.getCalendar();
- if (isOwner || cal.getTime().after(a.getStart()) && cal.getTime().before(a.getEnd())) {
+ if (isOwner || cal.getTime().after(allowedStart(a.getStart())) && cal.getTime().before(a.getEnd())) {
eventDetail = new EventDetailDialog(EVENT_DETAILS_ID, a);
} else {
allowed = false;