ILIAS  release_5-2 Revision v5.2.25-18-g3f80b828510
class.ilBadgeUserTableGUI.php
Go to the documentation of this file.
1<?php
2/* Copyright (c) 1998-2009 ILIAS open source, Extended GPL, see docs/LICENSE */
3
4include_once("Services/Table/classes/class.ilTable2GUI.php");
5
15{
16 protected $award_badge; // [ilBadge]
17 protected $do_parent; // [bool]
18
19 function __construct($a_parent_obj, $a_parent_cmd = "", $a_parent_ref_id, ilBadge $a_award_bagde = null, $a_parent_obj_id = null, $a_restrict_badge_id = null)
20 {
21 global $ilCtrl, $lng;
22
23 $this->setId("bdgusr");
24 $this->award_badge = $a_award_bagde;
25 $this->do_parent = false;
26
27 $parent_type = ilObject::_lookupType($a_parent_ref_id, true);
28 if(in_array($parent_type, array("grp", "crs")))
29 {
30 $this->do_parent = (!$a_parent_obj_id && !$this->award_badge);
31 }
32
33 parent::__construct($a_parent_obj, $a_parent_cmd);
34
35 $this->setLimit(9999);
36
37 if($this->award_badge)
38 {
39 $this->setTitle($lng->txt("badge_award_badge").": ".$a_award_bagde->getTitle());
40 $this->setDescription($a_award_bagde->getDescription());
41
42 $this->addColumn("", "", 1);
43
44 $this->setFormAction($ilCtrl->getFormAction($a_parent_obj));
45 $this->addMultiCommand("assignBadge", $lng->txt("badge_award_badge"));
46 $this->addMultiCommand("confirmDeassignBadge", $lng->txt("badge_remove_badge"));
47 }
48 else
49 {
50 $parent = "";
51 if($a_parent_obj_id)
52 {
53 $title = ilObject::_lookupTitle($a_parent_obj_id);
54 if(!$title)
55 {
56 include_once "Services/Object/classes/class.ilObjectDataDeletionLog.php";
57 $title = ilObjectDataDeletionLog::get($a_parent_obj_id);
58 if($title)
59 {
60 $title = $title["title"];
61 }
62 }
63 if($a_restrict_badge_id)
64 {
65 include_once("Services/Badge/classes/class.ilBadge.php");
66 $badge = new ilBadge($a_restrict_badge_id);
67 $title .= " - ".$badge->getTitle();
68 }
69 $parent = $title.": ";
70 }
71 $this->setTitle($parent.$lng->txt("users"));
72 }
73
74 $this->addColumn($lng->txt("name"), "name");
75 $this->addColumn($lng->txt("login"), "login");
76 $this->addColumn($lng->txt("type"), "type");
77 $this->addColumn($lng->txt("title"), "title");
78 $this->addColumn($lng->txt("badge_issued_on"), "issued");
79
80 if($this->do_parent)
81 {
82 $this->addColumn($lng->txt("object"), "parent_id");
83 }
84
85 $this->setDefaultOrderField("name");
86
87 $this->setRowTemplate("tpl.user_row.html", "Services/Badge");
88
89 $this->setFormAction($ilCtrl->getFormAction($a_parent_obj));
90 $this->setFilterCommand("apply".ucfirst($this->getParentCmd()));
91 $this->setResetCommand("reset".ucfirst($this->getParentCmd()));
92
93 $this->initFilter();
94
95 $this->getItems($a_parent_ref_id, $this->award_badge, $a_parent_obj_id, $a_restrict_badge_id);
96 }
97
98 public function initFilter()
99 {
100 global $lng;
101
102 $name = $this->addFilterItemByMetaType("name", self::FILTER_TEXT, false, $lng->txt("name"));
103 $this->filter["name"] = $name->getValue();
104 }
105
106 function getItems($a_parent_ref_id, ilBadge $a_award_bagde = null, $a_parent_obj_id = null, $a_restrict_badge_id = null)
107 {
108 global $tree;
109
110 $data = array();
111
112 if(!$a_parent_obj_id)
113 {
114 $a_parent_obj_id = ilObject::_lookupObjId($a_parent_ref_id);
115 }
116
117 // repository context: walk tree for available users
118 if($a_parent_ref_id)
119 {
120 $user_ids = ilBadgeHandler::getInstance()->getUserIds($a_parent_ref_id, $a_parent_obj_id);
121 }
122
123 $obj_ids = array($a_parent_obj_id);
124
125 // add sub-items
126 if($this->do_parent)
127 {
128 foreach($tree->getSubTree($tree->getNodeData($a_parent_ref_id)) as $node)
129 {
130 $obj_ids[] = $node["obj_id"];
131 }
132 }
133
134 include_once "Services/Badge/classes/class.ilBadge.php";
135 include_once "Services/Badge/classes/class.ilBadgeAssignment.php";
136 $badges = $assignments = array();
137 foreach($obj_ids as $obj_id)
138 {
139 foreach(ilBadge::getInstancesByParentId($obj_id) as $badge)
140 {
141 $badges[$badge->getId()] = $badge;
142 }
143
144 foreach(ilBadgeAssignment::getInstancesByParentId($obj_id) as $ass)
145 {
146 if($a_restrict_badge_id &&
147 $a_restrict_badge_id != $ass->getBadgeId())
148 {
149 continue;
150 }
151
152 // when awarding we only want to see the current badge
153 if($this->award_badge &&
154 $ass->getBadgeId() != $this->award_badge->getId())
155 {
156 continue;
157 }
158
159 $assignments[$ass->getUserId()][] = $ass;
160 }
161 }
162
163 // administration context: show only existing assignments
164 if(!$user_ids)
165 {
166 $user_ids = array_keys($assignments);
167 }
168
169 include_once "Services/Badge/classes/class.ilBadgeRenderer.php";
170 include_once "Services/User/classes/class.ilUserQuery.php";
171 $tmp["set"] = array();
172 if (count($user_ids) > 0)
173 {
174 $uquery = new ilUserQuery();
175 $uquery->setLimit(9999);
176 $uquery->setUserFilter($user_ids);
177
178 if ($this->filter["name"])
179 {
180 $uquery->setTextFilter($this->filter["name"]);
181 }
182
183 $tmp = $uquery->query();
184 }
185 foreach($tmp["set"] as $user)
186 {
187 // add 1 entry for each badge
188 if(array_key_exists($user["usr_id"], $assignments))
189 {
190 foreach($assignments[$user["usr_id"]] as $user_ass)
191 {
192 $idx = $user_ass->getBadgeId()."-".$user["usr_id"];
193
194 $badge = $badges[$user_ass->getBadgeId()];
195
196 if($this->do_parent)
197 {
198 $parent = $badge->getParentMeta();
199 }
200
201 $data[$idx] = array(
202 "user_id" => $user["usr_id"],
203 "name" => $user["lastname"].", ".$user["firstname"],
204 "login" => $user["login"],
205 "type" => ilBadge::getExtendedTypeCaption($badge->getTypeInstance()),
206 "title" => $badge->getTitle(),
207 "issued" => $user_ass->getTimestamp(),
208 "parent_id" => $parent["id"],
209 "parent_meta" => $parent
210 );
211 }
212 }
213 // no badge yet, add dummy entry (for manual awarding)
214 else if($this->award_badge)
215 {
216 $idx = "0-".$user["usr_id"];
217
218 $data[$idx] = array(
219 "user_id" => $user["usr_id"],
220 "name" => $user["lastname"].", ".$user["firstname"],
221 "login" => $user["login"],
222 "type" => "",
223 "title" => "",
224 "issued" => "",
225 "parent_id" => ""
226 );
227 }
228 }
229
230 $this->setData($data);
231 }
232
233 protected function fillRow($a_set)
234 {
235 global $lng;
236
237 if($this->award_badge)
238 {
239 $this->tpl->setVariable("VAL_ID", $a_set["user_id"]);
240 }
241
242 $this->tpl->setVariable("TXT_NAME", $a_set["name"]);
243 $this->tpl->setVariable("TXT_LOGIN", $a_set["login"]);
244 $this->tpl->setVariable("TXT_TYPE", $a_set["type"]);
245 $this->tpl->setVariable("TXT_TITLE", $a_set["title"]);
246 $this->tpl->setVariable("TXT_ISSUED", $a_set["issued"]
248 : "");
249
250 if($a_set["parent_id"])
251 {
252 $parent = $a_set["parent_meta"];
253 $this->tpl->setVariable("PARENT", $parent["title"]);
254 $this->tpl->setVariable("PARENT_TYPE", $lng->txt("obj_".$parent["type"]));
255 $this->tpl->setVariable("PARENT_ICON",
256 ilObject::_getIcon($parent["id"], "big", $parent["type"]));
257 }
258 }
259}
An exception for terminatinating execution or to throw for unit testing.
const IL_CAL_UNIX
static getInstancesByParentId($a_parent_obj_id)
static getInstance()
Constructor.
TableGUI class for badge user listing.
__construct($a_parent_obj, $a_parent_cmd="", $a_parent_ref_id, ilBadge $a_award_bagde=null, $a_parent_obj_id=null, $a_restrict_badge_id=null)
getItems($a_parent_ref_id, ilBadge $a_award_bagde=null, $a_parent_obj_id=null, $a_restrict_badge_id=null)
fillRow($a_set)
Standard Version of Fill Row.
static getInstancesByParentId($a_parent_id, array $a_filter=null)
static getExtendedTypeCaption(ilBadgeType $a_type)
static formatDate(ilDateTime $date)
Format a date @access public.
@classDescription Date and time handling
static _lookupObjId($a_id)
static _lookupTitle($a_id)
lookup object title
static _getIcon($a_obj_id="", $a_size="big", $a_type="", $a_offline=false)
Get icon for repository item.
static _lookupType($a_id, $a_reference=false)
lookup object type
Class ilTable2GUI.
getParentCmd()
Get parent command.
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.
setTitle($a_title, $a_icon=0, $a_icon_alt=0)
Set title and title icon.
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.
setLimit($a_limit=0, $a_default_limit=0)
set max.
addMultiCommand($a_cmd, $a_text)
Add Command button.
setDefaultOrderField($a_defaultorderfield)
Set Default order field.
setId($a_val)
Set id.
setDescription($a_val)
Set description.
setFormAction($a_form_action, $a_multipart=false)
Set Form action parameter.
addFilterItemByMetaType($id, $type=self::FILTER_TEXT, $a_optional=false, $caption=NULL)
Add filter by standard type.
setFilterCommand($a_val, $a_caption=null)
Set filter command.
User query class.
global $ilCtrl
Definition: ilias.php:18
global $lng
Definition: privfeed.php:17