ILIAS  release_5-3 Revision v5.3.23-19-g915713cf615
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 
4 include_once('./Services/Table/classes/class.ilTable2GUI.php');
5 require_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
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  {
114  $lng = $this->lng;
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", $row["title"]);
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  {
139  $lng = $this->lng;
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  {
205  $tree = $this->tree;
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 }
static _getIcon( $a_obj_id="", $a_size="big", $a_type="", $a_offline=false)
Get icon for repository item.
setDefaultOrderField($a_defaultorderfield)
Set Default order field.
static lookupTxtById($plugin_id, $lang_var)
global $DIC
Definition: saml.php:7
__construct($a_parent_obj, $a_parent_cmd, $a_user_id, array $a_data=null)
if(!array_key_exists('StateId', $_REQUEST)) $id
setId($a_val)
Set id.
static _getAllReferences($a_id)
get all reference ids of object
global $ilCtrl
Definition: ilias.php:18
setDefaultOrderDirection($a_defaultorderdirection)
Set Default order direction.
$counter
$a_type
Definition: workflow.php:92
Class ilTable2GUI.
setDisableFilterHiding($a_val=true)
Set disable filter hiding.
setRowTemplate($a_template, $a_template_dir="")
Set row template.
Create styles array
The data for the language used.
static _lookupType($a_id, $a_reference=false)
lookup object type
User interface class for advanced drop-down selection lists.
setFormAction($a_form_action, $a_multipart=false)
Set Form action parameter.
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.