ILIAS  release_5-4 Revision v5.4.26-12-gabc799a52e6
class.ilCalendarCategory.php
Go to the documentation of this file.
1 <?php
2 /*
3  +-----------------------------------------------------------------------------+
4  | ILIAS open source |
5  +-----------------------------------------------------------------------------+
6  | Copyright (c) 1998-2006 ILIAS open source, University of Cologne |
7  | |
8  | This program is free software; you can redistribute it and/or |
9  | modify it under the terms of the GNU General Public License |
10  | as published by the Free Software Foundation; either version 2 |
11  | of the License, or (at your option) any later version. |
12  | |
13  | This program is distributed in the hope that it will be useful, |
14  | but WITHOUT ANY WARRANTY; without even the implied warranty of |
15  | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
16  | GNU General Public License for more details. |
17  | |
18  | You should have received a copy of the GNU General Public License |
19  | along with this program; if not, write to the Free Software |
20  | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
21  +-----------------------------------------------------------------------------+
22 */
23 
34 {
35  const LTYPE_LOCAL = 1;
36  const LTYPE_REMOTE = 2;
37 
38  private static $instances = null;
39 
40  const DEFAULT_COLOR = '#04427e';
41 
42  const TYPE_USR = 1; // user
43  const TYPE_OBJ = 2; // object
44  const TYPE_GLOBAL = 3; // global
45  const TYPE_CH = 4; // consultation hours
46  const TYPE_BOOK = 5; // booking manager
47 
48  protected static $SORTED_TYPES = array(
49  0 => self::TYPE_GLOBAL,
50  1 => self::TYPE_USR,
51  2 => self::TYPE_CH,
52  3 => self::TYPE_BOOK,
53  4 => self::TYPE_OBJ
54  );
55 
56 
57  protected $cat_id;
58  protected $color;
59  protected $type = self::TYPE_USR;
60  protected $obj_id;
61  protected $obj_type = null;
62  protected $title;
63 
64  protected $location = self::LTYPE_LOCAL;
65  protected $remote_url;
66  protected $remote_user;
67  protected $remote_pass;
68  protected $remote_sync = null;
69 
70  protected $db;
71 
72 
78  public function __construct($a_cat_id = 0)
79  {
80  global $DIC;
81 
82  $ilDB = $DIC['ilDB'];
83 
84  $this->db = $ilDB;
85  $this->cat_id = $a_cat_id;
86 
87  $this->read();
88  }
89 
97  public static function _getInstanceByObjId($a_obj_id)
98  {
99  global $DIC;
100 
101  $ilDB = $DIC['ilDB'];
102 
103  $query = "SELECT cat_id FROM cal_categories " .
104  "WHERE obj_id = " . $ilDB->quote($a_obj_id, 'integer') . " " .
105  "AND type = " . $ilDB->quote(self::TYPE_OBJ, 'integer');
106  $res = $ilDB->query($query);
107  while ($row = $res->fetchRow(ilDBConstants::FETCHMODE_OBJECT)) {
108  return new ilCalendarCategory($row->cat_id);
109  }
110  return null;
111  }
112 
118  public static function getInstanceByCategoryId($a_cat_id)
119  {
120  if (!self::$instances[$a_cat_id]) {
121  return self::$instances[$a_cat_id] = new ilCalendarCategory($a_cat_id);
122  }
123  return self::$instances[$a_cat_id];
124  }
125 
129  public static function lookupCategorySortIndex($a_type_id)
130  {
131  return array_search($a_type_id, self::$SORTED_TYPES);
132  }
138  public static function lookupAppointments($a_category_id)
139  {
140  global $DIC;
141 
142  $ilDB = $DIC['ilDB'];
143 
144  $query = "SELECT * FROM cal_cat_assignments " .
145  'WHERE cat_id = ' . $ilDB->quote($a_category_id, 'integer');
146  $res = $ilDB->query($query);
147  while ($row = $res->fetchRow(ilDBConstants::FETCHMODE_OBJECT)) {
148  $apps[] = $row->cal_id;
149  }
150  return $apps ? $apps : array();
151  }
152 
153 
160  public function getCategoryID()
161  {
162  return $this->cat_id;
163  }
164 
172  public function setTitle($a_title)
173  {
174  $this->title = $a_title;
175  }
176 
183  public function getTitle()
184  {
185  return $this->title;
186  }
187 
188 
195  public function setColor($a_color)
196  {
197  $this->color = $a_color;
198  }
199 
206  public function getColor()
207  {
208  return $this->color;
209  }
210 
217  public function setType($a_type)
218  {
219  $this->type = $a_type;
220  }
221 
228  public function getType()
229  {
230  return $this->type;
231  }
232 
239  public function setObjId($a_obj_id)
240  {
241  $this->obj_id = $a_obj_id;
242  }
243 
250  public function getObjId()
251  {
252  return $this->obj_id;
253  }
254 
260  public function getObjType()
261  {
262  return $this->obj_type;
263  }
264 
265  public function getLocationType()
266  {
267  return $this->location;
268  }
269 
270  public function setLocationType($a_type)
271  {
272  $this->location = $a_type;
273  }
274 
275  public function setRemoteUrl($a_url)
276  {
277  $this->remote_url = $a_url;
278  }
279 
280  public function getRemoteUrl()
281  {
282  return $this->remote_url;
283  }
284 
285  public function setRemoteUser($a_user)
286  {
287  $this->remote_user = $a_user;
288  }
289 
290  public function getRemoteUser()
291  {
292  return $this->remote_user;
293  }
294 
295  public function setRemotePass($a_pass)
296  {
297  $this->remote_pass = $a_pass;
298  }
299 
300  public function getRemotePass()
301  {
302  return $this->remote_pass;
303  }
304 
309  public function setRemoteSyncLastExecution(ilDateTime $dt = null)
310  {
311  $this->remote_sync = $dt;
312  }
313 
318  public function getRemoteSyncLastExecution()
319  {
320  if ($this->remote_sync instanceof ilDateTime) {
321  return $this->remote_sync;
322  }
323  return new ilDateTime();
324  }
325 
326 
333  public function add()
334  {
335  global $DIC;
336 
337  $ilDB = $DIC['ilDB'];
338 
339  $next_id = $ilDB->nextId('cal_categories');
340 
341  $query = "INSERT INTO cal_categories (cat_id,obj_id,color,type,title,loc_type,remote_url,remote_user,remote_pass,remote_sync) " .
342  "VALUES ( " .
343  $ilDB->quote($next_id, 'integer') . ", " .
344  $this->db->quote($this->getObjId(), 'integer') . ", " .
345  $this->db->quote($this->getColor(), 'text') . ", " .
346  $this->db->quote($this->getType(), 'integer') . ", " .
347  $this->db->quote($this->getTitle(), 'text') . ", " .
348  $this->db->quote($this->getLocationType(), 'integer') . ', ' .
349  $this->db->quote($this->getRemoteUrl(), 'text') . ', ' .
350  $this->db->quote($this->getRemoteUser(), 'text') . ', ' .
351  $this->db->quote($this->getRemotePass(), 'text') . ', ' .
352  $this->db->quote($this->getRemoteSyncLastExecution()->get(IL_CAL_DATETIME, '', ilTimeZone::UTC), 'timestamp') . ' ' .
353  ")";
354 
355  $ilDB->manipulate($query);
356 
357  $this->cat_id = $next_id;
358  return $this->cat_id;
359  }
360 
367  public function update()
368  {
369  global $DIC;
370 
371  $ilDB = $DIC['ilDB'];
372 
373  $query = "UPDATE cal_categories " .
374  "SET obj_id = " . $this->db->quote($this->getObjId(), 'integer') . ", " .
375  "color = " . $this->db->quote($this->getColor(), 'text') . ", " .
376  "type = " . $this->db->quote($this->getType(), 'integer') . ", " .
377  "title = " . $this->db->quote($this->getTitle(), 'text') . ", " .
378  "loc_type = " . $this->db->quote($this->getLocationType(), 'integer') . ', ' .
379  "remote_url = " . $this->db->quote($this->getRemoteUrl(), 'text') . ', ' .
380  "remote_user = " . $this->db->quote($this->getRemoteUser(), 'text') . ', ' .
381  "remote_pass = " . $this->db->quote($this->getRemotePass(), 'text') . ', ' .
382  'remote_sync = ' . $this->db->quote($this->getRemoteSyncLastExecution()->get(IL_CAL_DATETIME, '', ilTimeZone::UTC), 'timestamp') . ' ' .
383  "WHERE cat_id = " . $this->db->quote($this->cat_id, 'integer') . " ";
384  $res = $ilDB->manipulate($query);
385  return true;
386  }
387 
394  public function delete()
395  {
396  global $DIC;
397 
398  $ilDB = $DIC['ilDB'];
399 
400  $query = "DELETE FROM cal_categories " .
401  "WHERE cat_id = " . $this->db->quote($this->cat_id, 'integer') . " ";
402  $res = $ilDB->manipulate($query);
403 
404  include_once('./Services/Calendar/classes/class.ilCalendarVisibility.php');
406 
407  include_once('./Services/Calendar/classes/class.ilCalendarCategoryAssignments.php');
408  foreach (ilCalendarCategoryAssignments::_getAssignedAppointments(array($this->cat_id)) as $app_id) {
409  include_once('./Services/Calendar/classes/class.ilCalendarEntry.php');
410  ilCalendarEntry::_delete($app_id);
411  }
413  }
414 
421  public function validate()
422  {
424  return false;
425  }
426  if (strlen($this->getTitle()) and strlen($this->getColor()) and $this->getType()) {
427  return true;
428  }
429  return false;
430  }
431 
437  private function read()
438  {
439  global $DIC;
440 
441  $ilDB = $DIC['ilDB'];
442 
443  if (!$this->cat_id) {
444  return true;
445  }
446 
447  $query = "SELECT * FROM cal_categories " .
448  "WHERE cat_id = " . $this->db->quote($this->getCategoryID(), 'integer') . " ";
449  $res = $this->db->query($query);
450  while ($row = $res->fetchRow(ilDBConstants::FETCHMODE_OBJECT)) {
451  $this->cat_id = $row->cat_id;
452  $this->obj_id = $row->obj_id;
453  $this->type = $row->type;
454  $this->color = $row->color;
455  $this->title = $row->title;
456  $this->location = $row->loc_type;
457  $this->remote_url = $row->remote_url;
458  $this->remote_user = $row->remote_user;
459  $this->remote_pass = $row->remote_pass;
460 
461  if ($row->remote_sync) {
462  $this->remote_sync = new ilDateTime($row->remote_sync, IL_CAL_DATETIME, 'UTC');
463  } else {
464  $this->remote_sync = new ilDateTime();
465  }
466  }
467  if ($this->getType() == self::TYPE_OBJ) {
468  $this->title = ilObject::_lookupTitle($this->getObjId());
469  $this->obj_type = ilObject::_lookupType($this->getObjId());
470  }
471  }
472 }
static lookupCategorySortIndex($a_type_id)
Lookup sort index of calendar type.
const IL_CAL_DATETIME
global $DIC
Definition: saml.php:7
if(PHP_SAPI !='cli') color
Definition: langcheck.php:120
static _deleteCategories($a_cat_id)
delete by category
setObjId($a_obj_id)
set obj id
setColor($a_color)
set color
getRemoteSyncLastExecution()
Get last execution date of remote sync.
static _lookupTitle($a_id)
lookup object title
Stores calendar categories.
__construct($a_cat_id=0)
Constructor.
$a_type
Definition: workflow.php:92
static _delete($a_entry_id)
delete entry
static lookupAppointments($a_category_id)
get all assigned appointment ids
foreach($_POST as $key=> $value) $res
static _getInstanceByObjId($a_obj_id)
get instance by obj_id
Date and time handling
$query
static getInstanceByCategoryId($a_cat_id)
Get instance by category id.
static _lookupType($a_id, $a_reference=false)
lookup object type
static _deleteByCategoryId($a_cat_id)
Delete assignments by category id.
$row
static _getAssignedAppointments($a_cat_id)
Get assigned apointments.
setTitle($a_title)
set title
global $ilDB
getCategoryID()
get category id
setRemoteSyncLastExecution(ilDateTime $dt=null)
Set remote sync last execution.