From e40def72a4139fb99cf18f608d4d0039ef97ab4a Mon Sep 17 00:00:00 2001
From: Richard Alam <ritzalam@gmail.com>
Date: Fri, 6 Dec 2019 13:46:02 -0800
Subject: [PATCH]  - enforce only mic settings when disabling mic

---
 .../main/scala/org/bigbluebutton/LockSettingsUtil.scala    | 2 +-
 .../apps/users/ChangeLockSettingsInMeetingCmdMsgHdlr.scala | 7 ++++++-
 2 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/akka-bbb-apps/src/main/scala/org/bigbluebutton/LockSettingsUtil.scala b/akka-bbb-apps/src/main/scala/org/bigbluebutton/LockSettingsUtil.scala
index aea42a2fb4..600e03fbfe 100755
--- a/akka-bbb-apps/src/main/scala/org/bigbluebutton/LockSettingsUtil.scala
+++ b/akka-bbb-apps/src/main/scala/org/bigbluebutton/LockSettingsUtil.scala
@@ -22,7 +22,7 @@ object LockSettingsUtil {
   private def applyMutingOfUsers(disableMic: Boolean, liveMeeting: LiveMeeting, outGW: OutMsgRouter): Unit = {
     VoiceUsers.findAll(liveMeeting.voiceUsers) foreach { vu =>
       Users2x.findWithIntId(liveMeeting.users2x, vu.intId).foreach { user =>
-        if (user.role == Roles.VIEWER_ROLE && !vu.listenOnly) {
+        if (user.role == Roles.VIEWER_ROLE && !vu.listenOnly && !user.locked) {
           // Apply lock setting to users who are not listen only. (ralam dec 6, 2019)
           muteUserInVoiceConf(liveMeeting, outGW, vu, disableMic)
         }
diff --git a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/users/ChangeLockSettingsInMeetingCmdMsgHdlr.scala b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/users/ChangeLockSettingsInMeetingCmdMsgHdlr.scala
index c0de4bea16..6fd630e20f 100755
--- a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/users/ChangeLockSettingsInMeetingCmdMsgHdlr.scala
+++ b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/users/ChangeLockSettingsInMeetingCmdMsgHdlr.scala
@@ -35,9 +35,14 @@ trait ChangeLockSettingsInMeetingCmdMsgHdlr extends RightsManagementTrait {
       if (!MeetingStatus2x.permissionsEqual(liveMeeting.status, settings) || !MeetingStatus2x.permisionsInitialized(liveMeeting.status)) {
         MeetingStatus2x.initializePermissions(liveMeeting.status)
 
+        val oldPermissions = MeetingStatus2x.getPermissions(liveMeeting.status)
+
         MeetingStatus2x.setPermissions(liveMeeting.status, settings)
 
-        LockSettingsUtil.enforceLockSettingsForAllVoiceUsers(liveMeeting, outGW)
+        if (!oldPermissions.disableMic && settings.disableMic) {
+          // Apply lock settings when disableMic from false to true.
+          LockSettingsUtil.enforceLockSettingsForAllVoiceUsers(liveMeeting, outGW)
+        }
 
         val routing = Routing.addMsgToClientRouting(
           MessageTypes.BROADCAST_TO_MEETING,
-- 
GitLab