24include_once(
'./Services/Calendar/classes/class.ilCalendarCategory.php');
 
   25include_once(
'./Services/Calendar/classes/class.ilCalendarSettings.php');
 
   26include_once 
'./Services/Calendar/classes/class.ilCalendarCache.php';
 
   78                $this->user_id = $a_usr_id;
 
   81                        $this->user_id = 
$ilUser->getId();
 
  115                $query = 
"SELECT cat_id FROM cal_categories  ".
 
  116                        "WHERE obj_id = ".$ilDB->quote($a_obj_id ,
'integer').
" ".
 
  137        public static function _isOwner($a_usr_id,$a_cal_id)
 
  141                $query = 
"SELECT * FROM cal_categories ".
 
  142                        "WHERE cat_id = ".$ilDB->quote($a_cal_id ,
'integer').
" ".
 
  143                        "AND obj_id = ".$ilDB->quote($a_usr_id ,
'integer').
" ".
 
  146                return $res->numRows() ? true : 
false;
 
  158                        self::MODE_PERSONAL_DESKTOP_ITEMS,
 
  172                        self::MODE_REPOSITORY,
 
  187                                'categories'            => $this->categories,
 
  188                                'categories_info'       => $this->categories_info,
 
  189                                'subitem_categories'=> $this->subitem_categories
 
  201                $info = unserialize($a_ser);
 
  203                $this->categories = 
$info[
'categories'];
 
  204                $this->categories_info = 
$info[
'categories_info'];
 
  205                $this->subitem_categories = 
$info[
'subitem_categories'];
 
  214                $this->ch_user_id = $a_user_id;
 
  229                $this->mode = $a_mode;
 
  239                $this->target_ref_id = $a_ref_id;
 
  255        public function initialize($a_mode,$a_source_ref_id = 0,$a_use_cache = 
false)
 
  263                                if($this->
getMode() != self::MODE_CONSULTATION &&
 
  264                                        $this->
getMode() != self::MODE_PORTFOLIO_CONSULTATION)
 
  276                                include_once(
'./Services/Calendar/classes/class.ilCalendarUserSettings.php');
 
  300                                $this->root_ref_id = $a_source_ref_id;
 
  311                                #$this->readPrivateCalendars(); 
  325                                $this->user_id.
':'.$a_mode.
':categories:'.(
int) $a_source_ref_id,
 
  343                if(isset($this->categories_info[$a_cat_id]))
 
  345                        return $this->categories_info[$a_cat_id];
 
  348                if(in_array($a_cat_id,(array) $this->subitem_categories))
 
  350                        foreach($this->categories as $cat_id)
 
  352                                if(in_array($a_cat_id,$this->categories_info[$cat_id][
'subitem_ids']))
 
  354                                        return $this->categories_info[$cat_id];
 
  370                return $this->categories_info ? $this->categories_info : array();
 
  381                if($a_include_subitem_calendars)
 
  383                        return array_merge((array) $this->categories, (array) $this->subitem_categories);
 
  386                return $this->categories ? $this->categories : array();
 
  397                if(!isset($this->categories_info[$a_cat_id][
'subitem_ids']))
 
  399                        return array($a_cat_id);
 
  401                return array_merge((array) $this->categories_info[$a_cat_id][
'subitem_ids'],array($a_cat_id));
 
  416                $has_personal_calendar = 
false;
 
  417                foreach($this->categories_info as 
$info)
 
  419                        if(
$info[
'obj_type'] == 
'sess' || 
$info[
'obj_type'] == 
'exc')
 
  425                                $has_personal_calendar = 
true;
 
  428                        if(
$info[
'editable'])
 
  434                if(!$has_personal_calendar)
 
  436                        $cats[0] = 
$lng->txt(
'cal_default_calendar'); 
 
  438                return $cats ? $cats : array();
 
  449                foreach($this->categories_info as 
$info)
 
  455                                        $not[] = 
