diff --git a/bbbeasy-backend/app/src/Actions/Rooms/Start.php b/bbbeasy-backend/app/src/Actions/Rooms/Start.php index 1faeb92a..27d0f034 100644 --- a/bbbeasy-backend/app/src/Actions/Rooms/Start.php +++ b/bbbeasy-backend/app/src/Actions/Rooms/Start.php @@ -55,7 +55,7 @@ public function beforeroute(): void $preset = new Preset(); $p = $preset->findById($room->getPresetID($room->id)['preset_id']); - $presetProcessor = new PresetProcessor(); + $presetProcessor = new PresetProcessor($this->f3); $presetData = $presetProcessor->preparePresetData($p->getMyPresetInfos($p)); if (!$presetData[General::GROUP_NAME][General::OPEN_FOR_EVERYONE] && null === $this->session->get('user')) { @@ -94,7 +94,7 @@ public function execute($f3, $params): void if ('notFound' === $getMeetingInfoResponse->getMessageKey()) { // create new meeting with the same meetingId - $presetprocessor = new PresetProcessor(); + $presetprocessor = new PresetProcessor($this->f3); $presetData = $presetprocessor->preparePresetData($p->getMyPresetInfos($p)); if ($room->getRoomInfos($room)['user_id'] === $this->session->get('user.id') || $presetData[General::GROUP_NAME][General::ANYONE_CAN_START]) { @@ -150,7 +150,7 @@ public function getMeetingInfo(string $meetingId, BigBlueButtonRequester $bbbReq public function createMeeting(string $meetingId, BigBlueButtonRequester $bbbRequester, $link, $p, $preetprocessor) { - $presetProcessor = new PresetProcessor(); + $presetProcessor = new PresetProcessor($this->f3); $createParams = new CreateMeetingParameters($meetingId, 'meeting-' . $meetingId); $createParams = $presetProcessor->toCreateMeetingParams($p, $createParams); $createParams->setModeratorPassword(DataUtils::generateRandomString()); @@ -182,9 +182,10 @@ public function createMeeting(string $meetingId, BigBlueButtonRequester $bbbRequ public function joinMeeting(string $meetingId, string $role, BigBlueButtonRequester $bbbRequester, $p, $fullname): void { $joinParams = new JoinMeetingParameters($meetingId, $fullname, $role); - $presetProcessor = new PresetProcessor(); + $presetProcessor = new PresetProcessor($this->f3); - $joinParams = $presetProcessor->toJoinParameters($p, $joinParams); + + $joinParams = $presetProcessor->toJoinParameters($p, $joinParams ); $this->logger->info( 'Meeting join request is going to redirect to the web client.', diff --git a/bbbeasy-backend/app/src/Actions/Rooms/View.php b/bbbeasy-backend/app/src/Actions/Rooms/View.php index d03c9ead..6b2602cd 100644 --- a/bbbeasy-backend/app/src/Actions/Rooms/View.php +++ b/bbbeasy-backend/app/src/Actions/Rooms/View.php @@ -46,7 +46,7 @@ public function beforeroute(): void $room = $room->getByLink($link); $preset = new Preset(); $p = $preset->findById($room->getPresetID($room->id)['preset_id']); - $presetProcessor = new PresetProcessor(); + $presetProcessor = new PresetProcessor($this->f3); $presetData = $presetProcessor->preparePresetData($p->getMyPresetInfos($p)); if (!$presetData[General::GROUP_NAME][General::OPEN_FOR_EVERYONE] && null === $this->session->get('user')) { @@ -73,7 +73,7 @@ public function show($f3, $params): void $canStart = false; $preset = new Preset(); $p = $preset->findById($room->getPresetID($room->id)['preset_id']); - $presetProcessor = new PresetProcessor(); + $presetProcessor = new PresetProcessor($this->f3); $presetData = $presetProcessor->preparePresetData($p->getMyPresetInfos($p)); if (!$meetingInfoResponse->success()) { diff --git a/bbbeasy-backend/app/src/Models/Preset.php b/bbbeasy-backend/app/src/Models/Preset.php index c4ccbb4a..9e54475e 100644 --- a/bbbeasy-backend/app/src/Models/Preset.php +++ b/bbbeasy-backend/app/src/Models/Preset.php @@ -103,6 +103,7 @@ public function getMyPresetInfos($myPreset): array $presetData = [ 'id' => $myPreset['id'], 'name' => $myPreset['name'], + 'user_id'=> $myPreset['user_id'] ]; $enabledCategories = json_decode($myPreset['settings']); diff --git a/bbbeasy-backend/app/src/Utils/PresetProcessor.php b/bbbeasy-backend/app/src/Utils/PresetProcessor.php index 15127b5c..f76c5d67 100644 --- a/bbbeasy-backend/app/src/Utils/PresetProcessor.php +++ b/bbbeasy-backend/app/src/Utils/PresetProcessor.php @@ -28,14 +28,26 @@ use Enum\Presets\BreakoutRooms; use Enum\Presets\General; use Enum\Presets\GuestPolicy; +use Enum\Presets\Language; use Enum\Presets\LearningDashboard; use Enum\Presets\LockSettings; use Enum\Presets\Presentation; use Enum\Presets\Recording; use Enum\Presets\Webcams; +use Models\User; class PresetProcessor { + /** + * f3 instance. + * + * @var \Base f3 + */ + protected $f3; + public function __construct($f3){ + $this->f3=$f3; + + } public function preparePresetData($preset) { $data = []; @@ -61,7 +73,6 @@ public function toCreateMeetingParams($preset, $createParams) // Set the preset data $presetsData->setData(Audio::GROUP_NAME, Audio::USERS_JOIN_MUTED, $preparePresetData[Audio::GROUP_NAME][Audio::USERS_JOIN_MUTED]); $presetsData->setData(Audio::GROUP_NAME, Audio::MODERATORS_ALLOWED_TO_UNMUTE_USERS, $preparePresetData[Audio::GROUP_NAME][Audio::MODERATORS_ALLOWED_TO_UNMUTE_USERS]); - $presetsData->setData(Branding::GROUP_NAME, Branding::LOGO, $preparePresetData[Branding::GROUP_NAME][Branding::LOGO]); $presetsData->setData(Branding::GROUP_NAME, Branding::BANNER_COLOR, $preparePresetData[Branding::GROUP_NAME][Branding::BANNER_COLOR]); $presetsData->setData(Branding::GROUP_NAME, Branding::BANNER_TEXT, $preparePresetData[Branding::GROUP_NAME][Branding::BANNER_TEXT]); @@ -158,13 +169,32 @@ public function toJoinParameters($preset, $joinParams) $preparePresetData = $this->preparePresetData($preset); // Set the preset data + $presetsData->setData(Audio::GROUP_NAME, Audio::AUTO_JOIN, $preparePresetData[Audio::GROUP_NAME][Audio::AUTO_JOIN]); $presetsData->setData(Audio::GROUP_NAME, Audio::LISTEN_ONLY_ENABLED, $preparePresetData[Audio::GROUP_NAME][Audio::LISTEN_ONLY_ENABLED]); $presetsData->setData(Audio::GROUP_NAME, Audio::SKIP_ECHO_TEST, $preparePresetData[Audio::GROUP_NAME][Audio::SKIP_ECHO_TEST]); + + $presetsData->setData(Branding::GROUP_NAME,Branding::TITLE,$preparePresetData[Branding::GROUP_NAME][Branding::TITLE]); + $presetsData->setData(Branding::GROUP_NAME,Branding::USE_AVATARS,$preparePresetData[Branding::GROUP_NAME][Branding::USE_AVATARS]); + + $presetsData->setData(Language::GROUP_NAME,Language::DEFAULT_LANGUAGE,$preparePresetData[Language::GROUP_NAME][Language::DEFAULT_LANGUAGE]); + + + + + $joinParams->addUserData('bbb_auto_join_audio', $presetsData->getData(Audio::GROUP_NAME, Audio::AUTO_JOIN)); $joinParams->addUserData('bbb_force_listen_only', $presetsData->getData(Audio::GROUP_NAME, Audio::LISTEN_ONLY_ENABLED)); +$user=new User(); +$user=$user->getById($preset['user_id']); + $joinParams->addUserData('bbb_skip_check_audio', $presetsData->getData(Audio::GROUP_NAME, Audio::SKIP_ECHO_TEST)); - $joinParams->setRedirect(false); + $joinParams->setAvatarURL( $presetsData->getData(Branding::GROUP_NAME,Branding::USE_AVATARS)?$this->f3->get('SERVER.HTTP_ORIGIN') .'/uploads/'. $user->avatar:null); + // $joinParams->setAvatarURL("https://upload.wikimedia.org/wikipedia/commons/thumb/9/94/BigBlueButton_icon.svg/1200px-BigBlueButton_icon.svg.png"); + $joinParams->addUserData('bbb_client_title',$presetsData->getData(Branding::GROUP_NAME, Branding::TITLE)); + $joinParams->addUserData('bbb_display_branding_area',true); + $joinParams->addUserData('bbb_override_default_locale',$presetsData->getData(Language::GROUP_NAME,Language::DEFAULT_LANGUAGE)); + $joinParams->setRedirect(false); return $joinParams; } diff --git a/bbbeasy-frontend/src/components/Presets.tsx b/bbbeasy-frontend/src/components/Presets.tsx index 446a735d..cb43e880 100644 --- a/bbbeasy-frontend/src/components/Presets.tsx +++ b/bbbeasy-frontend/src/components/Presets.tsx @@ -137,6 +137,9 @@ const PresetsCol: React.FC = ({ fileList[0].type === 'image/png'; if (img) { setFileList(fileList); + fileList[0].name = 'logo-branding-' + Date.now() + '.' + fileList[0].type.substring(6); + + setFile(fileList[0]); } } @@ -237,8 +240,9 @@ const PresetsCol: React.FC = ({ //edit file if (indexLogo > -1 && file != undefined && file.originFileObj != null) { const formData: FormData = new FormData(); - formData.append('logo', file.originFileObj, file.originFileObj.name); - formData.append('logo_name', file.originFileObj.name); + console.log(file) + formData.append('logo', file.originFileObj, file.name); + formData.append('logo_name', file.name); axios .post(apiRoutes.SAVE_FILE_URL, formData) @@ -562,14 +566,13 @@ const PresetsCol: React.FC = ({ {item.type === 'select' && (