From 6a66a9fe01eec1097468ede60ba11f765dd675fe Mon Sep 17 00:00:00 2001
From: Richard Alam <ritzalam@gmail.com>
Date: Wed, 13 Dec 2017 12:15:18 -0800
Subject: [PATCH]  - add create breakout rooms request to whitelist  - use
 current presentation and page of main presentation window as default
 presentation for breakout rooms

---
 .../CreateBreakoutRoomsCmdMsgHdlr.scala       | 28 +++++++++++++++----
 .../client/meeting/AllowedMessageNames.scala  |  4 ++-
 2 files changed, 26 insertions(+), 6 deletions(-)

diff --git a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/breakout/CreateBreakoutRoomsCmdMsgHdlr.scala b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/breakout/CreateBreakoutRoomsCmdMsgHdlr.scala
index 689685fc84..dd6307fe0d 100755
--- a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/breakout/CreateBreakoutRoomsCmdMsgHdlr.scala
+++ b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/breakout/CreateBreakoutRoomsCmdMsgHdlr.scala
@@ -35,8 +35,8 @@ trait CreateBreakoutRoomsCmdMsgHdlr extends RightsManagementTrait {
 
   def processRequest(msg: CreateBreakoutRoomsCmdMsg, state: MeetingState2x): MeetingState2x = {
 
-    val presId = getPresentationId
-    val presSlide = getPresentationSlide
+    val presId = getPresentationId(state)
+    val presSlide = getPresentationSlide(state)
     val parentId = liveMeeting.props.meetingProp.intId
     var rooms = new collection.immutable.HashMap[String, BreakoutRoom2x]
 
@@ -80,13 +80,31 @@ trait CreateBreakoutRoomsCmdMsgHdlr extends RightsManagementTrait {
     BbbCommonEnvCoreMsg(envelope, event)
   }
 
-  def getPresentationId: String = {
+  def getPresentationId(state: MeetingState2x): String = {
     // in very rare cases the presentation conversion generates an error, what should we do?
     // those cases where default.pdf is deleted from the whiteboard
-    if (!liveMeeting.presModel.getCurrentPresentation().isEmpty) liveMeeting.presModel.getCurrentPresentation().get.id else "blank"
+    var currentPresentation = "blank"
+    for {
+      defaultPod <- state.presentationPodManager.getDefaultPod()
+      curPres <- defaultPod.getCurrentPresentation()
+    } yield {
+      currentPresentation = curPres.id
+    }
+
+    currentPresentation
   }
 
-  def getPresentationSlide: Int = {
+  def getPresentationSlide(state: MeetingState2x): Int = {
     if (!liveMeeting.presModel.getCurrentPage().isEmpty) liveMeeting.presModel.getCurrentPage().get.num else 0
+    var currentSlide = 0
+    for {
+      defaultPod <- state.presentationPodManager.getDefaultPod()
+      curPres <- defaultPod.getCurrentPresentation()
+      curPage <- curPres.getCurrentPage(curPres)
+    } yield {
+      currentSlide = curPage.num
+    }
+
+    currentSlide
   }
 }
diff --git a/bbb-apps-common/src/main/scala/org/bigbluebutton/client/meeting/AllowedMessageNames.scala b/bbb-apps-common/src/main/scala/org/bigbluebutton/client/meeting/AllowedMessageNames.scala
index c616b1f3dd..96c0f90e80 100755
--- a/bbb-apps-common/src/main/scala/org/bigbluebutton/client/meeting/AllowedMessageNames.scala
+++ b/bbb-apps-common/src/main/scala/org/bigbluebutton/client/meeting/AllowedMessageNames.scala
@@ -25,5 +25,7 @@ object AllowedMessageNames {
       // Shared Notes Messages
       "GetSharedNotesPubMsg","CreateSharedNoteReqMsg","DestroySharedNoteReqMsg","UpdateSharedNoteReqMsg","SyncSharedNotePubMsg","ClearSharedNotePubMsg",
       // Layout Messages
-      "GetCurrentLayoutReqMsg","BroadcastLayoutMsg")
+      "GetCurrentLayoutReqMsg","BroadcastLayoutMsg",
+    // Breakout
+      "RequestBreakoutJoinURLReqMsg")
 }
\ No newline at end of file
-- 
GitLab