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 
4 include_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 }
static _lookupLogin($a_user_id)
lookup login
Model for a calendar entry.
const IL_CAL_DATETIME
$type
static _lookupFullname($a_user_id)
Lookup Full Name.
$a_context_id
Definition: workflow.php:97
static getAppointmentIds($a_user_id, $a_context_id=null, $a_start=null, $a_type=null, $a_check_owner=true)
Get all appointment ids.
static setManager($a_user_name)
Set consultation hour manager for current user.
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...
$a_type
Definition: workflow.php:92
foreach($_POST as $key=> $value) $res
static getManagedUsers()
Get all managed consultation hours users for current users.
static getAppointments($a_user_id)
Get all appointments.
Date and time handling
$ilUser
Definition: imgupload.php:18
$query
static getAppointmentIdsByGroup($a_user_id, $a_ch_group_id, ilDateTime $start=null)
Get appointment ids by consultation hour group.
Create styles array
The data for the language used.
global $ilDB
static getManager($a_as_name=false, $a_full_name=false, $a_user_id=null)
Get consultation hour manager for current user or specific user.