$info[
'cat_id'];
 
  471                return isset($this->categories_info[$a_cat_id][
'editable']) and $this->categories_info[$a_cat_id][
'editable'];
 
  483                return in_array($a_cat_id,$this->categories) or 
 
  484                        in_array($a_cat_id,(array) $this->subitem_categories);
 
  507                include_once(
'./Services/Membership/classes/class.ilParticipants.php');
 
  520                include_once 
'./Services/Calendar/classes/class.ilCalendarCategory.php';
 
  529                        $this->categories[] = $a_cal_id;
 
  553                $exercises = array();
 
  556                        if($ilAccess->checkAccess(
'read',
'',$item[
'ref_id']))
 
  558                                switch($item[
'type'])
 
  561                                                $courses[] = $item[
'obj_id'];
 
  565                                                $sessions[] = $item[
'obj_id'];
 
  569                                                $groups[] = $item[
'obj_id'];
 
  573                                                $exercises[] = $item[
'obj_id'];
 
  596                global $ilAccess,$tree;
 
  603                #$query = "SELECT ref_id,obd.obj_id obj_id FROM tree t1 ".
 
  604                #       "JOIN object_reference obr ON t1.child = obr.ref_id ".
 
  605                #       "JOIN object_data obd ON obd.obj_id = obr.obj_id ".
 
  606                #       "WHERE t1.lft >= (SELECT lft FROM tree WHERE child = ".$this->db->quote($this->root_ref_id,'integer')." ) ".
 
  607                #       "AND t1.lft <= (SELECT rgt FROM tree WHERE child = ".$this->db->quote($this->root_ref_id,'integer')." ) ".
 
  608                #       "AND ".$ilDB->in('type',array('crs','grp','sess'),false,'text')." ".
 
  611                $subtree_query = 
