From 933b9d04effb3cb12f27f3438c4c7031f9c50d58 Mon Sep 17 00:00:00 2001 From: Richard Alam <ritzalam@gmail.com> Date: Tue, 14 Apr 2015 14:40:24 +0000 Subject: [PATCH] - make a moderator presenter when the current presenter leaves (e.g. disconnected). This way, as long as there is a moderator in the meeting, there will always be a presenter. --- .../org/bigbluebutton/core/apps/users/UsersApp.scala | 12 ++++++++++++ .../bigbluebutton/core/apps/users/UsersModel.scala | 2 +- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/bigbluebutton-apps/src/main/scala/org/bigbluebutton/core/apps/users/UsersApp.scala b/bigbluebutton-apps/src/main/scala/org/bigbluebutton/core/apps/users/UsersApp.scala index 19f0f158ee..481275a855 100755 --- a/bigbluebutton-apps/src/main/scala/org/bigbluebutton/core/apps/users/UsersApp.scala +++ b/bigbluebutton-apps/src/main/scala/org/bigbluebutton/core/apps/users/UsersApp.scala @@ -306,6 +306,18 @@ trait UsersApp { user foreach { u => logger.info("User left meeting: mid=[" + meetingID + "] uid=[" + u.userID + "]") outGW.send(new UserLeft(msg.meetingID, recorded, u)) + + if (u.presenter) { + /* The current presenter has left the meeting. Find a moderator and make + * him presenter. This way, if there is a moderator in the meeting, there + * will always be a presenter. + */ + val moderator = users.findAModerator() + moderator.foreach { mod => + logger.info("Presenter left meeting: mid=[" + meetingID + "] uid=[" + u.userID + "]. Making user=[" + mod.userID + "] presenter.") + assignNewPresenter(mod.userID, mod.name, mod.userID) + } + } } startCheckingIfWeNeedToEndVoiceConf() diff --git a/bigbluebutton-apps/src/main/scala/org/bigbluebutton/core/apps/users/UsersModel.scala b/bigbluebutton-apps/src/main/scala/org/bigbluebutton/core/apps/users/UsersModel.scala index 1353e8d296..5642ecf785 100755 --- a/bigbluebutton-apps/src/main/scala/org/bigbluebutton/core/apps/users/UsersModel.scala +++ b/bigbluebutton-apps/src/main/scala/org/bigbluebutton/core/apps/users/UsersModel.scala @@ -63,7 +63,7 @@ class UsersModel { getModerators.length } - def getLoneModerator():Option[UserVO] = { + def findAModerator():Option[UserVO] = { uservos.values find (u => u.role == MODERATOR) } -- GitLab