ILIAS  release_7 Revision v7.30-3-g800a261c036
class.ilMediaObjectUsagesTableGUI.php
Go to the documentation of this file.
1<?php
2
3/* Copyright (c) 1998-2011 ILIAS open source, Extended GPL, see docs/LICENSE */
4
5include_once("Services/Table/classes/class.ilTable2GUI.php");
6
16{
20 protected $ctrl;
21
25 protected $access;
26
30 protected $media_object;
31
35 protected $repo_tree;
36
40 public function __construct(
41 $a_parent_obj,
42 $a_parent_cmd,
43 $a_media_object,
44 $a_include_hist = false
45 ) {
46 global $DIC;
47
48 $this->ctrl = $DIC->ctrl();
49 $this->lng = $DIC->language();
50 $this->access = $DIC->access();
51 $ilCtrl = $DIC->ctrl();
52 $lng = $DIC->language();
53
54 $this->repo_tree = $DIC->repositoryTree();
55
56 parent::__construct($a_parent_obj, $a_parent_cmd);
57 $this->media_object = $a_media_object;
58 $this->include_hist = $a_include_hist;
59 $this->addColumn($lng->txt("mob_object"));
60 $this->addColumn($this->lng->txt("type"));
61 $this->addColumn($this->lng->txt("cont_versions"));
62 $this->setFormAction($ilCtrl->getFormAction($a_parent_obj));
63 $this->setRowTemplate("tpl.mob_usage_row.html", "Services/MediaObjects");
64 $this->getItems();
65 $this->setTitle($lng->txt("cont_mob_usages"));
66 }
67
71 public function getItems()
72 {
73 $usages = $this->media_object->getUsages($this->include_hist);
74
75 $clip_cnt = 0;
76 $to_del = array();
77 $agg_usages = array();
78 foreach ($usages as $k => $usage) {
79 $usage["trash"] = false;
80 if (is_int(strpos($usage["type"], ":"))) {
81 $us_arr = explode(":", $usage["type"]);
82
83 // try to figure out object id of pages
84 if ($us_arr[1] == "pg") {
85 $page_obj = ilPageObjectFactory::getInstance($us_arr[0], $usage["id"]);
86 $usage["page"] = $page_obj;
88 $ref_ids = array_filter(
89 ilObject::_getAllReferences($page_obj->getRepoObjId()),
90 function ($ref_id) use ($repo_tree) {
91 return $repo_tree->isInTree($ref_id);
92 }
93 );
94 $usage["ref_ids"] = $ref_ids;
95 if (count($ref_ids) == 0) {
96 $usage["trash"] = true;
97 }
98 }
99 }
100
101
102 if ($usage["type"] == "clip") {
103 $clip_cnt++;
104 } else {
105 if ($this->incl_hist || !$usage["trash"]) {
106 if (empty($agg_usages[$usage["type"] . ":" . $usage["id"]])) {
107 $agg_usages[$usage["type"] . ":" . $usage["id"]] = $usage;
108 }
109 $agg_usages[$usage["type"] . ":" . $usage["id"]]["versions"][] =
110 ["hist_nr" => $usage["hist_nr"],
111 "lang" => $usage["lang"]];
112 }
113 }
114 }
115
116 // usages in clipboards
117 if ($clip_cnt > 0) {
118 $agg_usages[] = array("type" => "clip", "cnt" => $clip_cnt);
119 }
120
121 $this->setData($agg_usages);
122 }
123
128 protected function fillRow($a_set)
129 {
131 $ilCtrl = $this->ctrl;
132 $ilAccess = $this->access;
133
134 $usage = $a_set;
135
136 //var_dump($usage);
137
138 if (is_int(strpos($usage["type"], ":"))) {
139 $us_arr = explode(":", $usage["type"]);
140 $usage["type"] = $us_arr[1];
141 $cont_type = $us_arr[0];
142 }
143
144 include_once('./Services/Link/classes/class.ilLink.php');
145
146 switch ($usage["type"]) {
147 case "pg":
148 $page_obj = $usage["page"];
149
150 $item = array();
151
152 //$this->tpl->setVariable("TXT_OBJECT", $usage["type"].":".$usage["id"]);
153 switch ($cont_type) {
154 case "lm":
155 require_once("./Modules/LearningModule/classes/class.ilObjContentObject.php");
156 require_once("./Modules/LearningModule/classes/class.ilObjLearningModule.php");
157 require_once("./Modules/LearningModule/classes/class.ilLMObject.php");
158 if (ilObject::_lookupType($page_obj->getParentId()) == "lm") {
159 $lm_obj = new ilObjLearningModule($page_obj->getParentId(), false);
160 $item["obj_type_txt"] = $this->lng->txt("obj_" . $cont_type);
161 $item["obj_title"] = $lm_obj->getTitle();
162 $item["sub_txt"] = $this->lng->txt("pg");
163 $item["sub_title"] = ilLMObject::_lookupTitle($page_obj->getId());
164 $ref_id = $this->getFirstWritableRefId($lm_obj->getId());
165 if ($ref_id > 0) {
166 $item["obj_link"] = ilLink::_getStaticLink($page_obj->getId() . "_" . $ref_id, "pg");
167 }
168 }
169 break;
170
171 case "wpg":
172 require_once("./Modules/Wiki/classes/class.ilWikiPage.php");
173 $item["obj_type_txt"] = $this->lng->txt("obj_wiki");
174 $item["obj_title"] = ilObject::_lookupTitle($page_obj->getParentId());
175 $item["sub_txt"] = $this->lng->txt("pg");
176 $item["sub_title"] = ilWikiPage::lookupTitle($page_obj->getId());
177 $ref_id = $this->getFirstWritableRefId($page_obj->getParentId());
178 if ($ref_id > 0) {
179 $item["obj_link"] = ilLink::_getStaticLink($ref_id, "wiki");
180 }
181 break;
182
183 case "gdf":
184 $term_id = ilGlossaryDefinition::_lookupTermId($page_obj->getId());
185 $glo_id = ilGlossaryTerm::_lookGlossaryId($term_id);
186 $item["obj_type_txt"] = $this->lng->txt("obj_glo");
187 $item["obj_title"] = ilObject::_lookupTitle($glo_id);
188 $item["sub_txt"] = $this->lng->txt("cont_term");
189 $item["sub_title"] = ilGlossaryTerm::_lookGlossaryTerm($term_id);
190 $ref_id = $this->getFirstWritableRefId($page_obj->getParentId());
191 if ($ref_id > 0) {
192 $item["obj_link"] = ilLink::_getStaticLink($ref_id, "glo");
193 }
194 break;
195
196 case "cont":
197 $otype = ilObject::_lookupType($page_obj->getId());
198 $item["obj_type_txt"] = $this->lng->txt("obj_" . $otype);
199 $item["obj_title"] = ilObject::_lookupTitle($page_obj->getId());
200 $ref_id = $this->getFirstWritableRefId($page_obj->getId());
201 if ($ref_id > 0) {
202 $item["obj_link"] = ilLink::_getStaticLink($ref_id, $otype);
203 }
204 break;
205
206 case "mep":
207 $item["obj_type_txt"] = $this->lng->txt("mep_page_type_mep");
208 $item["sub_txt"] = $this->lng->txt("mep_page_type_mep");
209 $item["sub_title"] = ilMediaPoolItem::lookupTitle($usage["id"]);
210
211 $mep_pools = ilMediaPoolItem::getPoolForItemId($usage["id"]);
212 foreach ($mep_pools as $mep_id) {
213 $ref_ids = ilObject::_getAllReferences($mep_id);
214 $item["obj_title"] = ilObject::_lookupTitle($mep_id);
215 foreach ($ref_ids as $rid) {
216 $item["obj_link"] = ilLink::_getStaticLink($rid, "mep");
217 break;
218 }
219 break;
220 }
221 break;
222
223 default:
224 include_once("./Services/MediaObjects/classes/class.ilObjMediaObject.php");
226 if ($oid > 0) {
228 $item["obj_type_txt"] = $this->lng->txt("obj_" . $type);
229 $item["obj_title"] = ilObject::_lookupTitle($oid);
230 $ref_id = $this->getFirstWritableRefId($oid);
231 if ($ref_id > 0) {
232 $item["obj_link"] = ilLink::_getStaticLink($ref_id, $type);
233 }
234 }
235 break;
236 }
237
238 if ($usage["trash"]) {
239 $item["obj_title"] .= " (" . $lng->txt("trash") . ")";
240 }
241
242 break;
243
244 case "mep":
245 $item["obj_type_txt"] = $this->lng->txt("obj_mep");
246 $item["obj_title"] = ilObject::_lookupTitle($usage["id"]);
247 $ref_id = $this->getFirstWritableRefId($usage["id"]);
248 if ($ref_id > 0) {
249 $item["obj_link"] = ilLink::_getStaticLink($ref_id, "mep");
250 }
251 break;
252
253 case "map":
254 $item["obj_type_txt"] = $this->lng->txt("obj_mob");
255 $item["obj_title"] = ilObject::_lookupTitle($usage["id"]);
256 $item["sub_txt"] = $this->lng->txt("cont_link_area");
257 break;
258 }
259
260 // show versions
261 if (is_array($usage["versions"]) && is_object($usage["page"])) {
262 $ver = $sep = "";
263
264 if (count($usage["versions"]) > 5) {
265 $ver .= "..., ";
266 $cnt = count($usage["versions"]) - 5;
267 for ($i = 0; $i < $cnt; $i++) {
268 unset($usage["versions"][$i]);
269 }
270 }
271 foreach ($usage["versions"] as $version) {
272 if ($version["hist_nr"] == 0) {
273 $version["hist_nr"] = $this->lng->txt("cont_current_version");
274 }
275 $ver .= $sep . $version["hist_nr"];
276 if ($version["lang"] != "") {
277 $ver .= "/" . $version["lang"];
278 }
279 $sep = ", ";
280 }
281
282 $this->tpl->setCurrentBlock("versions");
283 $this->tpl->setVariable("VAL_VERSIONS", $ver);
284 $this->tpl->parseCurrentBlock();
285 } else {
286 $this->tpl->setCurrentBlock("versions");
287 $this->tpl->setVariable("VAL_VERSIONS", " ");
288 $this->tpl->parseCurrentBlock();
289 }
290
291 if ($item["obj_type_txt"] != "") {
292 $this->tpl->setVariable("VAL_TYPE", $item["obj_type_txt"]);
293 }
294
295 if ($usage["type"] != "clip") {
296 if ($item["obj_link"]) {
297 $this->tpl->setCurrentBlock("linked_item");
298 $this->tpl->setVariable("TXT_OBJECT", $item["obj_title"]);
299 $this->tpl->setVariable("HREF_LINK", $item["obj_link"]);
300 $this->tpl->parseCurrentBlock();
301 } else {
302 $this->tpl->setVariable("TXT_OBJECT_NO_LINK", $item["obj_title"]);
303 }
304
305 if ($item["sub_txt"] != "") {
306 $this->tpl->setVariable("SEP", ", ");
307 $this->tpl->setVariable("SUB_TXT", $item["sub_txt"]);
308 if ($item["sub_title"] != "") {
309 $this->tpl->setVariable("SEP2", ": ");
310 $this->tpl->setVariable("SUB_TITLE", $item["sub_title"]);
311 }
312 }
313 } else {
314 $this->tpl->setVariable("TXT_OBJECT_NO_LINK", $this->lng->txt("cont_users_have_mob_in_clip1") .
315 " " . $usage["cnt"] . " " . $this->lng->txt("cont_users_have_mob_in_clip2"));
316 }
317 }
318
319 public function getFirstWritableRefId($a_obj_id)
320 {
321 $ilAccess = $this->access;
322
323 $ref_ids = ilObject::_getAllReferences($a_obj_id);
324 foreach ($ref_ids as $ref_id) {
325 if ($ilAccess->checkAccess("write", "", $ref_id)) {
326 return $ref_id;
327 }
328 }
329 return 0;
330 }
331}
An exception for terminatinating execution or to throw for unit testing.
static _lookupTermId($a_def_id)
Looks up term id for a definition id.
static _lookGlossaryTerm($term_id)
get glossary term
static _lookupTitle($a_obj_id)
Lookup title.
TableGUI class for media object usages listing.
__construct( $a_parent_obj, $a_parent_cmd, $a_media_object, $a_include_hist=false)
Constructor.
fillRow($a_set)
Standard Version of Fill Row.
static getPoolForItemId($a_id)
Get media pools for item id.
static lookupTitle($a_id)
Lookup title.
Class ilObjLearningModule.
static getParentObjectIdForUsage($a_usage, $a_include_all_access_obj_ids=false)
Get's the repository object ID of a parent object, if possible.
static _lookupTitle($a_id)
lookup object title
static _getAllReferences($a_id)
get all reference ids of object
static _lookupType($a_id, $a_reference=false)
lookup object type
static getInstance($a_parent_type, $a_id=0, $a_old_nr=0, $a_lang="-")
Get page object instance.
Class ilTable2GUI.
setTitle($a_title, $a_icon=0, $a_icon_alt=0)
Set title and title icon.
setData($a_data)
set table data @access public
setRowTemplate($a_template, $a_template_dir="")
Set row template.
addColumn( $a_text, $a_sort_field="", $a_width="", $a_is_checkbox_action_column=false, $a_class="", $a_tooltip="", $a_tooltip_with_html=false)
Add a column to the header.
setFormAction($a_form_action, $a_multipart=false)
Set Form action parameter.
static lookupTitle($a_page_id)
Checks whether a page with given title exists.
global $DIC
Definition: goto.php:24
$i
Definition: metadata.php:24
__construct(Container $dic, ilPlugin $plugin)
@inheritDoc
$type