ILIAS  Release_4_4_x_branch Revision 61816
 All Data Structures Namespaces Files Functions Variables Groups Pages
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 
4 include_once './Services/Table/classes/class.ilTable2GUI.php';
5 include_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  {
184  $name = ilObjUser::_lookupName($user_id);
185  $data[$counter]['participants'] = $name['lastname'];
186  }
187  $users[$user_id] = ilObjUser::_lookupFullname($user_id);
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 ?>