ILIAS  release_5-4 Revision v5.4.26-12-gabc799a52e6
class.ilWorkspaceShareTableGUI.php
Go to the documentation of this file.
1<?php
2/* Copyright (c) 2010 Leifos, GPL, see docs/LICENSE */
3
4include_once("./Services/Table/classes/class.ilTable2GUI.php");
5
15{
19 protected $ctrl;
20
24 protected $settings;
25
29 protected $user;
30
31 protected $handler; // [ilWorkspaceAccessHandler]
32 protected $parent_node_id; // [int]
33 protected $filter; // [array]
34 protected $crs_ids; // [array]
35 protected $grp_ids; // [array]
36 protected $portfolio_mode = false; // [bool]
37
47 public function __construct($a_parent_obj, $a_parent_cmd, $a_handler, $a_parent_node_id = null, $a_load_data = false)
48 {
49 global $DIC;
50
51 $this->ctrl = $DIC->ctrl();
52 $this->lng = $DIC->language();
53 $this->settings = $DIC->settings();
54 $this->user = $DIC->user();
55 $ilCtrl = $DIC->ctrl();
56 $lng = $DIC->language();
57
58 $this->handler = $a_handler;
59
60 if (stristr(get_class($a_parent_obj), "portfolio")) {
61 $this->parent_node_id = $a_parent_node_id;
62 $this->portfolio_mode = true;
63 }
64
65 parent::__construct($a_parent_obj, $a_parent_cmd);
66
67 $this->setId("il_tbl_wspsh" . (int) $this->portfolio_mode);
68
69 $this->setTitle($lng->txt("wsp_shared_resources"));
70
71 $this->addColumn($this->lng->txt("lastname"), "lastname");
72 $this->addColumn($this->lng->txt("firstname"), "firstname");
73 $this->addColumn($this->lng->txt("login"), "login");
74
75 if (!$this->portfolio_mode) {
76 $this->addColumn($this->lng->txt("wsp_shared_object_type"), "obj_type");
77 }
78
79 $this->addColumn($this->lng->txt("wsp_shared_date"), "acl_date");
80 $this->addColumn($this->lng->txt("wsp_shared_title"), "title");
81 $this->addColumn($this->lng->txt("wsp_shared_type"));
82
83 if (!$this->portfolio_mode) {
84 $this->addColumn($this->lng->txt("action"));
85 }
86
87 $this->setDefaultOrderField("acl_date");
88 $this->setDefaultOrderDirection("desc");
89
90 $this->setFormAction($ilCtrl->getFormAction($a_parent_obj));
91 $this->setRowTemplate("tpl.shared_row.html", "Services/PersonalWorkspace");
92
93 $this->setDisableFilterHiding(true);
94 $this->setResetCommand("resetsharefilter", $this->lng->txt("wsp_shared_filter_reset_button"));
95 $this->setFilterCommand("applysharefilter", $this->lng->txt("wsp_shared_filter_button"));
96
97 $this->initFilter();
98
99 // reset will remove all filters
100 if ($this->portfolio_mode &&
101 !$this->filter["obj_type"]) {
102 $this->filter["obj_type"] = "prtf";
103 }
104
105 // incoming request: check for validity
106 if ($a_load_data) {
107 /*
108 if(($this->filter["user"] && strlen($this->filter["user"]) > 3) ||
109 ($this->filter["title"] && strlen($this->filter["title"]) > 3) ||
110 $this->filter["acl_date"] ||
111 $this->filter["obj_type"] ||
112 $this->filter["acl_type"] ||
113 $this->filter["crsgrp"])
114 {
115 */
116
117 // #16630
118 $this->importData();
119 include_once "Services/User/classes/class.ilUserUtil.php";
120 return;
121 } else {
122 ilUtil::sendInfo($lng->txt("wsp_shared_mandatory_filter_info"));
123 }
124
125 // initial state: show filters only
126 $this->disable("header");
127 $this->disable("content");
128 }
129
130 public function initFilter()
131 {
135
136 include_once "Services/Membership/classes/class.ilParticipants.php";
137 $this->crs_ids = ilParticipants::_getMembershipByType($ilUser->getId(), "crs");
138 $this->grp_ids = ilParticipants::_getMembershipByType($ilUser->getId(), "grp");
139
140 $lng->loadLanguageModule("search");
141
142 $item = $this->addFilterItemByMetaType("user", self::FILTER_TEXT, false, $lng->txt("wsp_shared_user_filter"));
143 $this->filter["user"] = $item->getValue();
144
145 // incoming back link (shared)
146 if ((int) $_REQUEST["shr_id"] &&
147 !is_array($_SESSION["form_" . $this->getId()]) && // #17747
148 !$this->filter["user"]) {
149 $this->filter["user"] = ilObjUser::_lookupName((int) $_REQUEST["shr_id"]);
150 $this->filter["user"] = $this->filter["user"]["login"];
151 $item->setValue($this->filter["user"]);
152 }
153
154 $item = $this->addFilterItemByMetaType("title", self::FILTER_TEXT, false, $lng->txt("wsp_shared_title"));
155 $this->filter["title"] = $item->getValue();
156
157 $item = $this->addFilterItemByMetaType("acl_date", self::FILTER_DATE, false, $lng->txt("wsp_shared_date_filter"));
158 $this->filter["acl_date"] = $item->getDate();
159
160 if (!$this->portfolio_mode) {
161 // see ilPersonalWorkspaceGUI::renderToolbar
162 $options = array("" => $lng->txt("search_any"));
163 $settings_map = array("blog" => "blogs",
164 "file" => "files");
165 // see ilObjWorkspaceFolderTableGUI
166 foreach (array("file", "blog") as $type) {
167 if (isset($settings_map[$type]) && $ilSetting->get("disable_wsp_" . $settings_map[$type])) {
168 continue;
169 }
170 $options[$type] = $lng->txt("wsp_type_" . $type);
171 }
172 } else {
173 $options = array("prtf" => $lng->txt("obj_prtf"));
174 }
175 if (sizeof($options)) {
176 asort($options);
177 $item = $this->addFilterItemByMetaType("obj_type", self::FILTER_SELECT, false, $lng->txt("wsp_shared_object_type"));
178 $item->setOptions($options);
179 $this->filter["obj_type"] = $item->getValue();
180 }
181
182 // see ilWorkspaceAccessGUI::share
183 $options = array();
184 $options["user"] = $lng->txt("wsp_set_permission_single_user");
185
186 if (sizeof($this->grp_ids)) {
187 $options["group"] = $lng->txt("wsp_set_permission_group");
188 }
189
190 if (sizeof($this->crs_ids)) {
191 $options["course"] = $lng->txt("wsp_set_permission_course");
192 }
193
194 if (!$this->handler->hasRegisteredPermission($this->parent_node_id)) {
195 $options["registered"] = $lng->txt("wsp_set_permission_registered");
196 }
197
198 if ($ilSetting->get("enable_global_profiles")) {
199 if (!$this->handler->hasGlobalPasswordPermission($this->parent_node_id)) {
200 $options["password"] = $this->lng->txt("wsp_set_permission_all_password");
201 }
202
203 if (!$this->handler->hasGlobalPermission($this->parent_node_id)) {
204 $options["all"] = $this->lng->txt("wsp_set_permission_all");
205 }
206 }
207
208 if (sizeof($options)) {
209 // asort($options);
210 $item = $this->addFilterItemByMetaType("acl_type", self::FILTER_SELECT, false, $lng->txt("wsp_shared_type"));
211 $item->setOptions(array("" => $lng->txt("search_any")) + $options);
212 $this->filter["acl_type"] = $item->getValue();
213 }
214
215 if (sizeof($this->crs_ids) || sizeof($this->grp_ids)) {
216 $options = array();
217 foreach ($this->crs_ids as $crs_id) {
218 $options[$crs_id] = $lng->txt("obj_crs") . " " . ilObject::_lookupTitle($crs_id);
219 }
220 foreach ($this->grp_ids as $grp_id) {
221 $options[$grp_id] = $lng->txt("obj_grp") . " " . ilObject::_lookupTitle($grp_id);
222 }
223 asort($options);
224 $item = $this->addFilterItemByMetaType("crsgrp", self::FILTER_SELECT, false, $lng->txt("wsp_shared_member_filter"));
225 $item->setOptions(array("" => $lng->txt("search_any")) + $options);
226 $this->filter["crsgrp"] = $item->getValue();
227 }
228 }
229
230 protected function importData()
231 {
233
234 $data = array();
235
236 $user_data = array();
237
238 $objects = $this->handler->findSharedObjects($this->filter, $this->crs_ids, $this->grp_ids);
239 if ($objects) {
240 foreach ($objects as $wsp_id => $item) {
241 if (!isset($user_data[$item["owner"]])) {
242 $user_data[$item["owner"]] = ilObjUser::_lookupName($item["owner"]);
243 }
244
245 // #18535 - deleted user?
246 if (!$user_data[$item["owner"]]["login"]) {
247 continue;
248 }
249
250 $data[] = array(
251 "wsp_id" => $wsp_id,
252 "obj_id" => $item["obj_id"],
253 "type" => $item["type"],
254 "obj_type" => $lng->txt("wsp_type_" . $item["type"]),
255 "title" => $item["title"],
256 "owner_id" => $item["owner"],
257 "lastname" => $user_data[$item["owner"]]["lastname"],
258 "firstname" => $user_data[$item["owner"]]["firstname"],
259 "login" => $user_data[$item["owner"]]["login"],
260 "acl_type" => $item["acl_type"],
261 "acl_date" => $item["acl_date"]
262 );
263 }
264 }
265
266 $this->setData($data);
267
268 include_once('./Services/Link/classes/class.ilLink.php');
269 }
270
276 protected function fillRow($node)
277 {
280
281 $this->tpl->setVariable("LASTNAME", $node["lastname"]);
282 $this->tpl->setVariable("FIRSTNAME", $node["firstname"]);
283 $this->tpl->setVariable("LOGIN", $node["login"]);
284
285 $this->tpl->setVariable("TITLE", $node["title"]);
286
287 if (!$this->portfolio_mode) {
288 $this->tpl->setVariable("TYPE", $node["obj_type"]);
289 $this->tpl->setVariable("ICON_ALT", $node["obj_type"]);
290 $this->tpl->setVariable("ICON", ilObject::_getIcon("", "tiny", $node["type"]));
291
292 $url = $this->handler->getGotoLink($node["wsp_id"], $node["obj_id"]);
293 } else {
294 $url = ilLink::_getStaticLink($node["obj_id"], "prtf", true);
295 }
296 $this->tpl->setVariable("URL_TITLE", $url);
297
298 $this->tpl->setVariable(
299 "ACL_DATE",
301 );
302
303 asort($node["acl_type"]);
304 foreach ($node["acl_type"] as $obj_id) {
305 // see ilWorkspaceAccessTableGUI
306 switch ($obj_id) {
308 $title = $icon_alt = $this->lng->txt("wsp_set_permission_registered");
309 $type = "registered";
310 break;
311
313 $title = $icon_alt = $this->lng->txt("wsp_set_permission_all_password");
314 $type = "all_password";
315 break;
316
318 $title = $icon_alt = $this->lng->txt("wsp_set_permission_all");
319 $type = "all_password";
320 break;
321
322 default:
323 $type = ilObject::_lookupType($obj_id);
324 /*
325 $icon = ilUtil::getTypeIconPath($type, null, "tiny");
326 $icon_alt = $this->lng->txt("obj_".$type);
327 */
328 if ($type != "usr") {
330 } else {
331 $title = ilUserUtil::getNamePresentation($obj_id, false, true);
332 }
333 break;
334 }
335
336 /* #17758
337 if($icon)
338 {
339 $this->tpl->setCurrentBlock("acl_type_icon_bl");
340 $this->tpl->setVariable("ACL_ICON", $icon);
341 $this->tpl->setVariable("ACL_ICON_ALT", $icon_alt);
342 $this->tpl->parseCurrentBlock();
343 }
344 */
345
346 $this->tpl->setCurrentBlock("acl_type_bl");
347 $this->tpl->setVariable("ACL_TYPE", $title);
348 $this->tpl->parseCurrentBlock();
349 }
350
351 if (!$this->portfolio_mode) {
352 // files may be copied to own workspace
353 if ($node["type"] == "file") {
354 $ilCtrl->setParameter(
355 $this->parent_obj,
356 "wsp_id",
357 $this->parent_node_id
358 );
359 $ilCtrl->setParameter(
360 $this->parent_obj,
361 "item_ref_id",
362 $node["wsp_id"]
363 );
364 $url = $ilCtrl->getLinkTarget($this->parent_obj, "copyshared");
365
366 $this->tpl->setCurrentBlock("action_bl");
367 $this->tpl->setVariable("URL_ACTION", $url);
368 $this->tpl->setVariable("ACTION", $lng->txt("copy"));
369 $this->tpl->parseCurrentBlock();
370 } else {
371 $this->tpl->touchBlock("action_col_bl");
372 }
373 }
374 }
375}
user()
Definition: user.php:4
$_SESSION["AccountId"]
An exception for terminatinating execution or to throw for unit testing.
const IL_CAL_UNIX
static formatDate(ilDateTime $date, $a_skip_day=false, $a_include_wd=false, $include_seconds=false)
Format a date @access public.
@classDescription Date and time handling
static _lookupName($a_user_id)
lookup user name
static _lookupTitle($a_id)
lookup object title
static _lookupType($a_id, $a_reference=false)
lookup object type
static _getMembershipByType($a_usr_id, $a_type, $a_only_member_role=false)
get membership by type Get course or group membership
Class ilTable2GUI.
setDisableFilterHiding($a_val=true)
Set disable filter hiding.
setTitle($a_title, $a_icon=0, $a_icon_alt=0)
Set title and title icon.
getId()
Get element id.
setData($a_data)
set table data @access public
setResetCommand($a_val, $a_caption=null)
Set reset filter command.
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.
addFilterItemByMetaType($id, $type=self::FILTER_TEXT, $a_optional=false, $caption=null)
Add filter by standard type.
setId($a_val)
Set id.
setFormAction($a_form_action, $a_multipart=false)
Set Form action parameter.
setDefaultOrderDirection($a_defaultorderdirection)
Set Default order direction.
setFilterCommand($a_val, $a_caption=null)
Set filter command.
disable($a_module_name)
diesables particular modules of table
static getNamePresentation( $a_user_id, $a_user_image=false, $a_profile_link=false, $a_profile_back_link="", $a_force_first_lastname=false, $a_omit_login=false, $a_sortable=true, $a_return_data_array=false, $a_ctrl_path="ilpublicuserprofilegui")
Default behaviour is:
static sendInfo($a_info="", $a_keep=false)
Send Info Message to Screen.
Workspace share handler table GUI class.
__construct($a_parent_obj, $a_parent_cmd, $a_handler, $a_parent_node_id=null, $a_load_data=false)
Constructor.
global $ilCtrl
Definition: ilias.php:18
global $ilSetting
Definition: privfeed.php:17
$type
$url
global $DIC
Definition: saml.php:7
settings()
Definition: settings.php:2
$ilUser
Definition: imgupload.php:18