32require_once 
"./Services/Object/classes/class.ilObject.php";
 
   71                $this->ref_id = $a_ref_id;
 
   79                $this->obj_id = $a_obj_id;
 
   87                return $this->container_type;
 
   91                $this->container_type = $a_type;
 
   96                $this->type = $a_type;
 
  105                $this->title = $a_title;
 
  113                $this->description = $a_desc;
 
  117                return $this->description;
 
  121                $this->unique_field = $a_uni;
 
  125                return $this->unique_field;
 
  137                include_once 
'./Services/AccessControl/classes/class.ilConditionHandler.php';
 
  139                $conditions = array();
 
  140                foreach($condition_data as $condition)
 
  142                        if($tree->isDeleted($condition[
'target_ref_id']))
 
  146                        $conditions[] = $condition;
 
  148                return count($conditions) ? $conditions : array();
 
  155                include_once 
'./Services/AccessControl/classes/class.ilConditionHandler.php';
 
  159                        $query = 
"DELETE FROM object_data WHERE obj_id = ".$ilDB->quote($this->
getId(),
'integer').
" ";
 
  162                        $query = 
"DELETE FROM crs_groupings ".
 
  163                                "WHERE crs_grp_id = ".$ilDB->quote($this->
getId(),
'integer').
" ";
 
  168                        $condh->deleteByObjId($this->
getId());
 
  175        function create($a_course_ref_id,$a_course_id)
 
  180                $this->
setId($ilDB->nextId(
"object_data"));
 
  181                $query = 
"INSERT INTO object_data ".
 
  182                        "(obj_id, type,title,description,owner,create_date,last_update) ".
 
  186                        $ilDB->quote($this->type, 
"text").
",".
 
  189                        $ilDB->quote(
$ilUser->getId(), 
"integer").
",".
 
  197                $query = 
"INSERT INTO crs_groupings (crs_grp_id,crs_ref_id,crs_id,unique_field) ".
 
  200                        $ilDB->quote($a_course_ref_id,
'integer').
", ".
 
  201                        $ilDB->quote($a_course_id,
'integer').
", ".
 
  206                return $this->
getId();
 
  216                        $query = 
"UPDATE object_data ".
 
  217                                "SET title = ".$ilDB->quote($this->
getTitle(),
'text').
", ".
 
  218                                "description = ".$ilDB->quote($this->
getDescription(),
'text').
" ".
 
  219                                "WHERE obj_id = ".$ilDB->quote($this->
getId(),
'integer').
" ".
 
  220                                "AND type = ".$ilDB->quote($this->
getType(),
'text').
" ";
 
  224                        $query = 
"UPDATE crs_groupings ".
 
  225                                "SET unique_field = ".$ilDB->quote($this->
getUniqueField(),
'text').
" ".
 
  226                                "WHERE crs_grp_id = ".$ilDB->quote($this->
getId(),
'integer').
" ";
 
  230                        $query = 
"UPDATE conditions ".
 
  232                                "WHERE trigger_obj_id = ".$ilDB->quote($this->
getId(),
'integer').
" ".
 
  233                                "AND trigger_type = 'crsg'";
 
  245                        if($a_course_id == $condition_data[
'target_obj_id'])
 
  255                global $ilObjDataCache,
$ilDB;
 
  257                $query = 
"SELECT * FROM object_data ".
 
  258                        "WHERE obj_id = ".$ilDB->quote($this->
getId() ,
'integer').
" ";
 
  267                $query = 
"SELECT * FROM crs_groupings ".
 
  268                        "WHERE crs_grp_id = ".$ilDB->quote($this->
getId(),
'integer').
" ";
 
  276                        $this->
setContainerType($ilObjDataCache->lookupType($this->getContainerObjId()));
 
  284                global $ilAccess,$tree;
 
  288                $found_invisible = 
false;
 
  289                foreach($tmp_grouping_obj->getAssignedItems() as $condition)
 
  291                        if(!$ilAccess->checkAccess(
'write',
'',$condition[
'target_ref_id']))
 
  293                                $found_invisible = 
true;
 
  297                return $found_invisible ? false : 
true;
 
  307                global $ilObjDataCache,$ilAccess,
$ilDB;
 
  309                $container_type = $ilObjDataCache->lookupType($a_obj_id) == 
