@@ -248,7 +248,7 @@ class CreateMeetingParameters extends MetaParameters
248248 protected ?string $ clientSettingsOverride = null ;
249249
250250 /**
251- * @var array<string,string>
251+ * @var array<string,array< string, string|bool|null> >
252252 */
253253 private array $ presentations = [];
254254
@@ -351,13 +351,14 @@ public function setGuestPolicyAlwaysAccept(): self
351351 return $ this ;
352352 }
353353
354- public function addPresentation (string $ nameOrUrl , ?string $ content = null , ?string $ filename = null ): self
354+ public function addPresentation (string $ nameOrUrl , ?string $ content = null , ?string $ filename = null , ? bool $ downloadable = null , ? bool $ removable = null ): self
355355 {
356- if (!$ filename ) {
357- $ this ->presentations [$ nameOrUrl ] = !$ content ?: base64_encode ($ content );
358- } else {
359- $ this ->presentations [$ nameOrUrl ] = $ filename ;
360- }
356+ $ this ->presentations [$ nameOrUrl ] = [
357+ 'filename ' => $ filename ,
358+ 'content ' => !$ content ?: base64_encode ($ content ),
359+ 'downloadable ' => $ downloadable ,
360+ 'removable ' => $ removable ,
361+ ];
361362
362363 return $ this ;
363364 }
@@ -423,18 +424,27 @@ public function addPresentationsModule(SimpleXMLElementExtended $xml): void
423424 $ module = $ xml ->addChild ('module ' );
424425 $ module ->addAttribute ('name ' , 'presentation ' );
425426
426- foreach ($ this ->presentations as $ nameOrUrl => $ content ) {
427+ foreach ($ this ->presentations as $ nameOrUrl => $ data ) {
428+ $ document = $ module ->addChild ('document ' );
429+
427430 if (str_starts_with ($ nameOrUrl , 'http ' )) {
428- $ presentation = $ module ->addChild ('document ' );
429- $ presentation ->addAttribute ('url ' , $ nameOrUrl );
430- if (\is_string ($ content )) {
431- $ presentation ->addAttribute ('filename ' , $ content );
432- }
431+ $ document ->addAttribute ('url ' , $ nameOrUrl );
433432 } else {
434- $ document = $ module ->addChild ('document ' );
435433 $ document ->addAttribute ('name ' , $ nameOrUrl );
436434 /* @phpstan-ignore-next-line */
437- $ document [0 ] = $ content ;
435+ $ document [0 ] = $ data ['content ' ];
436+ }
437+
438+ if (isset ($ data ['filename ' ])) {
439+ $ document ->addAttribute ('filename ' , $ data ['filename ' ]);
440+ }
441+
442+ if (\is_bool ($ data ['downloadable ' ])) {
443+ $ document ->addAttribute ('downloadable ' , $ data ['downloadable ' ] ? 'true ' : 'false ' );
444+ }
445+
446+ if (\is_bool ($ data ['removable ' ])) {
447+ $ document ->addAttribute ('removable ' , $ data ['removable ' ] ? 'true ' : 'false ' );
438448 }
439449 }
440450 }
0 commit comments