ILIAS  trunk Revision v11.0_alpha-3011-gc6b235a2e85
class.ilMediaCastTableGUI.php
Go to the documentation of this file.
1<?php
2
20
26{
27 protected \ILIAS\MediaObjects\MediaType\MediaTypeManager $media_type;
28 protected bool $presentation_mode;
31 protected bool $downloadable = false;
32 protected bool $edit_order;
33 protected \ILIAS\DI\UIServices $ui;
34
35 public function __construct(
36 ilObjMediaCastGUI $a_parent_obj,
37 string $a_parent_cmd = "",
38 bool $a_edit_order = false,
39 bool $a_presentation_mode = false
40 ) {
41 global $DIC;
42
43 $this->ctrl = $DIC->ctrl();
44 $this->lng = $DIC->language();
45 $this->access = $DIC->access();
46 $ilCtrl = $DIC->ctrl();
47 $lng = $DIC->language();
48 $this->request = $DIC->mediaCast()
49 ->internal()
50 ->gui()
51 ->standardRequest();
52 $this->ui = $DIC->ui();
53 $this->edit_order = $a_edit_order;
54 $this->presentation_mode = $a_presentation_mode;
55
56 parent::__construct($a_parent_obj, $a_parent_cmd);
57
58 // Check whether download-buttons will be displayed
59 $mediacast = new ilObjMediaCast($a_parent_obj->getObject()->getRefId());
60 $this->downloadable = $mediacast->getDownloadable();
61
62 if (!$this->presentation_mode) {
63 $this->addColumn("", "", "1");
64 }
65 $this->addColumn($lng->txt("title"));
66 $this->addColumn($lng->txt("properties"));
67 if (!$this->edit_order) {
68 $this->addColumn($lng->txt("mcst_play"), "", "320px");
69 }
70
71 $this->setFormAction($ilCtrl->getFormAction($a_parent_obj));
72 $this->setRowTemplate(
73 "tpl.table_media_cast_row.html",
74 "components/ILIAS/MediaCast"
75 );
76
77 $this->media_type = $DIC->mediaObjects()->internal()->domain()->mediaType();
78
79 $this->setShowRowsSelector(true);
80 }
81
82 protected function fillRow(array $a_set): void
83 {
85 $ilCtrl = $this->ctrl;
86 $ilAccess = $this->access;
87 $size = 0;
88 $ui = $this->ui;
89
90 $news_set = new ilSetting("news");
91 $enable_internal_rss = $news_set->get("enable_rss_for_internal");
92
93 if ($this->presentation_mode) {
94 $ilCtrl->setParameterByClass("ilobjmediacastgui", "presentation", "1");
95 }
96
97 // access
98 if ($enable_internal_rss && !$this->presentation_mode) {
99 $this->tpl->setCurrentBlock("access");
100 $this->tpl->setVariable("TXT_ACCESS", $lng->txt("news_news_item_visibility"));
101 if ($a_set["visibility"] == NEWS_PUBLIC) {
102 $this->tpl->setVariable("VAL_ACCESS", $lng->txt("news_visibility_public"));
103 } else {
104 $this->tpl->setVariable("VAL_ACCESS", $lng->txt("news_visibility_users"));
105 }
106 $this->tpl->parseCurrentBlock();
107 }
108
109 $ilCtrl->setParameterByClass("ilobjmediacastgui", "item_id", "");
110
111 if (ilObject::_exists($a_set["mob_id"])) {
112 if ($a_set["update_date"] != "") {
113 $this->tpl->setCurrentBlock("last_update");
114 $this->tpl->setVariable(
115 "TXT_LAST_UPDATE",
116 $lng->txt("last_update")
117 );
118 $this->tpl->setVariable(
119 "VAL_LAST_UPDATE",
121 );
122 $this->tpl->parseCurrentBlock();
123 }
124
125 $mob = new ilObjMediaObject($a_set["mob_id"]);
126 $med = $mob->getMediaItem("Standard");
127
128 $this->tpl->setVariable(
129 "VAL_TITLE",
130 $a_set["title"]
131 );
132 $this->tpl->setVariable(
133 "VAL_DESCRIPTION",
134 $a_set["content"]
135 );
136 $this->tpl->setVariable(
137 "TXT_CREATED",
138 $lng->txt("created")
139 );
140 $this->tpl->setVariable(
141 "VAL_CREATED",
142 ilDatePresentation::formatDate(new ilDateTime($a_set["creation_date"], IL_CAL_DATETIME))
143 );
144
145 $this->tpl->setVariable(
146 "TXT_DURATION",
147 $lng->txt("mcst_play_time")
148 );
149
150 if ($a_set["playtime"] != "00:00:00") {
151 $this->tpl->setVariable(
152 "VAL_DURATION",
153 $a_set["playtime"]
154 );
155 } else {
156 $this->tpl->setVariable("VAL_DURATION", "-");
157 }
158
159 if (!$this->edit_order) {
160 if ($this->downloadable) {
161 $ilCtrl->setParameterByClass("ilobjmediacastgui", "item_id", $a_set["id"]);
162 // to keep always the order of the purposes
163 // iterate through purposes and display the according mediaitems
164 foreach (ilObjMediaCast::$purposes as $purpose) {
165 $a_mob = $mob->getMediaItem($purpose);
166 if (!is_object($a_mob)) {
167 continue;
168 }
169 $ilCtrl->setParameterByClass("ilobjmediacastgui", "purpose", $a_mob->getPurpose());
170 $file = ilObjMediaObject::_lookupItemPath($a_mob->getMobId(), false, false, $a_mob->getPurpose());
171 if (is_file($file)) {
172 $size = filesize($file);
173 $size = ", " . sprintf("%.1f MB", $size / 1024 / 1024);
174 }
175 $format = ($a_mob->getFormat() != "") ? $a_mob->getFormat() : "audio/mpeg";
176 $this->tpl->setCurrentBlock("downloadable");
177 $this->tpl->setVariable("TXT_DOWNLOAD", $lng->txt("mcst_download_" . strtolower($a_mob->getPurpose())));
178 $this->tpl->setVariable("CMD_DOWNLOAD", $ilCtrl->getLinkTargetByClass("ilobjmediacastgui", "downloadItem"));
179 $this->tpl->setVariable("TITLE_DOWNLOAD", "(" . $format . $size . ")");
180 $this->tpl->parseCurrentBlock();
181 }
182 }
183
184 // the news id will be used as player id, see also ilObjMediaCastGUI
185 $event_url = ($this->presentation_mode)
186 ? $ilCtrl->getLinkTarget($this->parent_obj, "handlePlayerEvent", "", true, false)
187 : "";
188 if (!is_null($med)) {
189 $file = $mob->getStandardSrc();
190 $comp = null;
191 if ($this->media_type->isAudio($med->getFormat())) {
192 $comp = $ui->factory()->player()->audio(
193 $file,
194 ""
195 );
196 } elseif ($this->media_type->isVideo($med->getFormat())) {
197 $comp = $ui->factory()->player()->video(
198 $file
199 );
200 } elseif ($this->media_type->isImage($med->getFormat())) {
201 $comp = $ui->factory()->image()->responsive($file, "");
202 }
203 if (!is_null($comp)) {
204 $this->tpl->setVariable("PLAYER", $ui->renderer()->render($comp));
205 }
206 }
207
208 // edit link
209 $ilCtrl->setParameterByClass("ilobjmediacastgui", "item_id", $a_set["id"]);
210 if ($ilAccess->checkAccess("write", "", $this->request->getRefId()) &&
211 !$this->presentation_mode) {
212 $this->tpl->setCurrentBlock("edit");
213 $this->tpl->setVariable("TXT_EDIT", $lng->txt("edit"));
214 $this->tpl->setVariable(
215 "CMD_EDIT",
216 $ilCtrl->getLinkTargetByClass("ilobjmediacastgui", "editCastItem")
217 );
218
219 if (!is_int(strpos($med->getFormat(), "image/"))) {
220 $this->tpl->setVariable("TXT_DET_PLAYTIME", $lng->txt("mcst_det_playtime"));
221 $this->tpl->setVariable(
222 "CMD_DET_PLAYTIME",
223 $ilCtrl->getLinkTargetByClass("ilobjmediacastgui", "determinePlaytime")
224 );
225 }
226 $this->tpl->parseCurrentBlock();
227
228 $this->tpl->setCurrentBlock("edit_checkbox");
229 $this->tpl->setVariable("VAL_ID", $a_set["id"]);
230 $this->tpl->parseCurrentBlock();
231 // $this->tpl->touchBlock("contrl_col");
232 }
233 } else {
234 $this->tpl->setCurrentBlock("edit_order");
235 $this->tpl->setVariable("VAL_ID", $a_set["id"]);
236 $this->tpl->setVariable("VAL_ORDER", $a_set["order"]);
237 $this->tpl->parseCurrentBlock();
238 // $this->tpl->touchBlock("contrl_col");
239 }
240
241 // download and play counter
242 if (!$this->presentation_mode) {
243 if ($a_set["mob_cnt_download"] > 0) {
244 $this->tpl->setCurrentBlock("prop");
245 $this->tpl->setVariable("TXT_PROP", $lng->txt("mcst_download_cnt"));
246 $this->tpl->setVariable("VAL_PROP", $a_set["mob_cnt_download"]);
247 $this->tpl->parseCurrentBlock();
248 }
249 if ($a_set["mob_cnt_play"] > 0) {
250 $this->tpl->setCurrentBlock("prop");
251 $this->tpl->setVariable("TXT_PROP", $lng->txt("mcst_play_cnt"));
252 $this->tpl->setVariable("VAL_PROP", $a_set["mob_cnt_play"]);
253 $this->tpl->parseCurrentBlock();
254 }
255 }
256 }
257 }
258}
const IL_CAL_DATETIME
const NEWS_PUBLIC
static formatDate(ilDateTime $date, bool $a_skip_day=false, bool $a_include_wd=false, bool $include_seconds=false, ?ilObjUser $user=null,)
@classDescription Date and time handling
txt(string $a_topic, string $a_default_lang_fallback_mod="")
gets the text for a given topic if the topic is not in the list, the topic itself with "-" will be re...
TableGUI class for table NewsForContext.
fillRow(array $a_set)
Standard Version of Fill Row.
__construct(ilObjMediaCastGUI $a_parent_obj, string $a_parent_cmd="", bool $a_edit_order=false, bool $a_presentation_mode=false)
ILIAS MediaObjects MediaType MediaTypeManager $media_type
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static array $purposes
static _lookupItemPath(int $a_mob_id, bool $a_url_encode=false, bool $a_web=true, string $a_purpose="")
Get path for item with specific purpose.
static _exists(int $id, bool $reference=false, ?string $type=null)
checks if an object exists in object_data
ILIAS Setting Class.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
setShowRowsSelector(bool $a_value)
Toggle rows-per-page selector.
setFormAction(string $a_form_action, bool $a_multipart=false)
addColumn(string $a_text, string $a_sort_field="", string $a_width="", bool $a_is_checkbox_action_column=false, string $a_class="", string $a_tooltip="", bool $a_tooltip_with_html=false)
setRowTemplate(string $a_template, string $a_template_dir="")
Set row template.
ilLanguage $lng
Interface ilAccessHandler This interface combines all available interfaces which can be called via gl...
__construct(Container $dic, ilPlugin $plugin)
@inheritDoc
global $DIC
Definition: shib_login.php:26