$GLOBALS[
'tree']->getSubTreeQuery(
 
  613                                array(
'object_reference.ref_id',
'object_data.obj_id'),
 
  614                                array(
'crs',
'grp',
'sess',
'exc')
 
  621                        if($tree->isDeleted(
$row->ref_id))
 
  627                        if($obj_type == 
'crs' or $obj_type == 
'grp')
 
  635                        if($ilAccess->checkAccess(
'read',
'',
$row->ref_id))
 
  637                                $obj_ids[] = 
$row->obj_id;
 
  651                global $rbacsystem,$ilAccess;
 
  654                $query = 
"SELECT * FROM cal_categories ".
 
  661                        $this->categories[] = 
$row->cat_id;
 
  662                        $this->categories_info[
$row->cat_id][
'obj_id'] = 
$row->obj_id;
 
  663                        $this->categories_info[
$row->cat_id][
'cat_id'] = 
$row->cat_id;
 
  664                        $this->categories_info[
$row->cat_id][
'title'] = 
$row->title;
 
  665                        $this->categories_info[
$row->cat_id][
'color'] = 
$row->color;
 
  666                        $this->categories_info[
$row->cat_id][
'type'] = 
$row->type;
 
  668                        $this->categories_info[
$row->cat_id][
'accepted'] = 
false;
 
  687                $query = 
"SELECT cat_id FROM cal_categories ".
 
  689                        "AND obj_id = ".$this->db->quote(
$ilUser->getId(),
'integer').
" ";
 
  693                        $cat_ids[] = 
$row->cat_id;
 
  697                include_once(
'./Services/Calendar/classes/class.ilCalendarSharedStatus.php');
 
  699                if(!$cat_ids = array_merge((array) $cat_ids, $accepted_ids))
 
  706                $query = 
"SELECT * FROM cal_categories ".
 
  708                        "AND ".$ilDB->in(
'cat_id',$cat_ids,
false,
'integer').
" ".
 
  714                        $this->categories[] = 
$row->cat_id;
 
  715                        $this->categories_info[
$row->cat_id][
'obj_id'] = 
$row->obj_id;
 
  716                        $this->categories_info[
$row->cat_id][
'cat_id'] = 
$row->cat_id;
 
  717                        $this->categories_info[
$row->cat_id][
'title'] = 
$row->title;
 
  718                        $this->categories_info[
$row->cat_id][
'color'] = 
$row->color;
 
  719                        $this->categories_info[
$row->cat_id][
'type'] = 
$row->type;
 
  721                        include_once 
'./Services/Calendar/classes/class.ilCalendarShared.php';
 
  722                        if(in_array(
$row->cat_id, $accepted_ids))
 
  725                                if($shared->isEditableForUser(
$ilUser->getId()))
 
  727                                        $this->categories_info[
$row->cat_id][
'editable'] = 
true;
 
  731                                        $this->categories_info[
$row->cat_id][
'editable'] = 
false;
 
  736                                $this->categories_info[
$row->cat_id][
'editable'] = 
true;
 
  739                        $this->categories_info[
$row->cat_id][
'accepted'] = in_array(
$row->cat_id, $accepted_ids);
 
  762                        $query = 
'SELECT DISTINCT(cc.cat_id) FROM booking_entry be '.
 
  763                                        'LEFT JOIN booking_obj_assignment bo ON be.booking_id = bo.booking_id '.
 
  764                                        'JOIN cal_entries ce ON be.booking_id = ce.context_id '.
 
  765                                        'JOIN cal_cat_assignments ca ON ce.cal_id = ca.cal_id '.
 
  766                                        'JOIN cal_categories cc ON ca.cat_id = cc.cat_id '.
 
  767                                        'WHERE ((bo.target_obj_id IS NULL) OR bo.target_obj_id = '.$ilDB->quote($target_obj_id,
'integer').
' ) '.
 
  768                                        'AND cc.obj_id = '.$ilDB->quote($this->
getCHUserId(),
'integer');
 
  780                                $query = 
'SELECT * FROM cal_categories '.
 
  781                                                'WHERE '.$ilDB->in(
'cat_id',
$categories,
false,
'integer');
 
  785                                        $this->categories[] = 
$row->cat_id;
 
  786                                        $this->categories_info[
$row->cat_id][
'obj_id'] = 
$row->obj_id;
 
  787                                        $this->categories_info[
$row->cat_id][
'cat_id'] = 
$row->cat_id;
 
  788                                        $this->categories_info[
$row->cat_id][
'title'] = 
$row->title;
 
  789                                        $this->categories_info[
$row->cat_id][
'color'] = 
$row->color;
 
  790                                        $this->categories_info[
$row->cat_id][
'type'] = 
$row->type;
 
  791                                        $this->categories_info[
$row->cat_id][
'editable'] = 
false;
 
  792                                        $this->categories_info[
$row->cat_id][
'accepted'] = 
false;
 
  793                                        $this->categories_info[
$row->cat_id][
'remote'] = 
false;
 
  799                        $query = 
"SELECT *  FROM cal_categories cc ".
 
  801                        "AND obj_id = ".$ilDB->quote($this->
getCHUserId(),
'integer');
 
  805                                $this->categories[] = 
$row->cat_id;
 
  806                                $this->categories_info[
$row->cat_id][
'obj_id'] = 
$row->obj_id;
 
  807                                $this->categories_info[
$row->cat_id][
'cat_id'] = 
$row->cat_id;
 
  808                                $this->categories_info[
$row->cat_id][
'title'] = 
$row->title;
 
  809                                $this->categories_info[
$row->cat_id][
'color'] = 
$row->color;
 
  810                                $this->categories_info[
$row->cat_id][
'type'] = 
$row->type;
 
  811                                $this->categories_info[
$row->cat_id][
'editable'] = 
false;
 
  812                                $this->categories_info[
$row->cat_id][
'accepted'] = 
false;
 
  813                                $this->categories_info[
$row->cat_id][
'remote'] = 
false;
 
  833                $query = 
"SELECT *  FROM cal_categories ".
 
  835                        "AND obj_id = ".$ilDB->quote(
$user_id,
'integer');
 
  839                        $this->categories[] = 
$row->cat_id;
 
  840                        $this->categories_info[
$row->cat_id][
'obj_id'] = 
$row->obj_id;
 
  841                        $this->categories_info[
$row->cat_id][
'cat_id'] = 
$row->cat_id;
 
  842                        $this->categories_info[
$row->cat_id][
'title'] = 
$row->title;
 
  843                        $this->categories_info[
$row->cat_id][
'color'] = 
$row->color;
 
  844                        $this->categories_info[
$row->cat_id][
'type'] = 
$row->type;
 
  845                        $this->categories_info[
$row->cat_id][
'editable'] = 
false;
 
  846                        $this->categories_info[
$row->cat_id][
'accepted'] = 
false;
 
  847                        $this->categories_info[
$row->cat_id][
'remote'] = 
false;
 
  859                global $ilAccess,$tree;
 
  862                if(!count($a_obj_ids))
 
  867                $query = 
"SELECT * FROM cal_categories ".
 
  869                        "AND ".$ilDB->in(
'obj_id',$a_obj_ids,
false,
'integer').
" ".
 
  877                        if($obj_type == 
'crs' or $obj_type == 
'grp')
 
  889                                if($ilAccess->checkAccess(
'edit_event',
'',
$ref_id))
 
  895                                elseif($ilAccess->checkAccess(
'read',
'',
$ref_id))
 
  904                        $this->categories_info[
$row->cat_id][
'editable'] = $editable;
 
  906                        $this->categories[] = 
$row->cat_id;
 
  907                        $this->categories_info[
$row->cat_id][
'obj_id'] = 
$row->obj_id;
 
  908                        $this->categories_info[
$row->cat_id][
'cat_id'] = 
$row->cat_id;
 
  909                        $this->categories_info[
$row->cat_id][
'color'] = 
$row->color;
 
  910                        #$this->categories_info[$row->cat_id]['title'] = ilObject::_lookupTitle($row->obj_id); 
  911                        $this->categories_info[
$row->cat_id][
'title'] = 
$row->title;
 
  913                        $this->categories_info[
$row->cat_id][
'type'] = 
$row->type;
 
  914                        $this->categories_info[
$row->cat_id][
'remote'] = 
false;
 
  929                $course_ids = array();
 
  930                foreach($this->categories as $cat_id)
 
  932                        if($this->categories_info[$cat_id][
'obj_type'] == 
'crs' or $this->categories_info[$cat_id][
'obj_type'] == 
'grp')
 
  934                                $course_ids[] = $this->categories_info[$cat_id][
'obj_id'];
 
  938                $query = 
"SELECT od2.obj_id sess_id, od1.obj_id crs_id,cat_id FROM object_data od1 ".
 
  939                        "JOIN object_reference or1 ON od1.obj_id = or1.obj_id ".
 
  940                        "JOIN tree t ON or1.ref_id = t.parent ".
 
  941                        "JOIN object_reference or2 ON t.child = or2.ref_id ".
 
  942                        "JOIN object_data od2 ON or2.obj_id = od2.obj_id ".
 
  943                        "JOIN cal_categories cc ON od2.obj_id = cc.obj_id ".
 
  944                        "WHERE ".$ilDB->in(
'od2.type',array(
'sess',
'exc'),
false,
'text').
 
  945                        "AND (od1.type = 'crs' OR od1.type = 'grp') ".
 
  946                        "AND ".$ilDB->in(
'od1.obj_id',$course_ids,
false,
'integer').
' '.
 
  947                        "AND or2.deleted IS NULL";
 
  951                $course_sessions = array();
 
  954                        $cat_ids[] = 
$row->cat_id;
 
  955                        $course_sessions[
$row->crs_id][
$row->sess_id] = 
$row->cat_id;
 
  956                        $this->subitem_categories[] = 
$row->cat_id;
 
  959                foreach($this->categories as $cat_id)
 
  962                                ($this->categories_info[$cat_id][
'obj_type'] == 
'crs' ||
 
  963                                $this->categories_info[$cat_id][
'obj_type'] == 
'grp' ) &&
 
  964                                isset($this->categories_info[$cat_id][
'obj_id']) &&
 
  965                                isset($course_sessions[$this->categories_info[$cat_id][
'obj_id']]) &&
 
  966                                is_array($course_sessions[$this->categories_info[$cat_id][
'obj_id']]))
 
  968                                foreach($course_sessions[$this->categories_info[$cat_id][
'obj_id']] as $sess_id => $sess_cat_id)
 
  970                                        $this->categories_info[$cat_id][
'subitem_ids'][$sess_id] = $sess_cat_id;
 
  971                                        $this->categories_info[$cat_id][
'subitem_obj_ids'][$sess_cat_id] = $sess_id;
 
  976                                $this->categories_info[$cat_id][
'subitem_ids'] = array();
 
  977                                $this->categories_info[$cat_id][
'subitem_obj_ids'] = array();
 
  993                $set = 