'grp' ? 
'grp' : 
'crs';
 
  313                $query = 
"SELECT * FROM object_data WHERE type = 'crsg' ORDER BY title";
 
  315                $groupings = array();
 
  318                        $groupings[] = 
$row->obj_id;
 
  322                foreach($groupings as $grouping_id)
 
  327                        if($tmp_grouping_obj->getContainerType() != $container_type)
 
  332                        if($tmp_grouping_obj->getContainerObjId() == $a_obj_id)
 
  334                                $visible_groupings[] = $grouping_id;
 
  338                        if(count($items = $tmp_grouping_obj->getAssignedItems()))
 
  340                                foreach($items as $condition_data)
 
  342                                        if($ilAccess->checkAccess(
'write',
'',$condition_data[
'target_ref_id']))
 
  344                                                $visible_groupings[] = $grouping_id;
 
  351                return $visible_groupings ? $visible_groupings : array();
 
  354        function assign($a_crs_ref_id,$a_course_id)
 
  365                include_once 
'./Services/AccessControl/classes/class.ilConditionHandler.php';
 
  371                if($this->getCountAssignedCourses() == 2)
 
  373                        $condh->deleteByObjId($this->
getId());
 
  381                        if($cond_data[
'target_ref_id'] == $a_crs_ref_id and
 
  382                           $cond_data[
'target_obj_id'] == $a_course_id)
 
  384                                $condh->deleteCondition($cond_data[
'id']);
 
  394                include_once 
'./Services/AccessControl/classes/class.ilConditionHandler.php';
 
  397                $tmp_condh->enableAutomaticValidation(
false);
 
  399                $tmp_condh->setTargetRefId($a_target_ref_id);
 
  400                $tmp_condh->setTargetObjId($a_target_obj_id);
 
  401                $tmp_condh->setTargetType(
'crs');
 
  402                $tmp_condh->setTriggerRefId(0);
 
  403                $tmp_condh->setTriggerObjId($this->
getId());
 
  404                $tmp_condh->setTriggerType(
'crsg');
 
  405                $tmp_condh->setOperator(
'not_member');
 
  408                if(!$tmp_condh->checkExists())
 
  410                        $tmp_condh->storeCondition();
 
  425                        include_once 
'./Services/AccessControl/classes/class.ilConditionHandler.php';
 
  428                        $condh->deleteByObjId($grouping_id);
 
  431                $query = 
"DELETE FROM crs_groupings ".
 
  432                        "WHERE crs_id = ".$ilDB->quote($a_course_id,
'integer').
" ";
 
  442                $query = 
"SELECT * FROM crs_groupings ".
 
  443                        "WHERE crs_id = ".$ilDB->quote($a_course_id,
'integer').
" ";
 
  448                        $groupings[] = 
$row->crs_grp_id;
 
  450                return $groupings ? $groupings : array();
 
  471                include_once 
'./Services/AccessControl/classes/class.ilConditionHandler.php';
 
  476                        if($condition[
'trigger_type'] == 
'crsg')
 
  480                                        if($tree->isDeleted($target_condition[
'target_ref_id']))
 
  484                                        $course_ids[] = array(
'id'                      => $target_condition[
'target_obj_id'],
 
  485                                                                                  'unique'              => $target_condition[
'value']);
 
  489                return $course_ids ? $course_ids : array();
 
  506                include_once 
'./Services/AccessControl/classes/class.ilConditionHandler.php';
 
  508                $user_id = is_null($a_user_id) ? 
$ilUser->getId() : $a_user_id;
 
  511                $trigger_ids = array();
 
  513                        $container_obj->getId(),
 
  514                        $container_obj->getType()) as $condition)
 
  516                        if($condition[
'operator'] == 
'not_member')
 
  518                                $trigger_ids[] = $condition[
'trigger_obj_id'];
 
  522                if(!count($trigger_ids))
 
  526                $matriculation_message = $assigned_message = 
'';
 
  527                self::$assignedObjects = array(); 
 
  528                foreach($trigger_ids as $trigger_id)
 
  533                                if($tree->isDeleted($condition[
'target_ref_id']))
 
  537                                if($condition[
'operator'] == 
'not_member')
 
  539                                        switch($condition[
'value'])
 
  541                                                case 'matriculation':
 
  544                                                                if(!$matriculation_message)
 
  546                                                                        $matriculation_message = 
