ILIAS  release_8 Revision v8.19
All Data Structures Namespaces Files Functions Variables Modules Pages
class.ilMediaObjectsPlayerWrapperGUI.php
Go to the documentation of this file.
1 <?php
2 
3 declare(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(
65  ilObjMediaObject $mob,
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();
104 EOT;
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 }
ILIAS MediaObjects Player PlayerGUIRequest $request
Class Factory.
Class ChatMainBarProvider .
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
audio(ilObjMediaObject $mob, int $tracking_container_ref_id=0)
$ref_id
Definition: ltiauth.php:67
ILIAS MediaObjects MediaType MediaTypeManager $media_type
getMediaItem(string $a_purpose)
get item for media purpose
__construct(InternalDomainService $domain_service, InternalGUIService $gui_service)
$id
plugin.php for ilComponentBuildPluginInfoObjectiveTest::testAddPlugins
Definition: plugin.php:23
ILIAS MediaObjects Tracking TrackingManager $tracking
$url
static _getURL(int $a_mob_id)
get directory for files of media object