ILIAS  release_7 Revision v7.30-3-g800a261c036
class.ilObjectOwnershipManagementTableGUI.php
Go to the documentation of this file.
1<?php
2/* Copyright (c) 1998-2010 ILIAS open source, Extended GPL, see docs/LICENSE */
3
4include_once('./Services/Table/classes/class.ilTable2GUI.php');
5require_once('./Services/Repository/classes/class.ilObjectPlugin.php');
6
17{
21 protected $ctrl;
22
26 protected $access;
27
31 protected $tree;
32
36 protected $obj_definition;
37
38 protected $user_id; // [int]
39
40 public function __construct($a_parent_obj, $a_parent_cmd, $a_user_id, array $a_data = null)
41 {
42 global $DIC;
43
44 $this->ctrl = $DIC->ctrl();
45 $this->lng = $DIC->language();
46 $this->access = $DIC->access();
47 $this->tree = $DIC->repositoryTree();
48 $this->obj_definition = $DIC["objDefinition"];
49 $ilCtrl = $DIC->ctrl();
50 $lng = $DIC->language();
51
52 $this->user_id = (int) $a_user_id;
53 $this->setId('objownmgmt'); // #16373
54
55 parent::__construct($a_parent_obj, $a_parent_cmd);
56
57 $this->addColumn($lng->txt("title"), "title");
58 $this->addColumn($lng->txt("path"), "path");
59 $this->addColumn($lng->txt("action"), "");
60
61 // $this->setTitle($this->lng->txt(''));
62 $this->setFormAction($ilCtrl->getFormAction($a_parent_obj, $a_parent_cmd));
63 $this->setRowTemplate("tpl.obj_ownership_row.html", "Services/Object");
64 $this->setDisableFilterHiding(true);
65
66 $this->setDefaultOrderField("title");
67 $this->setDefaultOrderDirection("asc");
68
69 $this->initItems($a_data);
70 }
71
72 protected function initItems($a_data)
73 {
74 $ilAccess = $this->access;
76
77 $data = array();
78
79 if (is_array($a_data) && sizeof($a_data)) {
80 if (!$this->user_id) {
81 $is_admin = $ilAccess->checkAccess("visible", "", SYSTEM_FOLDER_ID);
82 }
83
84 foreach ($a_data as $id => $item) {
85 // workspace objects won't have references
86 $refs = ilObject::_getAllReferences($id);
87 if ($refs) {
88 foreach ($refs as $idx => $ref_id) {
89 // objects in trash are hidden
90 if (!$tree->isDeleted($ref_id)) {
91 if ($this->user_id) {
92 $readable = $ilAccess->checkAccessOfUser($this->user_id, "read", "", $ref_id, $a_type);
93 } else {
94 $readable = $is_admin;
95 }
96
97 $data[$ref_id] = array("obj_id" => $id,
98 "ref_id" => $ref_id,
99 "type" => ilObject::_lookupType($id),
100 "title" => $item,
101 "path" => $this->buildPath($ref_id),
102 "readable" => $readable);
103 }
104 }
105 }
106 }
107 }
108
109 $this->setData($data);
110 }
111
112 public function fillRow($row)
113 {
115 $objDefinition = $this->obj_definition;
116
117 // #11050
118 if (!$objDefinition->isPlugin($row["type"])) {
119 $txt_type = $lng->txt("obj_" . $row["type"]);
120 } else {
121 include_once("./Services/Component/classes/class.ilPlugin.php");
122 $txt_type = ilObjectPlugin::lookupTxtById($row["type"], "obj_" . $row["type"]);
123 }
124
125 $this->tpl->setVariable("TITLE", strip_tags($row["title"], ilObjectGUI::ALLOWED_TAGS_IN_TITLE_AND_DESCRIPTION));
126 $this->tpl->setVariable("ALT_ICON", $txt_type);
127 $this->tpl->setVariable("SRC_ICON", ilObject::_getIcon("", "tiny", $row["type"]));
128 $this->tpl->setVariable("PATH", $row["path"]);
129
130 if ($row["readable"]) {
131 $this->tpl->setCurrentBlock("actions");
132 $this->tpl->setVariable("ACTIONS", $this->buildActions($row["ref_id"], $row["type"]));
133 $this->tpl->parseCurrentBlock();
134 }
135 }
136
137 protected function buildActions($a_ref_id, $a_type)
138 {
140 $ilCtrl = $this->ctrl;
141 $objDefinition = $this->obj_definition;
142
143 include_once "Services/UIComponent/AdvancedSelectionList/classes/class.ilAdvancedSelectionListGUI.php";
144 $agui = new ilAdvancedSelectionListGUI();
145 $agui->setId($this->id . "-" . $a_ref_id);
146 $agui->setListTitle($lng->txt("actions"));
147
148 $ilCtrl->setParameter($this->parent_obj, "ownid", $a_ref_id);
149
150 include_once "Services/Link/classes/class.ilLink.php";
151 $agui->addItem(
152 $lng->txt("show"),
153 "",
154 ilLink::_getLink($a_ref_id, $a_type),
155 "",
156 "",
157 "_blank"
158 );
159
160 $agui->addItem(
161 $lng->txt("move"),
162 "",
163 $ilCtrl->getLinkTarget($this->parent_obj, "move"),
164 "",
165 "",
166 ""
167 );
168
169 $agui->addItem(
170 $lng->txt("change_owner"),
171 "",
172 $ilCtrl->getLinkTarget($this->parent_obj, "changeOwner"),
173 "",
174 "",
175 ""
176 );
177
178 if (!in_array($a_type, array("crsr", "catr", "grpr")) && $objDefinition->allowExport($a_type)) {
179 $agui->addItem(
180 $lng->txt("export"),
181 "",
182 $ilCtrl->getLinkTarget($this->parent_obj, "export"),
183 "",
184 "",
185 ""
186 );
187 }
188
189 $agui->addItem(
190 $lng->txt("delete"),
191 "",
192 $ilCtrl->getLinkTarget($this->parent_obj, "delete"),
193 "",
194 "",
195 ""
196 );
197
198 $ilCtrl->setParameter($this->parent_obj, "ownid", "");
199
200 return $agui->getHTML();
201 }
202
203 protected function buildPath($a_ref_id)
204 {
206
207 $path = "...";
208 $counter = 0;
209 $path_full = $tree->getPathFull($a_ref_id);
210 foreach ($path_full as $data) {
211 if (++$counter < (count($path_full) - 2)) {
212 continue;
213 }
214 if ($a_ref_id != $data['ref_id']) {
215 $path .= " &raquo; " . $data['title'];
216 }
217 }
218
219 return $path;
220 }
221}
An exception for terminatinating execution or to throw for unit testing.
User interface class for advanced drop-down selection lists.
const ALLOWED_TAGS_IN_TITLE_AND_DESCRIPTION
__construct($a_parent_obj, $a_parent_cmd, $a_user_id, array $a_data=null)
static lookupTxtById($plugin_id, $lang_var)
static _getIcon( $a_obj_id="", $a_size="big", $a_type="", $a_offline=false)
Get icon for repository item.
static _getAllReferences($a_id)
get all reference ids of object
static _lookupType($a_id, $a_reference=false)
lookup object type
Class ilTable2GUI.
setDisableFilterHiding($a_val=true)
Set disable filter hiding.
setData($a_data)
set table data @access public
setRowTemplate($a_template, $a_template_dir="")
Set row template.
setDefaultOrderField($a_defaultorderfield)
Set Default order field.
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.
setId($a_val)
Set id.
setFormAction($a_form_action, $a_multipart=false)
Set Form action parameter.
setDefaultOrderDirection($a_defaultorderdirection)
Set Default order direction.
const SYSTEM_FOLDER_ID
Definition: constants.php:33
global $DIC
Definition: goto.php:24
__construct(Container $dic, ilPlugin $plugin)
@inheritDoc