ILIAS  release_5-1 Revision 5.0.0-5477-g43f3e3fab5f
class.ilConsultationHoursTableGUI.php
Go to the documentation of this file.
1<?php
2/* Copyright (c) 1998-2010 ILIAS open source, Extended GPL, see docs/LICENSE */
3
4include_once './Services/Table/classes/class.ilTable2GUI.php';
5include_once './Services/Calendar/classes/ConsultationHours/class.ilConsultationHourAppointments.php';
6
17{
18 private $user_id = 0;
19 private $has_groups = false;
20
28 public function __construct($a_gui,$a_cmd,$a_user_id)
29 {
30 global $lng,$ilCtrl;
31
32 $this->user_id = $a_user_id;
33
34 include_once './Services/Calendar/classes/ConsultationHours/class.ilConsultationHourGroups.php';
35 $this->has_groups = ilConsultationHourGroups::getCountGroupsOfUser($a_user_id);
36
37 $this->setId('chtg_'.$this->getUserId());
38 parent::__construct($a_gui,$a_cmd);
39
40 $this->addColumn('','f',1);
41 $this->addColumn($this->lng->txt('appointment'),'start');
42
43 if($this->hasGroups())
44 {
45 $this->addColumn($this->lng->txt('cal_ch_grp_header'),'group');
46 }
47
48 $this->addColumn($this->lng->txt('title'),'title');
49 $this->addColumn($this->lng->txt('cal_ch_num_bookings'),'num_bookings');
50 $this->addColumn($this->lng->txt('cal_ch_bookings'),'participants');
51 $this->addColumn($this->lng->txt('cal_ch_target_object'),'target');
52 $this->addColumn('');
53
54 $this->setRowTemplate('tpl.ch_upcoming_row.html','Services/Calendar');
55 $this->setFormAction($ilCtrl->getFormAction($this->getParentObject(),$this->getParentCmd()));
56 $this->setTitle($this->lng->txt('cal_ch_ch'));
57
58 $this->enable('sort');
59 $this->enable('header');
60 $this->enable('numinfo');
61
62 $this->setDefaultOrderField('start');
63 $this->setSelectAllCheckbox('apps');
64 $this->setShowRowsSelector(true);
65 $this->addMultiCommand('edit', $this->lng->txt('edit'));
66 $this->addMultiCommand('searchUsersForAppointments', $this->lng->txt('cal_ch_assign_participants'));
67 $this->addMultiCommand('confirmDelete', $this->lng->txt('delete'));
68 }
69
74 public function getUserId()
75 {
76 return $this->user_id;
77 }
78
82 public function hasGroups()
83 {
84 return $this->has_groups;
85 }
86
91 public function fillRow($row)
92 {
93 global $ilCtrl;
94
95 $this->tpl->setVariable('VAL_ID',$row['id']);
96 $this->tpl->setVariable('START',$row['start_p']);
97 $this->tpl->setVariable('TITLE',$row['title']);
98
99 if($this->hasGroups())
100 {
101 $this->tpl->setVariable('TITLE_GROUP',$row['group']);
102 }
103
104 $this->tpl->setVariable('NUM_BOOKINGS',$row['num_bookings']);
105
106 foreach((array) $row['target_links'] as $link)
107 {
108 $this->tpl->setCurrentBlock('links');
109 $this->tpl->setVariable('TARGET', $link['title']);
110 $this->tpl->setVariable('URL_TARGET',$link['link']);
111 $this->tpl->parseCurrentBlock();
112 }
113 if($row['bookings'])
114 {
115 $this->tpl->setCurrentBlock('bookings');
116 foreach($row['bookings'] as $user_id => $name)
117 {
118 $ilCtrl->setParameter($this->getParentObject(), 'user', $user_id);
119 $this->tpl->setVariable('URL_BOOKING', $ilCtrl->getLinkTarget($this->getParentObject(), 'showprofile'));
120 $ilCtrl->setParameter($this->getParentObject(), 'user', '');
121 $this->tpl->setVariable('TXT_BOOKING', $name);
122 $this->tpl->parseCurrentBlock();
123 }
124 }
125
126 $this->tpl->setVariable('BOOKINGS',implode(', ', $row['bookings']));
127
128 include_once './Services/UIComponent/AdvancedSelectionList/classes/class.ilAdvancedSelectionListGUI.php';
129 $list = new ilAdvancedSelectionListGUI();
130 $list->setId('act_cht_'.$row['id']);
131 $list->setListTitle($this->lng->txt('actions'));
132
133 $ilCtrl->setParameter($this->getParentObject(),'apps',$row['id']);
134 $list->addItem(
135 $this->lng->txt('edit'),
136 '',
137 $ilCtrl->getLinkTarget($this->getParentObject(),'edit')
138 );
139 $list->addItem(
140 $this->lng->txt('cal_ch_assign_participants'),
141 '',
142 $ilCtrl->getLinkTargetByClass('ilRepositorySearchGUI','')
143 );
144 $list->addItem(
145 $this->lng->txt('delete'),
146 '',
147 $ilCtrl->getLinkTarget($this->getParentObject(),'confirmDelete')
148 );
149 $this->tpl->setVariable('ACTIONS',$list->getHTML());
150
151 }
152
157 public function parse()
158 {
159 global $ilDB, $ilObjDataCache;
160
161 include_once 'Services/Booking/classes/class.ilBookingEntry.php';
162
163 $data = array();
164 $counter = 0;
166 {
167 $data[$counter]['id'] = $app->getEntryId();
168 $data[$counter]['title'] = $app->getTitle();
169 $data[$counter]['description'] = $app->getDescription();
170 $data[$counter]['start'] = $app->getStart()->get(IL_CAL_UNIX);
171 $data[$counter]['start_p'] = ilDatePresentation::formatPeriod($app->getStart(),$app->getEnd());
172
173 $booking = new ilBookingEntry($app->getContextId());
174
175 $booked_user_ids = $booking->getCurrentBookings($app->getEntryId());
176 $booked_user_ids = ilUtil::_sortIds($booked_user_ids, 'usr_data', 'lastname', 'usr_id');
177 $users = array();
178 $data[$counter]['participants'] = '';
179 $user_counter = 0;
180 foreach($booked_user_ids as $user_id)
181 {
182 if(!$user_counter)
183 {
185 $data[$counter]['participants'] = $name['lastname'];
186 }
188 $user_counter++;
189 }
190 $data[$counter]['bookings'] = $users;
191 $data[$counter]['num_bookings'] = $booking->getNumberOfBookings();
192
193 $data[$counter]['group'] = '';
194 $group_id = $booking->getBookingGroup();
195 if($this->hasGroups() && $group_id)
196 {
197 $data[$counter]['group'] = ilConsultationHourGroups::lookupTitle($group_id);
198 }
199
200 // obj assignments
201 $refs_counter = 0;
202 $obj_ids = ilUtil::_sortIds($booking->getTargetObjIds(), 'object_data', 'title', 'obj_id');
203 foreach($obj_ids as $obj_id)
204 {
205 if($refs_counter)
206 {
207 $data[$counter]['target'] = ilObject::_lookupTitle($obj_id);
208 }
209
210 $refs = ilObject::_getAllReferences($obj_id);
211 include_once './Services/Link/classes/class.ilLink.php';
212 $data[$counter]['target_links'][$refs_counter]['title'] = ilObject::_lookupTitle($obj_id);
213 $data[$counter]['target_links'][$refs_counter]['link'] = ilLink::_getLink(end($refs));
214 ++$refs_counter;
215 }
216 $counter++;
217 }
218 $this->setData($data);
219 }
220}
221?>
const IL_CAL_UNIX
User interface class for advanced drop-down selection lists.
Booking definition.
static getAppointments($a_user_id)
Get all appointments.
static lookupTitle($a_group_id)
Lookup group title.
static getCountGroupsOfUser($a_user_id)
Get number of consultation hour groups @global type $ilDB.
Consultation hours administration.
__construct($a_gui, $a_cmd, $a_user_id)
Constructor.
hasGroups()
Check if user has created groups.
static formatPeriod(ilDateTime $start, ilDateTime $end)
Format a period of two date Shows: 14.
_lookupFullname($a_user_id)
Lookup Full Name.
static _lookupName($a_user_id)
lookup user name
static _lookupTitle($a_id)
lookup object title
static _getAllReferences($a_id)
get all reference ids of object
Class ilTable2GUI.
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.
setTitle($a_title, $a_icon=0, $a_icon_alt=0)
Set title and title icon.
setData($a_data)
set table data @access public
setRowTemplate($a_template, $a_template_dir="")
Set row template.
addMultiCommand($a_cmd, $a_text)
Add Command button.
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.
setFormAction($a_form_action, $a_multipart=false)
Set Form action parameter.
enable($a_module_name)
enables particular modules of table
static _sortIds($a_ids, $a_table, $a_field, $a_id_name)
Function that sorts ids by a given table field using WHERE IN E.g: __sort(array(6,...
global $ilCtrl
Definition: ilias.php:18
global $lng
Definition: privfeed.php:40
global $ilDB