ILIAS  release_8 Revision v8.24
class.ilMediaObjectsPlayerWrapperGUI.php
Go to the documentation of this file.
1<?php
2
3declare(strict_types=1);
4
23
28{
29 protected \ILIAS\MediaObjects\Tracking\TrackingManager $tracking;
30 protected \ILIAS\MediaObjects\Player\PlayerGUIRequest $request;
31 protected \ILIAS\MediaObjects\MediaType\MediaTypeManager $media_type;
34
35 public function __construct(
36 InternalDomainService $domain_service,
37 InternalGUIService $gui_service
38 ) {
39 $this->gui = $gui_service;
40 $this->domain = $domain_service;
41 $this->media_type = $this->domain->mediaType();
42 $this->request = $gui_service->player()->request();
43 $this->tracking = $this->domain->tracking();
44 }
45
46 public function executeCommand(): void
47 {
48 $ctrl = $this->gui->ctrl();
49
50 $next_class = $ctrl->getNextClass($this);
51 $cmd = $ctrl->getCmd("show");
52
53 switch ($next_class) {
54 default:
55 if (in_array($cmd, array("saveCompletion"))) {
56 $this->$cmd();
57 }
58 }
59 }
60
64 public function audio(
66 int $tracking_container_ref_id = 0
67 ): ?\ILIAS\UI\Component\Player\Audio {
68 $main_tpl = $this->gui->ui()->mainTemplate();
69
70 $ctrl = $this->gui->ctrl();
71
72 $med = $mob->getMediaItem("Standard");
73
74 if (is_null($med) || !$this->media_type->isAudio($med->getFormat())) {
75 return null;
76 }
77
78 if ($med->getLocationType() === "Reference") {
79 $resource = $med->getLocation();
80 } else {
81 $path_to_file = \ilObjMediaObject::_getURL($mob->getId()) . "/" . $med->getLocation();
82 $resource = $path_to_file;
83 }
84
85 $audio = $this->gui->ui()->factory()->player()->audio(
86 $resource,
87 ""
88 );
89
90 if ($tracking_container_ref_id > 0) {
91 // @todo: make this a media object general setting
92 $mcst_settings = ilMediaCastSettings::_getInstance();
93 $treshold = (int) $mcst_settings->getVideoCompletionThreshold();
94
95 $main_tpl->addJavaScript("./Services/MediaObjects/js/MediaObjectsCompletion.js");
96 $ctrl->setParameter($this, "mob_tracking_ref_id", $tracking_container_ref_id);
97 $ctrl->setParameter($this, "mob_tracking_mob_id", $mob->getId());
98 $url = $ctrl->getLinkTarget($this, "saveCompletion");
99 $audio = $audio->withAdditionalOnLoadCode(function ($id) use ($url, $treshold) {
100 $js = <<<EOT
101 document.getElementById('$id').dataset.mobCompletionCallback = '$url';
102 document.getElementById('$id').dataset.mobCompletionThreshold = '$treshold';
103 il.MediaObjectsCompletion.init();
104EOT;
105 return $js;
106 });
107 }
108 return $audio;
109 }
110
111 protected function saveCompletion(): void
112 {
113 $ref_id = $this->request->getTrackingRefId();
114 $mob_id = $this->request->getTrackingMobId();
115 $this->tracking->saveCompletion($mob_id, $ref_id);
116 }
117}
$id
plugin.php for ilComponentBuildPluginInfoObjectiveTest::testAddPlugins
Definition: plugin.php:23
ILIAS MediaObjects Tracking TrackingManager $tracking
__construct(InternalDomainService $domain_service, InternalGUIService $gui_service)
ILIAS MediaObjects Player PlayerGUIRequest $request
ILIAS MediaObjects MediaType MediaTypeManager $media_type
audio(ilObjMediaObject $mob, int $tracking_container_ref_id=0)
static _getURL(int $a_mob_id)
get directory for files of media object
getMediaItem(string $a_purpose)
get item for media purpose
$ref_id
Definition: ltiauth.php:67
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
Class ChatMainBarProvider \MainMenu\Provider.
Class Factory.
$url