ILIAS  Release_4_4_x_branch Revision 61816
 All Data Structures Namespaces Files Functions Variables Groups Pages
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  {
32  include_once './Services/Calendar/classes/class.ilCalendarCategory.php';
34  }
35  $owner = ' ';
36  if($a_check_owner)
37  {
38  $owner = " AND be.obj_id = ".$ilDB->quote($a_user_id,'integer');
39  }
40 
41  $query = "SELECT ce.cal_id FROM cal_entries ce".
42  " JOIN cal_cat_assignments cca ON ce.cal_id = cca.cal_id".
43  " JOIN cal_categories cc ON cca.cat_id = cc.cat_id".
44  " JOIN booking_entry be ON ce.context_id = be.booking_id".
45  " WHERE cc.obj_id = ".$ilDB->quote($a_user_id,'integer').
46  $owner.
47  " AND cc.type = ".$ilDB->quote($a_type,'integer');
48 
49 
50  if($a_context_id)
51  {
52  $query .= " AND ce.context_id = ".$ilDB->quote($a_context_id, 'integer');
53  }
54  if($a_start)
55  {
56  $query .= " AND ce.starta = ".$ilDB->quote($a_start->get(IL_CAL_DATETIME, '', 'UTC'), 'text');
57  }
58 
59 
60  $res = $ilDB->query($query);
61  $entries = array();
62  while($row = $res->fetchRow(DB_FETCHMODE_OBJECT))
63  {
64  $entries[] = $row->cal_id;
65  }
66  return $entries;
67  }
68 
69 
76  public static function getAppointmentIdsByGroup($a_user_id, $a_ch_group_id, ilDateTime $start = null)
77  {
78  global $ilDB;
79 
80  // @todo check start time
81 
82  include_once './Services/Calendar/classes/class.ilCalendarCategory.php';
84 
85  $start_limit = '';
86  if($start instanceof ilDateTime)
87  {
88  $start_limit = 'AND ce.starta >= '.$ilDB->quote($start->get(IL_CAL_DATETIME,'','UTC'),'timestamp');
89  }
90 
91  $query = 'SELECT ce.cal_id FROM cal_entries ce '.
92  'JOIN cal_cat_assignments ca ON ce.cal_id = ca.cal_id '.
93  'JOIN cal_categories cc ON ca.cat_id = cc.cat_id '.
94  'JOIN booking_entry be ON ce.context_id = be.booking_id '.
95  'WHERE cc.obj_id = '.$ilDB->quote($a_user_id,'integer').' '.
96  'AND cc.type = '.$ilDB->quote($type,'integer').' '.
97  'AND be.booking_group = '.$ilDB->quote($a_ch_group_id,'integer').' '.
98  $start_limit.' '.
99  'ORDER BY ce.starta ';
100  $res = $ilDB->query($query);
101  $app_ids = array();
102  while($row = $res->fetchRow(DB_FETCHMODE_OBJECT))
103  {
104  $app_ids[] = $row->cal_id;
105  }
106  return $app_ids;
107  }
108 
113  public static function getAppointments($a_user_id)
114  {
115  $entries = array();
116  foreach(self::getAppointmentIds($a_user_id) as $app_id)
117  {
118  $entries[] = new ilCalendarEntry($app_id);
119  }
120  return $entries;
121  }
122 
128  public static function getManager($a_as_name = false)
129  {
130  global $ilDB, $ilUser;
131 
132  $set = $ilDB->query('SELECT admin_id FROM cal_ch_settings'.
133  ' WHERE user_id = '.$ilDB->quote($ilUser->getId(), 'integer'));
134  $row = $ilDB->fetchAssoc($set);
135  if($row && $row['admin_id'])
136  {
137  if($a_as_name)
138  {
139  return ilObjUser::_lookupLogin($row['admin_id']);
140  }
141  return (int)$row['admin_id'];
142  }
143  }
144 
150  public static function setManager($a_user_name)
151  {
152  global $ilDB, $ilUser;
153 
154  $user_id = false;
155  if($a_user_name)
156  {
157  $user_id = ilObjUser::_loginExists($a_user_name);
158  if(!$user_id)
159  {
160  return false;
161  }
162  }
163 
164  $ilDB->manipulate('DELETE FROM cal_ch_settings'.
165  ' WHERE user_id = '.$ilDB->quote($ilUser->getId(), 'integer'));
166 
167  if($user_id && $user_id != $ilUser->getId())
168  {
169  $ilDB->manipulate('INSERT INTO cal_ch_settings (user_id, admin_id)'.
170  ' VALUES ('.$ilDB->quote($ilUser->getId(), 'integer').','.
171  $ilDB->quote($user_id, 'integer').')');
172  }
173 
174  return true;
175  }
176 
181  public static function getManagedUsers()
182  {
183  global $ilDB, $ilUser;
184 
185  $all = array();
186  $set = $ilDB->query('SELECT user_id FROM cal_ch_settings'.
187  ' WHERE admin_id = '.$ilDB->quote($ilUser->getId(), 'integer'));
188  while($row = $ilDB->fetchAssoc($set))
189  {
190  $all[$row['user_id']] = ilObjUser::_lookupLogin($row['user_id']);
191  }
192  return $all;
193  }
194 }
195 ?>