$lng->txt(
'crs_grp_matriculation_required');
 
  550                                        if($container_obj->getType() == 
'crs')
 
  552                                                include_once(
'Modules/Course/classes/class.ilCourseParticipants.php');
 
  554                                                if($members->isGroupingMember($user_id,$condition[
'value']))
 
  556                                                        if(!$assigned_message)
 
  558                                                                self::$assignedObjects[] = $condition[
'target_obj_id'];
 
  559                                                                $assigned_message = 
$lng->txt(
'crs_grp_already_assigned');
 
  563                                        elseif($container_obj->getType() == 
'grp')
 
  565                                                include_once(
'Modules/Group/classes/class.ilGroupParticipants.php');
 
  567                                                if($members->isGroupingMember($user_id,$condition[
'value']))
 
  569                                                        if(!$assigned_message)
 
  571                                                                self::$assignedObjects[] = $condition[
'target_obj_id'];
 
  572                                                                $assigned_message = 
$lng->txt(
'crs_grp_already_assigned');
 
  581                                                        if(!$assigned_message)
 
  583                                                                self::$assignedObjects[] = $condition[
'target_obj_id'];
 
  584                                                                $assigned_message = 
$lng->txt(
'crs_grp_already_assigned');
 
  592                if($matriculation_message)
 
  594                        $container_obj->appendMessage($matriculation_message);
 
  597                elseif($assigned_message)
 
  599                        $container_obj->appendMessage($assigned_message);
 
  614                global $tree,$ilObjDataCache,$ilAccess,$tree;
 
  616                include_once 
'./Services/AccessControl/classes/class.ilConditionHandler.php';
 
  618                $trigger_ids = array();
 
  620                        $container_obj->getId(),
 
  621                        $container_obj->getType()) as $condition)
 
  623                        if($condition[
'operator'] == 
'not_member')
 
  625                                $trigger_ids[] = $condition[
'trigger_obj_id'];
 
  628                if(!count($trigger_ids))
 
  632                $hash_table = array();
 
  633                foreach($trigger_ids as $trigger_id)
 
  638                                if($tree->isDeleted($condition[
'target_ref_id']))
 
  643                                if($condition[
'operator'] == 
'not_member')
 
  645                                        if(!$hash_table[$condition[
'target_ref_id']])
 
  647                                                $items[] = $condition[
'target_ref_id'];
 
  649                                        $hash_table[$condition[
'target_ref_id']] = 
true;
 
  653                return $items ? $items : array();
 
const DB_FETCHMODE_OBJECT
Handles conditions for accesses to different ILIAS objects.
_getConditionsOfTrigger($a_trigger_obj_type, $a_trigger_id)
get all conditions of trigger object
static _getConditionsOfTarget($a_target_ref_id, $a_target_obj_id, $a_target_type="")
get all conditions of target object
static _getInstanceByObjId($a_obj_id)
Get singleton instance.
static _getInstanceByObjId($a_obj_id)
Get singleton instance.
__addCondition($a_target_ref_id, $a_target_obj_id)
_getVisibleGroupings($a_obj_id)
Returns a list of all groupings for which the current user hast write permission on all assigned obje...
deassign($a_crs_ref_id, $a_course_id)
_checkGroupingDependencies(&$container_obj, $a_user_id=null)
create($a_course_ref_id, $a_course_id)
setContainerType($a_type)
assign($a_crs_ref_id, $a_course_id)
_checkCondition($trigger_obj_id, $operator, $value, $a_usr_id=0)
ilObjCourseGrouping($a_id=0)
Constructor @access public.
setContainerObjId($a_obj_id)
_getGroupingItems($container_obj)
Get courses/groups that are assigned to the same membership limitation.
_getGroupings($a_course_id)
static getAssignedObjects()
Alway call checkGroupingDependencies before.
_checkAccess($grouping_id)
_getGroupingCourseIds($a_course_ref_id, $a_course_id)
Get all ids of courses that are grouped with another course @access static.
setContainerRefId($a_ref_id)
_isMember($a_user_id, $a_ref_id, $a_field='')
static lookupMatriculation($a_usr_id)
Lookup matriculation.