ILIAS  release_8 Revision v8.24
class.ilConsultationHoursTableGUI.php
Go to the documentation of this file.
1<?php
2
3declare(strict_types=1);
4
27{
28 private int $user_id = 0;
29 private bool $has_groups = false;
30
31 public function __construct(object $a_gui, string $a_cmd, int $a_user_id)
32 {
33 $this->user_id = $a_user_id;
34
35 $this->has_groups = (bool) 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 $this->addColumn($this->lng->txt('cal_ch_grp_header'), 'group');
45 }
46
47 $this->addColumn($this->lng->txt('title'), 'title');
48 $this->addColumn($this->lng->txt('cal_ch_num_bookings'), 'num_bookings');
49 $this->addColumn($this->lng->txt('cal_ch_bookings'), 'participants');
50 $this->addColumn($this->lng->txt('cal_ch_target_object'), 'target');
51 $this->addColumn('');
52
53 $this->setRowTemplate('tpl.ch_upcoming_row.html', 'Services/Calendar');
54 $this->setFormAction($this->ctrl->getFormAction($this->getParentObject(), $this->getParentCmd()));
55 $this->setTitle($this->lng->txt('cal_ch_ch'));
56
57 $this->enable('sort');
58 $this->enable('header');
59 $this->enable('numinfo');
60
61 $this->setDefaultOrderField('start');
62 $this->setSelectAllCheckbox('apps');
63 $this->setShowRowsSelector(true);
64 $this->addMultiCommand('edit', $this->lng->txt('edit'));
65 $this->addMultiCommand('searchUsersForAppointments', $this->lng->txt('cal_ch_assign_participants'));
66 $this->addMultiCommand('confirmDelete', $this->lng->txt('delete'));
67 }
68
69 public function getUserId(): int
70 {
71 return $this->user_id;
72 }
73
74 public function hasGroups(): bool
75 {
76 return $this->has_groups;
77 }
78
82 protected function fillRow(array $a_set): void
83 {
84 $this->tpl->setVariable('VAL_ID', $a_set['id']);
85 $this->tpl->setVariable('START', $a_set['start_p']);
86 $this->tpl->setVariable('TITLE', $a_set['title']);
87
88 if ($this->hasGroups()) {
89 $this->tpl->setVariable('TITLE_GROUP', $a_set['group']);
90 }
91
92 $this->tpl->setVariable('NUM_BOOKINGS', $a_set['num_bookings']);
93
94 foreach ((array) ($a_set['target_links'] ?? []) as $link) {
95 $this->tpl->setCurrentBlock('links');
96 $this->tpl->setVariable('TARGET', $link['title']);
97 $this->tpl->setVariable('URL_TARGET', $link['link']);
98 $this->tpl->parseCurrentBlock();
99 }
100 if ($a_set['bookings']) {
101 foreach ($a_set['bookings'] as $user_id => $name) {
102 $user_profile_prefs = ilObjUser::_getPreferences($user_id);
103 if (($user_profile_prefs["public_profile"] ?? '') == "y") {
104 $this->tpl->setCurrentBlock('booking_with_link');
105 $this->ctrl->setParameter($this->getParentObject(), 'user', $user_id);
106 $this->tpl->setVariable(
107 'URL_BOOKING',
108 $this->ctrl->getLinkTarget($this->getParentObject(), 'showprofile')
109 );
110 } else {
111 $this->tpl->setCurrentBlock('booking_without_link');
112 }
113 $this->ctrl->setParameter($this->getParentObject(), 'user', '');
114 $this->tpl->setVariable('TXT_BOOKING', $name);
115 $this->tpl->parseCurrentBlock();
116 }
117 }
118
119 $this->tpl->setVariable('BOOKINGS', implode(', ', $a_set['bookings']));
120
121 $list = new ilAdvancedSelectionListGUI();
122 $list->setId('act_cht_' . $a_set['id']);
123 $list->setListTitle($this->lng->txt('actions'));
124
125 $this->ctrl->setParameter($this->getParentObject(), 'apps', $a_set['id']);
126 $list->addItem(
127 $this->lng->txt('edit'),
128 '',
129 $this->ctrl->getLinkTarget($this->getParentObject(), 'edit')
130 );
131 $list->addItem(
132 $this->lng->txt('cal_ch_assign_participants'),
133 '',
134 $this->ctrl->getLinkTargetByClass('ilRepositorySearchGUI', '')
135 );
136 $list->addItem(
137 $this->lng->txt('delete'),
138 '',
139 $this->ctrl->getLinkTarget($this->getParentObject(), 'confirmDelete')
140 );
141 $this->tpl->setVariable('ACTIONS', $list->getHTML());
142 }
143
144 public function parse()
145 {
146 $data = array();
147 $counter = 0;
149 $data[$counter]['id'] = $app->getEntryId();
150 $data[$counter]['title'] = $app->getTitle();
151 $data[$counter]['description'] = $app->getDescription();
152 $data[$counter]['start'] = $app->getStart()->get(IL_CAL_UNIX);
153 $data[$counter]['start_p'] = ilDatePresentation::formatPeriod($app->getStart(), $app->getEnd());
154
155 $booking = new ilBookingEntry($app->getContextId());
156
157 $booked_user_ids = $booking->getCurrentBookings($app->getEntryId());
158 $booked_user_ids = array_map('intval', ilUtil::_sortIds($booked_user_ids, 'usr_data', 'lastname', 'usr_id'));
159 $users = array();
160 $data[$counter]['participants'] = '';
161 $user_counter = 0;
162 foreach ($booked_user_ids as $user_id) {
163 if (!$user_counter) {
165 $data[$counter]['participants'] = $name['lastname'];
166 }
168 $user_counter++;
169 }
170 $data[$counter]['bookings'] = $users;
171 $data[$counter]['num_bookings'] = $booking->getNumberOfBookings();
172
173 $data[$counter]['group'] = '';
174 $group_id = $booking->getBookingGroup();
175 if ($this->hasGroups() && $group_id) {
176 $data[$counter]['group'] = ilConsultationHourGroups::lookupTitle($group_id);
177 }
178
179 // obj assignments
180 $refs_counter = 0;
181 $obj_ids = array_map(
182 'intval',
183 ilUtil::_sortIds($booking->getTargetObjIds(), 'object_data', 'title', 'obj_id')
184 );
185 foreach ($obj_ids as $obj_id) {
186 if ($refs_counter) {
187 $data[$counter]['target'] = ilObject::_lookupTitle($obj_id);
188 }
189
190 $refs = ilObject::_getAllReferences($obj_id);
191 $data[$counter]['target_links'][$refs_counter]['title'] = ilObject::_lookupTitle($obj_id);
192 $data[$counter]['target_links'][$refs_counter]['link'] = ilLink::_getLink(end($refs));
193 ++$refs_counter;
194 }
195 $counter++;
196 }
197 $this->setData($data);
198 }
199}
const IL_CAL_UNIX
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static getAppointments(int $a_user_id)
Get all appointments.
static getCountGroupsOfUser(int $a_user_id)
Get number of consultation hour groups.
static lookupTitle(int $a_group_id)
Lookup group title.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
__construct(object $a_gui, string $a_cmd, int $a_user_id)
static formatPeriod(ilDateTime $start, ilDateTime $end, bool $a_skip_starting_day=false)
Format a period of two dates Shows: 14.
static _lookupFullname(int $a_user_id)
static _lookupName(int $a_user_id)
lookup user name
static _getPreferences(int $user_id)
get preferences for user
static _getAllReferences(int $id)
get all reference ids for object ID
static _lookupTitle(int $obj_id)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
setShowRowsSelector(bool $a_value)
Toggle rows-per-page selector.
setTitle(string $a_title, string $a_icon="", string $a_icon_alt="")
addMultiCommand(string $a_cmd, string $a_text)
setFormAction(string $a_form_action, bool $a_multipart=false)
addColumn(string $a_text, string $a_sort_field="", string $a_width="", bool $a_is_checkbox_action_column=false, string $a_class="", string $a_tooltip="", bool $a_tooltip_with_html=false)
setDefaultOrderField(string $a_defaultorderfield)
setSelectAllCheckbox(string $a_select_all_checkbox, bool $a_select_all_on_top=false)
setRowTemplate(string $a_template, string $a_template_dir="")
Set row template.
setId(string $a_val)
setData(array $a_data)
Set table data.
enable(string $a_module_name)
static _sortIds(array $a_ids, string $a_table, string $a_field, string $a_id_name)
Function that sorts ids by a given table field using WHERE IN E.g: __sort(array(6,...
$app
Definition: cli.php:39
if($format !==null) $name
Definition: metadata.php:247
__construct(Container $dic, ilPlugin $plugin)
@inheritDoc