$ilDB->query(
"SELECT * FROM cal_categories ".
 
  995                        "AND obj_id = ".$ilDB->quote($a_user_id,
'integer'));
 
  997                while ($rec = 
$ilDB->fetchAssoc($set))
 
const DB_FETCHMODE_OBJECT
static getInstance()
get singleton instance
class for calendar categories
static deletePDItemsCache($a_usr_id)
Delete cache (add remove desktop item)
readPDCalendars()
Read categories of user.
getNotificationCalendars()
Get all calendars that allow send of notifications (Editable and course group calendars)
readPrivateCalendars()
Read private calendars.
readSelectedItemCalendars()
Read categories of selected items.
const MODE_PERSONAL_DESKTOP_MEMBERSHIP
const MODE_PERSONAL_DESKTOP_ITEMS
setCHUserId($a_user_id)
Set ch user id.
static _lookupCategoryIdByObjId($a_obj_id)
lookup category by obj_id
const MODE_PORTFOLIO_CONSULTATION
addSubitemCalendars()
Add subitem calendars E.g.
getSubitemCategories($a_cat_id)
get subitem categories for a specific category
readSelectedCategories($a_obj_ids)
read selected categories
readPublicCalendars()
Read public calendars.
readSelectedCalendar($a_cal_id)
Read info about selected calendar.
isVisible($a_cat_id)
check if category is visible
wakeup($a_ser)
Load from serialize string.
sleep()
Serialize categories.
getCHUserId()
Get ch user id.
__construct($a_usr_id=0)
Singleton instance.
getCategoriesInfo()
get categories
readBookingCalendar($user_id=NULL)
Read booking manager calendar.
static lookupPrivateCategories($a_user_id)
Lookup private categories of user.
setTargetRefId($a_ref_id)
getCategoryInfo($a_cat_id)
@access public
static _isOwner($a_usr_id, $a_cal_id)
check if user is owner of a category
readReposCalendars()
Read available repository calendars.
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
static deleteRepositoryCache($a_usr_id)
Delete cache.
isEditable($a_cat_id)
check if category is editable
prepareCategoriesOfUserForSelection()
prepare categories of users for selection
getCategories($a_include_subitem_calendars=false)
get categories
static _getInstance($a_usr_id=0)
get singleton instance
const MODE_REMOTE_SELECTED
Stores calendar categories.
static _getInstance()
get singleton instance
getAcceptedCalendars($a_usr_id)
get accepted shared calendars
Handles shared calendars.
static _getInstance()
get instance for logged in user
const CAL_SELECTION_MEMBERSHIP
static _lookupDesktopItems($user_id, $a_types="")
get all desktop items of user and specified type
static _lookupObjId($a_id)
static _getAllReferences($a_id)
get all reference ids of object
static _lookupType($a_id, $a_reference=false)
lookup object type
static _getMembershipByType($a_usr_id, $a_type, $a_only_member_role=false)
get membership by type Get course or group membership
$GLOBALS['PHPCAS_CLIENT']
This global variable is used by the interface class phpCAS.