ILIAS  release_5-2 Revision v5.2.25-18-g3f80b828510
class.ilWaitingListTableGUI.php
Go to the documentation of this file.
1<?php
2/*
3 +-----------------------------------------------------------------------------+
4 | ILIAS open source |
5 +-----------------------------------------------------------------------------+
6 | Copyright (c) 1998-2006 ILIAS open source, University of Cologne |
7 | |
8 | This program is free software; you can redistribute it and/or |
9 | modify it under the terms of the GNU General Public License |
10 | as published by the Free Software Foundation; either version 2 |
11 | of the License, or (at your option) any later version. |
12 | |
13 | This program is distributed in the hope that it will be useful, |
14 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
16 | GNU General Public License for more details. |
17 | |
18 | You should have received a copy of the GNU General Public License |
19 | along with this program; if not, write to the Free Software |
20 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
21 +-----------------------------------------------------------------------------+
22*/
23
24include_once('./Services/Table/classes/class.ilTable2GUI.php');
25
26
36{
37 protected $rep_object = null;
38
39 protected $waiting_list = null;
40 protected $wait = array();
41 protected $wait_user_ids = array();
42
43 protected static $all_columns = null;
44 protected static $has_odf_definitions = FALSE;
45
46
54 public function __construct($a_parent_obj,ilObject $rep_object, $waiting_list,$show_content = true)
55 {
56 global $lng,$ilCtrl;
57
58 $this->lng = $lng;
59 $this->lng->loadLanguageModule('grp');
60 $this->lng->loadLanguageModule('crs');
61 $this->lng->loadLanguageModule('sess');
62 $this->lng->loadLanguageModule('ps');
63 $this->ctrl = $ilCtrl;
64
65 $this->rep_object = $rep_object;
66
67 $this->setId('crs_wait_'. $this->getRepositoryObject()->getId());
68 parent::__construct($a_parent_obj,'participants');
69
70 $this->setFormName('waiting');
71 $this->setFormAction($this->ctrl->getFormAction($a_parent_obj,'participants'));
72
73 $this->addColumn('','f',"1");
74 $this->addColumn($this->lng->txt('name'),'lastname','20%');
75
76 $all_cols = $this->getSelectableColumns();
77 foreach($this->getSelectedColumns() as $col)
78 {
79 $this->addColumn($all_cols[$col]['txt'], $col);
80 }
81
82 $this->addColumn($this->lng->txt('application_date'),'sub_time',"10%");
83 $this->addColumn('','mail','10%');
84
85 $this->addMultiCommand('confirmAssignFromWaitingList',$this->lng->txt('assign'));
86 $this->addMultiCommand('confirmRefuseFromList',$this->lng->txt('refuse'));
87 $this->addMultiCommand('sendMailToSelectedUsers',$this->lng->txt('crs_mem_send_mail'));
88
89 $this->setPrefix('waiting');
90 $this->setSelectAllCheckbox('waiting');
91 $this->setRowTemplate("tpl.show_waiting_list_row.html","Services/Membership");
92
93 if($show_content)
94 {
95 $this->enable('sort');
96 $this->enable('header');
97 $this->enable('numinfo');
98 $this->enable('select_all');
99 }
100 else
101 {
102 $this->disable('content');
103 $this->disable('header');
104 $this->disable('footer');
105 $this->disable('numinfo');
106 $this->disable('select_all');
107 }
108
109 $this->waiting_list = $waiting_list;
110
111 include_once('Modules/Course/classes/Export/class.ilCourseDefinedFieldDefinition.php');
112 self::$has_odf_definitions = ilCourseDefinedFieldDefinition::_hasFields($this->getRepositoryObject()->getId());
113
114 }
115
120 protected function getRepositoryObject()
121 {
122 return $this->rep_object;
123 }
124
132 public function setUsers($a_sub)
133 {
134 $this->wait = $a_sub;
135 foreach($this->wait as $usr_id => $usr_data)
136 {
137 $this->wait_user_ids[] = $usr_id;
138 }
139
140 $this->readUserData();
141 }
142
147 public function getSelectableColumns()
148 {
149 if(self::$all_columns)
150 {
151 return self::$all_columns;
152 }
153
154 include_once './Services/PrivacySecurity/classes/class.ilExportFieldsInfo.php';
156 self::$all_columns = $ef->getSelectableFieldsInfo($this->getRepositoryObject()->getId());
157 return self::$all_columns;
158 }
159
160
168 public function fillRow($a_set)
169 {
170 global $ilUser;
171
172 include_once('./Services/Calendar/classes/class.ilDateTime.php');
173 include_once './Modules/Course/classes/class.ilObjCourseGrouping.php';
174
177 {
178 $prefix = $this->getRepositoryObject()->getType();
179 $this->tpl->setVariable('ALERT_MSG',
180 sprintf($this->lng->txt($prefix.'_lim_assigned'),
181 ilObject::_lookupTitle(current($ids))
182 ));
183
184 }
185
186 $this->tpl->setVariable('VAL_ID',$a_set['usr_id']);
187 $this->tpl->setVariable('VAL_NAME',$a_set['lastname'].', '.$a_set['firstname']);
188
189 foreach($this->getSelectedColumns() as $field)
190 {
191 switch($field)
192 {
193 case 'gender':
194 $a_set['gender'] = $a_set['gender'] ? $this->lng->txt('gender_' . $a_set['gender']) : '';
195 $this->tpl->setCurrentBlock('custom_fields');
196 $this->tpl->setVariable('VAL_CUST', $a_set[$field]);
197 $this->tpl->parseCurrentBlock();
198 break;
199
200 case 'birthday':
201 $a_set['birthday'] = $a_set['birthday'] ? ilDatePresentation::formatDate(new ilDate($a_set['birthday'], IL_CAL_DATE)) : $this->lng->txt('no_date');
202 $this->tpl->setCurrentBlock('custom_fields');
203 $this->tpl->setVariable('VAL_CUST', $a_set[$field]);
204 $this->tpl->parseCurrentBlock();
205 break;
206
207 case 'odf_last_update':
208 $this->tpl->setVariable('VAL_CUST',(string) $a_set['odf_info_txt']);
209 break;
210
211 case 'org_units':
212 $this->tpl->setCurrentBlock('custom_fields');
213 include_once './Modules/OrgUnit/classes/PathStorage/class.ilOrgUnitPathStorage.php';
214 $this->tpl->setVariable('VAL_CUST', (string) ilOrgUnitPathStorage::getTextRepresentationOfUsersOrgUnits($a_set['usr_id']));
215 $this->tpl->parseCurrentBlock();
216 break;
217
218
219 default:
220 $this->tpl->setCurrentBlock('custom_fields');
221 $this->tpl->setVariable('VAL_CUST', isset($a_set[$field]) ? (string) $a_set[$field] : '');
222 $this->tpl->parseCurrentBlock();
223 break;
224 }
225 }
226
227 $this->tpl->setVariable('VAL_SUBTIME',ilDatePresentation::formatDate(new ilDateTime($a_set['sub_time'],IL_CAL_UNIX)));
228
229 #$this->tpl->setVariable('VAL_LOGIN',$a_set['login']);
230
231 $this->showActionLinks($a_set);
232 }
233
241 public function readUserData()
242 {
243 global $rbacreview;
244
246
247 include_once './Services/User/classes/class.ilUserQuery.php';
248
249 $additional_fields = $this->getSelectedColumns();
250 unset($additional_fields["firstname"]);
251 unset($additional_fields["lastname"]);
252 unset($additional_fields["last_login"]);
253 unset($additional_fields["access_until"]);
254 unset($additional_fields['org_units']);
255
256 $udf_ids = $usr_data_fields = $odf_ids = array();
257 foreach($additional_fields as $field)
258 {
259 if(substr($field, 0, 3) == 'udf')
260 {
261 $udf_ids[] = substr($field, 4);
262 continue;
263 }
264 if(substr($field, 0, 3) == 'odf')
265 {
266 $odf_ids[] = substr($field, 4);
267 continue;
268 }
269
270 $usr_data_fields[] = $field;
271 }
272
274 $this->getOrderField(),
275 $this->getOrderDirection(),
276 $this->getOffset(),
277 $this->getLimit(),
278 '',
279 '',
280 null,
281 false,
282 false,
283 0,
284 0,
285 null,
286 $usr_data_fields,
287 $this->wait_user_ids
288 );
289
290 foreach((array) $usr_data['set'] as $user)
291 {
292 $usr_ids[] = $user['usr_id'];
293 }
294
295 // merge course data
296 $course_user_data = $this->getParentObject()->readMemberData($usr_ids,array());
297 $a_user_data = array();
298 foreach((array) $usr_data['set'] as $ud)
299 {
300 $a_user_data[$ud['usr_id']] = array_merge($ud,$course_user_data[$ud['usr_id']]);
301 }
302
303 // Custom user data fields
304 if($udf_ids)
305 {
306 include_once './Services/User/classes/class.ilUserDefinedData.php';
307 $data = ilUserDefinedData::lookupData($usr_ids, $udf_ids);
308 foreach($data as $usr_id => $fields)
309 {
310 if(!$this->checkAcceptance($usr_id))
311 {
312 continue;
313 }
314
315 foreach($fields as $field_id => $value)
316 {
317 $a_user_data[$usr_id]['udf_' . $field_id] = $value;
318 }
319 }
320 }
321 // Object specific user data fields
322 if($odf_ids)
323 {
324 include_once './Modules/Course/classes/Export/class.ilCourseUserData.php';
326 foreach($data as $usr_id => $fields)
327 {
328 // #7264: as we get data for all course members filter against user data
329 if(!$this->checkAcceptance($usr_id) || !in_array($usr_id, $usr_ids))
330 {
331 continue;
332 }
333
334 foreach($fields as $field_id => $value)
335 {
336 $a_user_data[$usr_id]['odf_' . $field_id] = $value;
337 }
338 }
339
340 // add last edit date
341 include_once './Services/Membership/classes/class.ilObjectCustomUserFieldHistory.php';
342 foreach(ilObjectCustomUserFieldHistory::lookupEntriesByObjectId($this->getRepositoryObject()->getId()) as $usr_id => $edit_info)
343 {
344 if(!isset($a_user_data[$usr_id]))
345 {
346 continue;
347 }
348
349 include_once './Services/PrivacySecurity/classes/class.ilPrivacySettings.php';
350 if($usr_id == $edit_info['update_user'])
351 {
352 $a_user_data[$usr_id]['odf_last_update'] = '';
353 $a_user_data[$usr_id]['odf_info_txt'] = $GLOBALS['lng']->txt('cdf_edited_by_self');
354 if(ilPrivacySettings::_getInstance()->enabledAccessTimesByType($this->getRepositoryObject()->getType()))
355 {
356 $a_user_data[$usr_id]['odf_last_update'] .= ('_'.$edit_info['editing_time']->get(IL_CAL_UNIX));
357 $a_user_data[$usr_id]['odf_info_txt'] .= (', '.ilDatePresentation::formatDate($edit_info['editing_time']));
358 }
359 }
360 else
361 {
362 $a_user_data[$usr_id]['odf_last_update'] = $edit_info['update_user'];
363 $a_user_data[$usr_id]['odf_last_update'] .= ('_'.$edit_info['editing_time']->get(IL_CAL_UNIX));
364
365 $name = ilObjUser::_lookupName($edit_info['update_user']);
366 $a_user_data[$usr_id]['odf_info_txt'] = ($name['firstname'].' '.$name['lastname'].', '.ilDatePresentation::formatDate($edit_info['editing_time']));
367 }
368 }
369
370 }
371
372 foreach($usr_data['set'] as $user)
373 {
374 // Check acceptance
375 if(!$this->checkAcceptance($user['usr_id']))
376 {
377 continue;
378 }
379 // DONE: accepted
380 foreach($usr_data_fields as $field)
381 {
382 $a_user_data[$user['usr_id']][$field] = $user[$field] ? $user[$field] : '';
383 }
384 }
385
386 // Waiting list subscription
387 foreach($this->wait as $usr_id => $usr_data)
388 {
389 $a_user_data[$usr_id]['sub_time'] = $usr_data['time'];
390 }
391
392 $this->setMaxCount($usr_data['cnt'] ? $usr_data['cnt'] : 0);
393 return $this->setData($a_user_data);
394 }
395
400 public function showActionLinks($a_set)
401 {
402 if(!self::$has_odf_definitions)
403 {
404 $this->ctrl->setParameterByClass(get_class($this->getParentObject()),'member_id',$a_set['usr_id']);
405 $link = $this->ctrl->getLinkTargetByClass(get_class($this->getParentObject()),'sendMailToSelectedUsers');
406 $this->tpl->setVariable('MAIL_LINK',$link);
407 $this->tpl->setVariable('MAIL_TITLE',$this->lng->txt('crs_mem_send_mail'));
408 return TRUE;
409 }
410
411 // show action menu
412 include_once './Services/UIComponent/AdvancedSelectionList/classes/class.ilAdvancedSelectionListGUI.php';
413 $list = new ilAdvancedSelectionListGUI();
414 $list->setSelectionHeaderClass('small');
415 $list->setItemLinkClass('small');
416 $list->setId('actl_'.$a_set['usr_id'].'_'.$this->getId());
417 $list->setListTitle($this->lng->txt('actions'));
418
419 $this->ctrl->setParameterByClass(get_class($this->getParentObject()),'member_id',$a_set['usr_id']);
420 $this->ctrl->setParameter($this->parent_obj, 'member_id', $a_set['usr_id']);
421 $trans = $this->lng->txt($this->getRepositoryObject()->getType().'_mem_send_mail');
422 $link = $this->ctrl->getLinkTargetByClass(get_class($this->getParentObject()),'sendMailToSelectedUsers');
423 $list->addItem($trans, '', $link,'sendMailToSelectedUsers');
424
425 $this->ctrl->setParameterByClass('ilobjectcustomuserfieldsgui','member_id',$a_set['usr_id']);
426 $trans = $this->lng->txt($this->getRepositoryObject()->getType().'_cdf_edit_member');
427 $list->addItem($trans, '', $this->ctrl->getLinkTargetByClass('ilobjectcustomuserfieldsgui','editMember'));
428
429 $this->tpl->setVariable('ACTION_USER',$list->getHTML());
430
431 }
432
433
434
435 protected function checkAcceptance()
436 {
437 return true;
438 }
439
440
441
442}
443?>
sprintf('%.4f', $callTime)
An exception for terminatinating execution or to throw for unit testing.
const IL_CAL_DATE
const IL_CAL_UNIX
User interface class for advanced drop-down selection lists.
static _hasFields($a_container_id)
Check if there are any define fields.
static _getValuesByObjId($a_obj_id)
Get values by obj_id (for all users)
static formatDate(ilDateTime $date)
Format a date @access public.
@classDescription Date and time handling
Class for single dates.
static _getInstanceByType($a_type)
Get Singleton Instance.
static _checkGroupingDependencies(&$container_obj, $a_user_id=null)
static getAssignedObjects()
Alway call checkGroupingDependencies before.
static _lookupName($a_user_id)
lookup user name
static lookupEntriesByObjectId($a_obj_id)
Get entries by obj_id @global type $ilDB.
Class ilObject Basic functions for all objects.
static _lookupTitle($a_id)
lookup object title
static _getInstance()
Get instance of ilPrivacySettings.
Class ilTable2GUI.
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.
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...
determineOffsetAndOrder($a_omit_offset=false)
Determine offset and order.
getId()
Get element id.
setData($a_data)
set table data @access public
getLimit()
Get limit.
setRowTemplate($a_template, $a_template_dir="")
Set row template.
addMultiCommand($a_cmd, $a_text)
Add Command button.
setSelectAllCheckbox($a_select_all_checkbox)
Set the name of the checkbox that should be toggled with a select all button.
getOffset()
Get offset.
setId($a_val)
Set id.
setFormName($a_formname="")
Set Form name.
setFormAction($a_form_action, $a_multipart=false)
Set Form action parameter.
getOrderDirection()
Get order direction.
setMaxCount($a_max_count)
set max.
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.
GUI class for course/group waiting list.
getRepositoryObject()
Get repository object.
__construct($a_parent_obj, ilObject $rep_object, $waiting_list, $show_content=true)
Constructor.
showActionLinks($a_set)
Show action links (mail ; edit crs|grp data)
getSelectableColumns()
Get selectable columns.
$GLOBALS['loaded']
Global hash that tracks already loaded includes.
global $ilCtrl
Definition: ilias.php:18
global $lng
Definition: privfeed.php:17
$ilUser
Definition: imgupload.php:18