24 include_once(
'./Services/Calendar/classes/class.ilCalendarCategory.php');
25 include_once(
'./Services/Calendar/classes/class.ilCalendarSettings.php');
26 include_once
'./Services/Calendar/classes/class.ilCalendarCache.php';
83 $this->logger =
$GLOBALS[
'DIC']->logger()->cal();
85 $this->user_id = $a_usr_id;
88 $this->user_id = $ilUser->getId();
105 return self::$instance;
122 $query =
"SELECT cat_id FROM cal_categories ".
123 "WHERE obj_id = ".$ilDB->quote($a_obj_id ,
'integer').
" ".
144 public static function _isOwner($a_usr_id,$a_cal_id)
148 $query =
"SELECT * FROM cal_categories ".
149 "WHERE cat_id = ".$ilDB->quote($a_cal_id ,
'integer').
" ".
150 "AND obj_id = ".$ilDB->quote($a_usr_id ,
'integer').
" ".
153 return $res->numRows() ? true :
false;
165 self::MODE_PERSONAL_DESKTOP_ITEMS,
179 self::MODE_REPOSITORY,
194 'categories' => $this->categories,
195 'categories_info' => $this->categories_info,
196 'subitem_categories'=> $this->subitem_categories
208 $info = unserialize($a_ser);
210 $this->categories =
$info[
'categories'];
211 $this->categories_info =
$info[
'categories_info'];
212 $this->subitem_categories =
$info[
'subitem_categories'];
221 $this->ch_user_id = $a_user_id;
236 $this->mode = $a_mode;
246 $this->target_ref_id = $a_ref_id;
262 public function initialize($a_mode,$a_source_ref_id = 0,$a_use_cache =
false)
270 if($this->
getMode() != self::MODE_CONSULTATION &&
271 $this->
getMode() != self::MODE_PORTFOLIO_CONSULTATION)
282 case self::MODE_REMOTE_ACCESS:
283 include_once(
'./Services/Calendar/classes/class.ilCalendarUserSettings.php');
294 case self::MODE_REMOTE_SELECTED:
298 case self::MODE_PERSONAL_DESKTOP_MEMBERSHIP:
302 case self::MODE_PERSONAL_DESKTOP_ITEMS:
306 case self::MODE_REPOSITORY:
307 $this->root_ref_id = $a_source_ref_id;
312 case self::MODE_MANAGE:
317 case self::MODE_CONSULTATION:
318 #$this->readPrivateCalendars(); 323 case self::MODE_PORTFOLIO_CONSULTATION:
332 $this->user_id.
':'.$a_mode.
':categories:'.(
int) $a_source_ref_id,
350 if(isset($this->categories_info[$a_cat_id]))
352 return $this->categories_info[$a_cat_id];
355 if(in_array($a_cat_id,(
array) $this->subitem_categories))
357 foreach($this->categories as $cat_id)
359 if(in_array($a_cat_id,$this->categories_info[$cat_id][
'subitem_ids']))
361 return $this->categories_info[$cat_id];
377 return $this->categories_info ? $this->categories_info :
array();
388 if($a_include_subitem_calendars)
390 return array_merge((
array) $this->categories, (
array) $this->subitem_categories);
393 return $this->categories ? $this->categories :
array();
404 if(!isset($this->categories_info[$a_cat_id][
'subitem_ids']))
406 return array($a_cat_id);
408 return array_merge((
array) $this->categories_info[$a_cat_id][
'subitem_ids'],
array($a_cat_id));
423 $has_personal_calendar =
false;
424 foreach($this->categories_info as
$info)
426 if($info[
'obj_type'] ==
'sess' || $info[
'obj_type'] ==
'exc')
432 $has_personal_calendar =
true;
435 if($info[
'editable'])
437 $cats[$info[
'cat_id']] = $info[
'title'];
441 if(!$has_personal_calendar)
443 $cats[0] = $lng->txt(
'cal_default_calendar');
445 return $cats ? $cats :
array();
456 foreach($this->categories_info as
$info)
462 $not[] = $info[
'cat_id'];
478 return isset($this->categories_info[$a_cat_id][
'editable'])
and $this->categories_info[$a_cat_id][
'editable'];
490 return in_array($a_cat_id,$this->categories)
or 491 in_array($a_cat_id,(
array) $this->subitem_categories);
514 include_once(
'./Services/Membership/classes/class.ilParticipants.php');
527 include_once
'./Services/Calendar/classes/class.ilCalendarCategory.php';
536 $this->categories[] = $a_cal_id;
560 $exercises =
array();
563 if($ilAccess->checkAccess(
'read',
'',$item[
'ref_id']))
565 switch($item[
'type'])
568 $courses[] = $item[
'obj_id'];
572 $sessions[] = $item[
'obj_id'];
576 $groups[] = $item[
'obj_id'];
580 $exercises[] = $item[
'obj_id'];
603 global $ilAccess,$tree;
610 #$query = "SELECT ref_id,obd.obj_id obj_id FROM tree t1 ". 611 # "JOIN object_reference obr ON t1.child = obr.ref_id ". 612 # "JOIN object_data obd ON obd.obj_id = obr.obj_id ". 613 # "WHERE t1.lft >= (SELECT lft FROM tree WHERE child = ".$this->db->quote($this->root_ref_id,'integer')." ) ". 614 # "AND t1.lft <= (SELECT rgt FROM tree WHERE child = ".$this->db->quote($this->root_ref_id,'integer')." ) ". 615 # "AND ".$ilDB->in('type',array('crs','grp','sess'),false,'text')." ". 618 $subtree_query =
$GLOBALS[
'tree']->getSubTreeQuery(
620 array(
'object_reference.ref_id',
'object_data.obj_id'),
621 array(
'crs',
'grp',
'sess',
'exc')
624 $res = $ilDB->query($subtree_query);
628 if($tree->isDeleted(
$row->ref_id))
634 if($obj_type ==
'crs' or $obj_type ==
'grp')
642 if($ilAccess->checkAccess(
'read',
'',
$row->ref_id))
644 $obj_ids[] =
$row->obj_id;
658 global $rbacsystem,$ilAccess;
661 $query =
"SELECT * FROM cal_categories ".
668 $this->categories[] =
$row->cat_id;
669 $this->categories_info[
$row->cat_id][
'obj_id'] =
$row->obj_id;
670 $this->categories_info[
$row->cat_id][
'cat_id'] =
$row->cat_id;
671 $this->categories_info[
$row->cat_id][
'title'] =
$row->title;
672 $this->categories_info[
$row->cat_id][
'color'] =
$row->color;
673 $this->categories_info[
$row->cat_id][
'type'] =
$row->type;
675 $this->categories_info[
$row->cat_id][
'accepted'] =
false;
694 $query =
"SELECT cat_id FROM cal_categories ".
696 "AND obj_id = ".$this->db->quote($ilUser->getId(),
'integer').
" ";
700 $cat_ids[] =
$row->cat_id;
704 include_once(
'./Services/Calendar/classes/class.ilCalendarSharedStatus.php');
706 if(!$cat_ids = array_merge((
array) $cat_ids, $accepted_ids))
713 $query =
"SELECT * FROM cal_categories ".
715 "AND ".$ilDB->in(
'cat_id',$cat_ids,
false,
'integer').
" ".
721 $this->categories[] =
$row->cat_id;
722 $this->categories_info[
$row->cat_id][
'obj_id'] =
$row->obj_id;
723 $this->categories_info[
$row->cat_id][
'cat_id'] =
$row->cat_id;
724 $this->categories_info[
$row->cat_id][
'title'] =
$row->title;
725 $this->categories_info[
$row->cat_id][
'color'] =
$row->color;
726 $this->categories_info[
$row->cat_id][
'type'] =
$row->type;
728 include_once
'./Services/Calendar/classes/class.ilCalendarShared.php';
729 if(in_array(
$row->cat_id, $accepted_ids))
732 if($shared->isEditableForUser($ilUser->getId()))
734 $this->categories_info[
$row->cat_id][
'editable'] =
true;
738 $this->categories_info[
$row->cat_id][
'editable'] =
false;
743 $this->categories_info[
$row->cat_id][
'editable'] =
true;
746 $this->categories_info[
$row->cat_id][
'accepted'] = in_array(
$row->cat_id, $accepted_ids);
769 $query =
'SELECT DISTINCT(cc.cat_id) FROM booking_entry be '.
770 'LEFT JOIN booking_obj_assignment bo ON be.booking_id = bo.booking_id '.
771 'JOIN cal_entries ce ON be.booking_id = ce.context_id '.
772 'JOIN cal_cat_assignments ca ON ce.cal_id = ca.cal_id '.
773 'JOIN cal_categories cc ON ca.cat_id = cc.cat_id '.
774 'WHERE ((bo.target_obj_id IS NULL) OR bo.target_obj_id = '.$ilDB->quote($target_obj_id,
'integer').
' ) '.
775 'AND cc.obj_id = '.$ilDB->quote($this->
getCHUserId(),
'integer');
787 $query =
'SELECT * FROM cal_categories '.
788 'WHERE '.$ilDB->in(
'cat_id',
$categories,
false,
'integer');
792 $this->categories[] =
$row->cat_id;
793 $this->categories_info[
$row->cat_id][
'obj_id'] =
$row->obj_id;
794 $this->categories_info[
$row->cat_id][
'cat_id'] =
$row->cat_id;
795 $this->categories_info[
$row->cat_id][
'title'] =
$row->title;
796 $this->categories_info[
$row->cat_id][
'color'] =
$row->color;
797 $this->categories_info[
$row->cat_id][
'type'] =
$row->type;
798 $this->categories_info[
$row->cat_id][
'editable'] =
false;
799 $this->categories_info[
$row->cat_id][
'accepted'] =
false;
800 $this->categories_info[
$row->cat_id][
'remote'] =
false;
806 $query =
"SELECT * FROM cal_categories cc ".
808 "AND obj_id = ".$ilDB->quote($this->
getCHUserId(),
'integer');
812 $this->categories[] =
$row->cat_id;
813 $this->categories_info[
$row->cat_id][
'obj_id'] =
$row->obj_id;
814 $this->categories_info[
$row->cat_id][
'cat_id'] =
$row->cat_id;
815 $this->categories_info[
$row->cat_id][
'title'] =
$row->title;
816 $this->categories_info[
$row->cat_id][
'color'] =
$row->color;
817 $this->categories_info[
$row->cat_id][
'type'] =
$row->type;
818 $this->categories_info[
$row->cat_id][
'editable'] =
false;
819 $this->categories_info[
$row->cat_id][
'accepted'] =
false;
820 $this->categories_info[
$row->cat_id][
'remote'] =
false;
840 $query =
"SELECT * FROM cal_categories ".
842 "AND obj_id = ".$ilDB->quote(
$user_id,
'integer');
846 $this->categories[] =
$row->cat_id;
847 $this->categories_info[
$row->cat_id][
'obj_id'] =
$row->obj_id;
848 $this->categories_info[
$row->cat_id][
'cat_id'] =
$row->cat_id;
849 $this->categories_info[
$row->cat_id][
'title'] =
$row->title;
850 $this->categories_info[
$row->cat_id][
'color'] =
$row->color;
851 $this->categories_info[
$row->cat_id][
'type'] =
$row->type;
852 $this->categories_info[
$row->cat_id][
'editable'] =
false;
853 $this->categories_info[
$row->cat_id][
'accepted'] =
false;
854 $this->categories_info[
$row->cat_id][
'remote'] =
false;
866 global $ilAccess,$tree;
869 if(!count($a_obj_ids))
874 $query =
"SELECT * FROM cal_categories ".
876 "AND ".$ilDB->in(
'obj_id',$a_obj_ids,
false,
'integer').
" ".
884 if($obj_type ==
'crs' or $obj_type ==
'grp')
896 if($ilAccess->checkAccess(
'edit_event',
'',$ref_id))
902 elseif($ilAccess->checkAccess(
'read',
'',$ref_id))
911 $this->categories_info[
$row->cat_id][
'editable'] = $editable;
913 $this->categories[] =
$row->cat_id;
914 $this->categories_info[
$row->cat_id][
'obj_id'] =
$row->obj_id;
915 $this->categories_info[
$row->cat_id][
'cat_id'] =
$row->cat_id;
916 $this->categories_info[
$row->cat_id][
'color'] =
$row->color;
917 #$this->categories_info[$row->cat_id]['title'] = ilObject::_lookupTitle($row->obj_id); 918 $this->categories_info[
$row->cat_id][
'title'] =
$row->title;
920 $this->categories_info[
$row->cat_id][
'type'] =
$row->type;
921 $this->categories_info[
$row->cat_id][
'remote'] =
false;
936 $course_ids =
array();
937 foreach($this->categories as $cat_id)
939 if($this->categories_info[$cat_id][
'obj_type'] ==
'crs' or $this->categories_info[$cat_id][
'obj_type'] ==
'grp')
941 $course_ids[] = $this->categories_info[$cat_id][
'obj_id'];
945 $query =
"SELECT od2.obj_id sess_id, od1.obj_id crs_id,cat_id FROM object_data od1 ".
946 "JOIN object_reference or1 ON od1.obj_id = or1.obj_id ".
947 "JOIN tree t ON or1.ref_id = t.parent ".
948 "JOIN object_reference or2 ON t.child = or2.ref_id ".
949 "JOIN object_data od2 ON or2.obj_id = od2.obj_id ".
950 "JOIN cal_categories cc ON od2.obj_id = cc.obj_id ".
951 "WHERE ".$ilDB->in(
'od2.type',
array(
'sess',
'exc'),
false,
'text').
952 "AND (od1.type = 'crs' OR od1.type = 'grp') ".
953 "AND ".$ilDB->in(
'od1.obj_id',$course_ids,
false,
'integer').
' '.
954 "AND or2.deleted IS NULL";
958 $course_sessions =
array();
961 $cat_ids[] =
$row->cat_id;
962 $course_sessions[
$row->crs_id][
$row->sess_id] =
$row->cat_id;
963 $this->subitem_categories[] =
$row->cat_id;
966 foreach($this->categories as $cat_id)
969 ($this->categories_info[$cat_id][
'obj_type'] ==
'crs' ||
970 $this->categories_info[$cat_id][
'obj_type'] ==
'grp' ) &&
971 isset($this->categories_info[$cat_id][
'obj_id']) &&
972 isset($course_sessions[$this->categories_info[$cat_id][
'obj_id']]) &&
973 is_array($course_sessions[$this->categories_info[$cat_id][
'obj_id']]))
975 foreach($course_sessions[$this->categories_info[$cat_id][
'obj_id']] as $sess_id => $sess_cat_id)
977 $this->categories_info[$cat_id][
'subitem_ids'][$sess_id] = $sess_cat_id;
978 $this->categories_info[$cat_id][
'subitem_obj_ids'][$sess_cat_id] = $sess_id;
983 $this->categories_info[$cat_id][
'subitem_ids'] =
array();
984 $this->categories_info[$cat_id][
'subitem_obj_ids'] =
array();
1000 $set = $ilDB->query(
"SELECT * FROM cal_categories ".
1002 "AND obj_id = ".$ilDB->quote($a_user_id,
'integer'));
1004 while ($rec = $ilDB->fetchAssoc($set))
class for calendar categories
static getInstance()
get singleton instance
readSelectedItemCalendars()
Read categories of selected items.
addSubitemCalendars()
Add subitem calendars E.g.
static _getInstance()
get singleton instance
static _isOwner($a_usr_id, $a_cal_id)
check if user is owner of a category
wakeup($a_ser)
Load from serialize string.
static getAcceptedCalendars($a_usr_id)
get accepted shared calendars
getCategoryInfo($a_cat_id)
public
const MODE_PERSONAL_DESKTOP_MEMBERSHIP
static _getMembershipByType($a_usr_id, $a_type, $a_only_member_role=false)
get membership by type Get course or group membership
$GLOBALS['loaded']
Global hash that tracks already loaded includes.
setCHUserId($a_user_id)
Set ch user id.
const CAL_SELECTION_MEMBERSHIP
static _lookupCategoryIdByObjId($a_obj_id)
lookup category by obj_id
const MODE_REMOTE_SELECTED
sleep()
Serialize categories.
isVisible($a_cat_id)
check if category is visible
Stores calendar categories.
static deletePDItemsCache($a_usr_id)
Delete cache (add remove desktop item)
readConsultationHoursCalendar($a_target_ref_id=NULL)
Read personal consultation hours calendar.
initialize($a_mode, $a_source_ref_id=0, $a_use_cache=false)
initialize visible categories
Handles shared calendars.
static _getAllReferences($a_id)
get all reference ids of object
isEditable($a_cat_id)
check if category is editable
static deleteRepositoryCache($a_usr_id)
Delete cache.
readPublicCalendars()
Read public calendars.
getCHUserId()
Get ch user id.
static _getInstance()
get instance for logged in user
static _lookupObjId($a_id)
getSubitemCategories($a_cat_id)
get subitem categories for a specific category
readSelectedCategories($a_obj_ids)
read selected categories
readSelectedCalendar($a_cal_id)
Read info about selected calendar.
readBookingCalendar($user_id=NULL)
Read booking manager calendar.
const MODE_PORTFOLIO_CONSULTATION
prepareCategoriesOfUserForSelection()
prepare categories of users for selection
static _getInstance($a_usr_id=0)
get singleton instance
setTargetRefId($a_ref_id)
Create styles array
The data for the language used.
static _lookupType($a_id, $a_reference=false)
lookup object type
readReposCalendars()
Read available repository calendars.
static _lookupDesktopItems($user_id, $a_types="")
get all desktop items of user and specified type
getCategories($a_include_subitem_calendars=false)
get categories
__construct($a_usr_id=0)
Singleton instance.
getNotificationCalendars()
Get all calendars that allow send of notifications (Editable and course group calendars) ...
readPrivateCalendars()
Read private calendars.
static lookupPrivateCategories($a_user_id)
Lookup private categories of user.
readPDCalendars()
Read categories of user.
getCategoriesInfo()
get categories
const MODE_PERSONAL_DESKTOP_ITEMS