ILIAS  release_5-3 Revision v5.3.23-19-g915713cf615
class.ilConsultationHourAppointments.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/Calendar/classes/class.ilCalendarEntry.php';
5
16{
17
26 public static function getAppointmentIds($a_user_id, $a_context_id = null, $a_start = null, $a_type = null, $a_check_owner = true)
27 {
28 global $ilDB;
29
30 if (!$a_type) {
31 include_once './Services/Calendar/classes/class.ilCalendarCategory.php';
33 }
34 $owner = ' ';
35 if ($a_check_owner) {
36 $owner = " AND be.obj_id = " . $ilDB->quote($a_user_id, 'integer');
37 }
38
39 $query = "SELECT ce.cal_id FROM cal_entries ce" .
40 " JOIN cal_cat_assignments cca ON ce.cal_id = cca.cal_id" .
41 " JOIN cal_categories cc ON cca.cat_id = cc.cat_id" .
42 " JOIN booking_entry be ON ce.context_id = be.booking_id" .
43 " WHERE cc.obj_id = " . $ilDB->quote($a_user_id, 'integer') .
44 $owner .
45 " AND cc.type = " . $ilDB->quote($a_type, 'integer');
46
47
48 if ($a_context_id) {
49 $query .= " AND ce.context_id = " . $ilDB->quote($a_context_id, 'integer');
50 }
51 if ($a_start) {
52 $query .= " AND ce.starta = " . $ilDB->quote($a_start->get(IL_CAL_DATETIME, '', 'UTC'), 'text');
53 }
54
55 $query .= (' ORDER BY ce.starta ASC');
56
57 $res = $ilDB->query($query);
58 $entries = array();
59 while ($row = $res->fetchRow(ilDBConstants::FETCHMODE_OBJECT)) {
60 $entries[] = $row->cal_id;
61 }
62 return $entries;
63 }
64
65
72 public static function getAppointmentIdsByGroup($a_user_id, $a_ch_group_id, ilDateTime $start = null)
73 {
74 global $ilDB;
75
76 // @todo check start time
77
78 include_once './Services/Calendar/classes/class.ilCalendarCategory.php';
80
81 $start_limit = '';
82 if ($start instanceof ilDateTime) {
83 $start_limit = 'AND ce.starta >= ' . $ilDB->quote($start->get(IL_CAL_DATETIME, '', 'UTC'), 'timestamp');
84 }
85
86 $query = 'SELECT ce.cal_id FROM cal_entries ce ' .
87 'JOIN cal_cat_assignments ca ON ce.cal_id = ca.cal_id ' .
88 'JOIN cal_categories cc ON ca.cat_id = cc.cat_id ' .
89 'JOIN booking_entry be ON ce.context_id = be.booking_id ' .
90 'WHERE cc.obj_id = ' . $ilDB->quote($a_user_id, 'integer') . ' ' .
91 'AND cc.type = ' . $ilDB->quote($type, 'integer') . ' ' .
92 'AND be.booking_group = ' . $ilDB->quote($a_ch_group_id, 'integer') . ' ' .
93 $start_limit . ' ' .
94 'ORDER BY ce.starta ';
95 $res = $ilDB->query($query);
96 $app_ids = array();
97 while ($row = $res->fetchRow(ilDBConstants::FETCHMODE_OBJECT)) {
98 $app_ids[] = $row->cal_id;
99 }
100 return $app_ids;
101 }
102
107 public static function getAppointments($a_user_id)
108 {
109 $entries = array();
110 foreach (self::getAppointmentIds($a_user_id) as $app_id) {
111 $entries[] = new ilCalendarEntry($app_id);
112 }
113 return $entries;
114 }
115
123 public static function getManager($a_as_name = false, $a_full_name = false, $a_user_id = null)
124 {
125 global $ilDB, $ilUser;
126
127 if (!$a_user_id) {
128 $user_id = $ilUser->getId();
129 } else {
130 $user_id = $a_user_id;
131 }
132
133 $set = $ilDB->query('SELECT admin_id FROM cal_ch_settings' .
134 ' WHERE user_id = ' . $ilDB->quote($user_id, 'integer'));
135 $row = $ilDB->fetchAssoc($set);
136 if ($row && $row['admin_id']) {
137 if ($a_as_name && $a_full_name) {
138 return ilObjUser::_lookupFullname($row['admin_id']);
139 } elseif ($a_as_name) {
140 return ilObjUser::_lookupLogin($row['admin_id']);
141 }
142 return (int) $row['admin_id'];
143 }
144 }
145
151 public static function setManager($a_user_name)
152 {
153 global $ilDB, $ilUser;
154
155 $user_id = false;
156 if ($a_user_name) {
157 $user_id = ilObjUser::_loginExists($a_user_name);
158 if (!$user_id) {
159 return false;
160 }
161 }
162
163 $ilDB->manipulate('DELETE FROM cal_ch_settings' .
164 ' WHERE user_id = ' . $ilDB->quote($ilUser->getId(), 'integer'));
165
166 if ($user_id && $user_id != $ilUser->getId()) {
167 $ilDB->manipulate('INSERT INTO cal_ch_settings (user_id, admin_id)' .
168 ' VALUES (' . $ilDB->quote($ilUser->getId(), 'integer') . ',' .
169 $ilDB->quote($user_id, 'integer') . ')');
170 }
171
172 return true;
173 }
174
179 public static function getManagedUsers()
180 {
181 global $ilDB, $ilUser;
182
183 $all = array();
184 $set = $ilDB->query('SELECT user_id FROM cal_ch_settings' .
185 ' WHERE admin_id = ' . $ilDB->quote($ilUser->getId(), 'integer'));
186 while ($row = $ilDB->fetchAssoc($set)) {
187 $all[$row['user_id']] = ilObjUser::_lookupLogin($row['user_id']);
188 }
189 return $all;
190 }
191}
An exception for terminatinating execution or to throw for unit testing.
const IL_CAL_DATETIME
Model for a calendar entry.
static getAppointmentIds($a_user_id, $a_context_id=null, $a_start=null, $a_type=null, $a_check_owner=true)
Get all appointment ids.
static getAppointmentIdsByGroup($a_user_id, $a_ch_group_id, ilDateTime $start=null)
Get appointment ids by consultation hour group.
static getManager($a_as_name=false, $a_full_name=false, $a_user_id=null)
Get consultation hour manager for current user or specific user.
static getAppointments($a_user_id)
Get all appointments.
static getManagedUsers()
Get all managed consultation hours users for current users.
static setManager($a_user_name)
Set consultation hour manager for current user.
@classDescription Date and time handling
static _lookupLogin($a_user_id)
lookup login
static _lookupFullname($a_user_id)
Lookup Full Name.
static _loginExists($a_login, $a_user_id=0)
check if a login name already exists You may exclude a user from the check by giving his user id as 2...
$query
$type
foreach($_POST as $key=> $value) $res
global $ilDB
$ilUser
Definition: imgupload.php:18
$a_context_id
Definition: workflow.php:97
$a_type
Definition: workflow.php:92