ILIAS  release_5-1 Revision 5.0.0-5477-g43f3e3fab5f
class.ilGroupParticipantsTableGUI.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/Membership/classes/class.ilParticipantsTableGUI.php';
14{
15 protected $type = 'admin';
16 protected $role = 0;
17 protected $show_learning_progress = false;
18 protected $show_edit_link = TRUE;
19
20
28 public function __construct(
29 $a_parent_obj,$a_type = 'admin',
30 $show_content = true,
32 $a_role_id = 0
33 )
34 {
35 global $lng,$ilCtrl;
36
37 $this->show_learning_progress = $show_learning_progress;
38
39 $this->lng = $lng;
40 $this->lng->loadLanguageModule('grp');
41 $this->lng->loadLanguageModule('trac');
42 $this->lng->loadLanguageModule('rbac');
43
44 $this->ctrl = $ilCtrl;
45
46 $this->type = $a_type;
47 $this->role = $a_role_id;
48
49 include_once('./Services/PrivacySecurity/classes/class.ilPrivacySettings.php');
50 $this->privacy = ilPrivacySettings::_getInstance();
51
52 switch($this->type)
53 {
54 case 'admin':
55 $this->setPrefix('admin');
56 break;
57 case 'member':
58 $this->setPrefix('member');
59 break;
60 default:
61 $this->setPrefix('role');
62 break;
63 }
64
65 $this->setId('grp_'.$a_type.'_'.$this->getRole().'_'.$a_parent_obj->object->getId());
66 parent::__construct($a_parent_obj,'members');
67
68 $this->initSettings();
69
70 $this->setFormName('participants');
71
72 $this->addColumn('','f',"1");
73 $this->addColumn($this->lng->txt('name'),'lastname','20%');
74
75 $all_cols = $this->getSelectableColumns();
76 foreach($this->getSelectedColumns() as $col)
77 {
78 $this->addColumn($all_cols[$col]['txt'],$col);
79 }
80
81 if($this->show_learning_progress)
82 {
83 $this->addColumn($this->lng->txt('learning_progress'),'progress');
84 }
85
86 if($this->privacy->enabledGroupAccessTimes())
87 {
88 $this->addColumn($this->lng->txt('last_access'),'access_time_unix');
89 }
90 if($this->type == 'admin')
91 {
92 $this->setSelectAllCheckbox('admins');
93 $this->addColumn($this->lng->txt('grp_notification'),'notification');
94 $this->addCommandButton('updateStatus',$this->lng->txt('save'));
95 }
96 elseif($this->type == 'member')
97 {
98 $this->setSelectAllCheckbox('members');
99 }
100 else
101 {
102 $this->setSelectAllCheckbox('roles');
103 }
104 $this->addColumn($this->lng->txt(''),'optional');
105 $this->setDefaultOrderField('lastname');
106
107 $this->setRowTemplate("tpl.show_participants_row.html","Modules/Group");
108
109 $this->setShowRowsSelector(true);
110
111 if($show_content)
112 {
113 $this->enable('sort');
114 $this->enable('header');
115 $this->enable('numinfo');
116 $this->enable('select_all');
117 }
118 else
119 {
120 $this->disable('content');
121 $this->disable('header');
122 $this->disable('footer');
123 $this->disable('numinfo');
124 $this->disable('select_all');
125 }
126 }
127
132 public function getRole()
133 {
134 return $this->role;
135 }
136
137
138
146 public function fillRow($a_set)
147 {
148 global $ilUser,$ilAccess;
149
150 $this->tpl->setVariable('VAL_ID',$a_set['usr_id']);
151 $this->tpl->setVariable('VAL_NAME',$a_set['lastname'].', '.$a_set['firstname']);
152 if(!$ilAccess->checkAccessOfUser($a_set['usr_id'],'read','',$this->getParentObject()->object->getRefId()) and
153 is_array($info = $ilAccess->getInfo()))
154 {
155 $this->tpl->setCurrentBlock('access_warning');
156 $this->tpl->setVariable('PARENT_ACCESS',$info[0]['text']);
157 $this->tpl->parseCurrentBlock();
158 }
159
160 if(!ilObjUser::_lookupActive($a_set['usr_id']))
161 {
162 $this->tpl->setCurrentBlock('access_warning');
163 $this->tpl->setVariable('PARENT_ACCESS',$this->lng->txt('usr_account_inactive'));
164 $this->tpl->parseCurrentBlock();
165 }
166
167
168 foreach($this->getSelectedColumns() as $field)
169 {
170 switch($field)
171 {
172 case 'gender':
173 $a_set['gender'] = $a_set['gender'] ? $this->lng->txt('gender_'.$a_set['gender']) : '';
174 $this->tpl->setCurrentBlock('custom_fields');
175 $this->tpl->setVariable('VAL_CUST',$a_set[$field]);
176 $this->tpl->parseCurrentBlock();
177 break;
178
179 case 'birthday':
180 $a_set['birthday'] = $a_set['birthday'] ? ilDatePresentation::formatDate(new ilDate($a_set['birthday'],IL_CAL_DATE)) : $this->lng->txt('no_date');
181 $this->tpl->setCurrentBlock('custom_fields');
182 $this->tpl->setVariable('VAL_CUST',$a_set[$field]);
183 $this->tpl->parseCurrentBlock();
184 break;
185
186 case 'consultation_hour':
187 $this->tpl->setCurrentBlock('custom_field');
188 $dts = array();
189 foreach((array) $a_set['consultation_hours'] as $ch)
190 {
192 new ilDateTime($ch['dt'],IL_CAL_UNIX),
193 new ilDateTime($ch['dtend'],IL_CAL_UNIX)
194 );
195 if($ch['explanation'])
196 {
197 $tmp .= ' ' . $ch['explanation'];
198 }
199 $dts[] = $tmp;
200 }
201 $dt_string = implode('<br />', $dts);
202 $this->tpl->setVariable('VAL_CUST',$dt_string) ;
203 $this->tpl->parseCurrentBlock();
204 break;
205
206 case 'prtf':
207 $tmp = array();
208 if(is_array($a_set['prtf']))
209 {
210 foreach($a_set['prtf'] as $prtf_url => $prtf_txt)
211 {
212 $tmp[] = '<a href="'.$prtf_url.'">'.$prtf_txt.'</a>';
213 }
214 }
215 $this->tpl->setVariable('VAL_CUST', implode('<br />', $tmp)) ;
216 break;
217
218 case 'odf_last_update':
219 $this->tpl->setVariable('VAL_EDIT_INFO',(string) $a_set['odf_info_txt']);
220 break;
221
222 default:
223 $this->tpl->setCurrentBlock('custom_fields');
224 $this->tpl->setVariable('VAL_CUST',isset($a_set[$field]) ? (string) $a_set[$field] : '');
225 $this->tpl->parseCurrentBlock();
226 break;
227 }
228 }
229
230 if($this->privacy->enabledGroupAccessTimes())
231 {
232 $this->tpl->setVariable('VAL_ACCESS',$a_set['access_time']);
233 }
234
235 if($this->show_learning_progress)
236 {
237 $this->tpl->setCurrentBlock('lp');
238 switch($a_set['progress'])
239 {
241 $this->tpl->setVariable('LP_STATUS_ALT',$this->lng->txt($a_set['progress']));
242 $this->tpl->setVariable('LP_STATUS_PATH',ilUtil::getImagePath('scorm/complete.svg'));
243 break;
244
246 $this->tpl->setVariable('LP_STATUS_ALT',$this->lng->txt($a_set['progress']));
247 $this->tpl->setVariable('LP_STATUS_PATH',ilUtil::getImagePath('scorm/incomplete.svg'));
248 break;
249
251 $this->tpl->setVariable('LP_STATUS_ALT',$this->lng->txt($a_set['progress']));
252 $this->tpl->setVariable('LP_STATUS_PATH',ilUtil::getImagePath('scorm/not_attempted.svg'));
253 break;
254
256 $this->tpl->setVariable('LP_STATUS_ALT',$this->lng->txt($a_set['progress']));
257 $this->tpl->setVariable('LP_STATUS_PATH',ilUtil::getImagePath('scorm/failed.svg'));
258 break;
259
260 }
261 $this->tpl->parseCurrentBlock();
262 }
263
264
265 if($this->type == 'admin')
266 {
267 $this->tpl->setVariable('VAL_POSTNAME','admins');
268 $this->tpl->setVariable('VAL_NOTIFICATION_ID',$a_set['usr_id']);
269 $this->tpl->setVariable('VAL_NOTIFICATION_CHECKED',$a_set['notification'] ? 'checked="checked"' : '');
270 }
271 elseif($this->type == 'member')
272 {
273 $this->tpl->setVariable('VAL_POSTNAME','members');
274 }
275 else
276 {
277 $this->tpl->setVariable('VAL_POSTNAME','roles');
278 }
279
280 $this->showActionLinks($a_set);
281
282
283 $this->tpl->setVariable('VAL_LOGIN',$a_set['login']);
284 }
285
291 public function parse($a_user_data)
292 {
293 include_once './Services/User/classes/class.ilUserQuery.php';
294
295 $additional_fields = $this->getSelectedColumns();
296 unset($additional_fields["firstname"]);
297 unset($additional_fields["lastname"]);
298 unset($additional_fields["last_login"]);
299 unset($additional_fields["access_until"]);
300 unset($additional_fields['consultation_hour']);
301 unset($additional_fields['prtf']);
302
303 switch($this->type)
304 {
305 case 'admin':
306 $part = ilGroupParticipants::_getInstanceByObjId($this->getParentObject()->object->getId())->getAdmins();
307 break;
308 case 'member':
309 $part = $GLOBALS['rbacreview']->assignedUsers($this->getRole());
310 break;
311 case 'role':
312 $part = $GLOBALS['rbacreview']->assignedUsers($this->getRole());
313 break;
314 }
315
316 $udf_ids = $usr_data_fields = $odf_ids = array();
317 foreach($additional_fields as $field)
318 {
319 if(substr($field,0,3) == 'udf')
320 {
321 $udf_ids[] = substr($field,4);
322 continue;
323 }
324 if(substr($field,0,3) == 'odf')
325 {
326 $odf_ids[] = substr($field,4);
327 continue;
328 }
329
330 $usr_data_fields[] = $field;
331 }
332
334 'login',
335 'ASC',
336 0,
337 9999,
338 '',
339 '',
340 null,
341 false,
342 false,
343 0,
344 0,
345 null,
346 $usr_data_fields,
347 $part
348 );
349 // Custom user data fields
350 if($udf_ids)
351 {
352 include_once './Services/User/classes/class.ilUserDefinedData.php';
353 $data = ilUserDefinedData::lookupData($part, $udf_ids);
354 foreach($data as $usr_id => $fields)
355 {
356 if(!$this->checkAcceptance($usr_id))
357 {
358 continue;
359 }
360
361 foreach($fields as $field_id => $value)
362 {
363 $a_user_data[$usr_id]['udf_'.$field_id] = $value;
364 }
365 }
366 }
367 // Object specific user data fields
368 if($odf_ids)
369 {
370 include_once './Modules/Course/classes/Export/class.ilCourseUserData.php';
371 $data = ilCourseUserData::_getValuesByObjId($this->getParentObject()->object->getId());
372 foreach($data as $usr_id => $fields)
373 {
374 if(!$this->checkAcceptance($usr_id))
375 {
376 continue;
377 }
378
379 foreach($fields as $field_id => $value)
380 {
381 if($a_user_data[$usr_id])
382 {
383 $a_user_data[$usr_id]['odf_'.$field_id] = $value;
384 }
385 }
386 }
387 // add last edit date
388 include_once './Services/Membership/classes/class.ilObjectCustomUserFieldHistory.php';
389 foreach(ilObjectCustomUserFieldHistory::lookupEntriesByObjectId($this->getParentObject()->object->getId()) as $usr_id => $edit_info)
390 {
391 if(!isset($a_user_data[$usr_id]))
392 {
393 continue;
394 }
395
396 include_once './Services/PrivacySecurity/classes/class.ilPrivacySettings.php';
397 if($usr_id == $edit_info['update_user'])
398 {
399 $a_user_data[$usr_id]['odf_last_update'] = '';
400 $a_user_data[$usr_id]['odf_info_txt'] = $GLOBALS['lng']->txt('cdf_edited_by_self');
401 if(ilPrivacySettings::_getInstance()->enabledAccessTimesByType($this->getParentObject()->object->getType()))
402 {
403 $a_user_data[$usr_id]['odf_last_update'] .= ('_'.$edit_info['editing_time']->get(IL_CAL_UNIX));
404 $a_user_data[$usr_id]['odf_info_txt'] .= (', '.ilDatePresentation::formatDate($edit_info['editing_time']));
405 }
406 }
407 else
408 {
409 $a_user_data[$usr_id]['odf_last_update'] = $edit_info['edit_user'];
410 $a_user_data[$usr_id]['odf_last_update'] .= ('_'.$edit_info['editing_time']->get(IL_CAL_UNIX));
411
412 $name = ilObjUser::_lookupName($edit_info['update_user']);
413 $a_user_data[$usr_id]['odf_info_txt'] = ($name['firstname'].' '.$name['lastname'].', '.ilDatePresentation::formatDate($edit_info['editing_time']));
414 }
415 }
416 }
417 foreach($usr_data['set'] as $user)
418 {
419 // Check acceptance
420 if(!$this->checkAcceptance($user['usr_id']))
421 {
422 continue;
423 }
424 // DONE: accepted
425 foreach($usr_data_fields as $field)
426 {
427 $a_user_data[$user['usr_id']][$field] = $user[$field] ? $user[$field] : '';
428 }
429 }
430 // consultation hours
431 if($this->isColumnSelected('consultation_hour'))
432 {
433 include_once './Services/Booking/classes/class.ilBookingEntry.php';
434 foreach(ilBookingEntry::lookupManagedBookingsForObject($this->getParentObject()->object->getId(), $GLOBALS['ilUser']->getId()) as $buser => $booking)
435 {
436 if(isset($a_user_data[$buser]))
437 {
438 $a_user_data[$buser]['consultation_hour'] = $booking[0]['dt'];
439 $a_user_data[$buser]['consultation_hour_end'] = $booking[0]['dtend'];
440 $a_user_data[$buser]['consultation_hours'] = $booking;
441 }
442 }
443 }
444
445 return $this->setData($a_user_data);
446 }
447}
448?>
const IL_CAL_DATE
const IL_CAL_UNIX
static lookupManagedBookingsForObject($a_obj_id, $a_usr_id)
Lookup bookings for own and managed consultation hours of an object.
static _getValuesByObjId($a_obj_id)
Get values by obj_id (for all users)
static formatPeriod(ilDateTime $start, ilDateTime $end)
Format a period of two date Shows: 14.
static formatDate(ilDateTime $date)
Format a date @access public.
@classDescription Date and time handling
Class for single dates.
__construct( $a_parent_obj, $a_type='admin', $show_content=true, $show_learning_progress=false, $a_role_id=0)
Constructor.
static _getInstanceByObjId($a_obj_id)
Get singleton instance.
const LP_STATUS_COMPLETED
const LP_STATUS_FAILED
const LP_STATUS_NOT_ATTEMPTED
const LP_STATUS_IN_PROGRESS
_lookupActive($a_usr_id)
Check user account active.
static _lookupName($a_user_id)
lookup user name
static lookupEntriesByObjectId($a_obj_id)
Get entries by obj_id @global type $ilDB.
getSelectableColumns()
Get selectable columns.
showActionLinks($a_set)
show edit links
checkAcceptance($a_usr_id)
Check acceptance.
static _getInstance()
Get instance of ilPrivacySettings.
getSelectedColumns()
Get selected columns.
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.
setShowRowsSelector($a_value)
Toggle rows-per-page selector.
getParentObject()
Get parent object.
setPrefix($a_prefix)
set prefix for sort and offset fields (if you have two or more tables on a page that you want to sort...
setData($a_data)
set table data @access public
setRowTemplate($a_template, $a_template_dir="")
Set row template.
setFormName($a_formname)
Set Form name.
setDefaultOrderField($a_defaultorderfield)
Set Default order field.
setSelectAllCheckbox($a_select_all_checkbox)
Set the name of the checkbox that should be toggled with a select all button.
setId($a_val)
Set id.
isColumnSelected($a_col)
Is given column selected?
addCommandButton($a_cmd, $a_text, $a_onclick='', $a_id="", $a_class=null)
Add Command button.
disable($a_module_name)
diesables particular modules of table
enable($a_module_name)
enables particular modules of table
static lookupData($a_user_ids, $a_field_ids)
Lookup data.
static getUserListData($a_order_field, $a_order_dir, $a_offset, $a_limit, $a_string_filter="", $a_activation_filter="", $a_last_login_filter=null, $a_limited_access_filter=false, $a_no_courses_filter=false, $a_course_group_filter=0, $a_role_filter=0, $a_user_folder_filter=null, $a_additional_fields='', $a_user_filter=null, $a_first_letter="")
Get data for user administration list.
static getImagePath($img, $module_path="", $mode="output", $offline=false)
get image path (for images located in a template directory)
$info
Definition: example_052.php:80
$GLOBALS['PHPCAS_CLIENT']
This global variable is used by the interface class phpCAS.
Definition: CAS.php:276
global $ilCtrl
Definition: ilias.php:18
global $lng
Definition: privfeed.php:40
global $ilUser
Definition: imgupload.php:15