32 require_once
"./Services/Object/classes/class.ilObject.php";
69 $this->ref_id = $a_ref_id;
77 $this->obj_id = $a_obj_id;
85 return $this->container_type;
89 $this->container_type =
$a_type;
103 $this->title = $a_title;
111 $this->description = $a_desc;
119 $this->unique_field = $a_uni;
123 return $this->unique_field;
135 include_once
'./Services/AccessControl/classes/class.ilConditionHandler.php';
137 $conditions =
array();
138 foreach ($condition_data as $condition) {
139 if ($tree->isDeleted($condition[
'target_ref_id'])) {
142 $conditions[] = $condition;
144 return count($conditions) ? $conditions :
array();
147 public function delete()
151 include_once
'./Services/AccessControl/classes/class.ilConditionHandler.php';
154 $query =
"DELETE FROM object_data WHERE obj_id = " . $ilDB->quote($this->
getId(),
'integer') .
" ";
157 $query =
"DELETE FROM crs_groupings " .
158 "WHERE crs_grp_id = " . $ilDB->quote($this->
getId(),
'integer') .
" ";
163 $condh->deleteByObjId($this->
getId());
170 public function create($a_course_ref_id, $a_course_id)
175 $this->
setId($ilDB->nextId(
"object_data"));
176 $query =
"INSERT INTO object_data " .
177 "(obj_id, type,title,description,owner,create_date,last_update) " .
180 $ilDB->quote($this->
getId(),
"integer") .
"," .
181 $ilDB->quote($this->type,
"text") .
"," .
182 $ilDB->quote($this->
getTitle(),
"text") .
"," .
184 $ilDB->quote($ilUser->getId(),
"integer") .
"," .
189 $ilDB->manipulate($query);
192 $query =
"INSERT INTO crs_groupings (crs_grp_id,crs_ref_id,crs_id,unique_field) " .
194 $ilDB->quote($this->
getId(),
'integer') .
", " .
195 $ilDB->quote($a_course_ref_id,
'integer') .
", " .
196 $ilDB->quote($a_course_id,
'integer') .
", " .
199 $res = $ilDB->manipulate($query);
201 return $this->
getId();
210 $query =
"UPDATE object_data " .
211 "SET title = " . $ilDB->quote($this->
getTitle(),
'text') .
", " .
212 "description = " . $ilDB->quote($this->
getDescription(),
'text') .
" " .
213 "WHERE obj_id = " . $ilDB->quote($this->
getId(),
'integer') .
" " .
214 "AND type = " . $ilDB->quote($this->
getType(),
'text') .
" ";
218 $query =
"UPDATE crs_groupings " .
219 "SET unique_field = " . $ilDB->quote($this->
getUniqueField(),
'text') .
" " .
220 "WHERE crs_grp_id = " . $ilDB->quote($this->
getId(),
'integer') .
" ";
224 $query =
"UPDATE conditions " .
225 "SET value = " . $ilDB->quote($this->
getUniqueField(),
'text') .
" " .
226 "WHERE trigger_obj_id = " . $ilDB->quote($this->
getId(),
'integer') .
" " .
227 "AND trigger_type = 'crsg'";
238 if ($a_course_id == $condition_data[
'target_obj_id']) {
247 global $ilObjDataCache,
$ilDB;
249 $query =
"SELECT * FROM object_data " .
250 "WHERE obj_id = " . $ilDB->quote($this->
getId(),
'integer') .
" ";
258 $query =
"SELECT * FROM crs_groupings " .
259 "WHERE crs_grp_id = " . $ilDB->quote($this->
getId(),
'integer') .
" ";
266 $this->
setContainerType($ilObjDataCache->lookupType($this->getContainerObjId()));
274 global $ilAccess,$tree;
278 $found_invisible =
false;
279 foreach ($tmp_grouping_obj->getAssignedItems() as $condition) {
280 if (!$ilAccess->checkAccess(
'write',
'', $condition[
'target_ref_id'])) {
281 $found_invisible =
true;
285 return $found_invisible ? false :
true;
298 global $ilObjDataCache,$ilAccess,
$ilDB;
300 $container_type = $ilObjDataCache->lookupType($a_obj_id) ==
'grp' ?
'grp' :
'crs';
304 $query =
"SELECT * FROM object_data WHERE type = 'crsg' ORDER BY title";
306 $groupings =
array();
308 $groupings[] =
$row->obj_id;
312 foreach ($groupings as $grouping_id) {
316 if ($tmp_grouping_obj->getContainerType() != $container_type) {
320 if ($tmp_grouping_obj->getContainerObjId() == $a_obj_id) {
321 $visible_groupings[] = $grouping_id;
325 if (count($items = $tmp_grouping_obj->getAssignedItems())) {
326 foreach ($items as $condition_data) {
327 if ($ilAccess->checkAccess(
'write',
'', $condition_data[
'target_ref_id'])) {
328 $visible_groupings[] = $grouping_id;
334 return $visible_groupings ? $visible_groupings :
array();
337 public function assign($a_crs_ref_id, $a_course_id)
346 public function deassign($a_crs_ref_id, $a_course_id)
348 include_once
'./Services/AccessControl/classes/class.ilConditionHandler.php';
354 if ($this->getCountAssignedCourses() == 2) {
355 $condh->deleteByObjId($this->
getId());
361 if ($cond_data[
'target_ref_id'] == $a_crs_ref_id and
362 $cond_data[
'target_obj_id'] == $a_course_id) {
363 $condh->deleteCondition($cond_data[
'id']);
372 include_once
'./Services/AccessControl/classes/class.ilConditionHandler.php';
375 $tmp_condh->enableAutomaticValidation(
false);
377 $tmp_condh->setTargetRefId($a_target_ref_id);
378 $tmp_condh->setTargetObjId($a_target_obj_id);
379 $tmp_condh->setTargetType(
'crs');
380 $tmp_condh->setTriggerRefId(0);
381 $tmp_condh->setTriggerObjId($this->
getId());
382 $tmp_condh->setTriggerType(
'crsg');
383 $tmp_condh->setOperator(
'not_member');
386 if (!$tmp_condh->checkExists()) {
387 $tmp_condh->storeCondition();
401 include_once
'./Services/AccessControl/classes/class.ilConditionHandler.php';
404 $condh->deleteByObjId($grouping_id);
407 $query =
"DELETE FROM crs_groupings " .
408 "WHERE crs_id = " . $ilDB->quote($a_course_id,
'integer') .
" ";
418 $query =
"SELECT * FROM crs_groupings " .
419 "WHERE crs_id = " . $ilDB->quote($a_course_id,
'integer') .
" ";
423 $groupings[] =
$row->crs_grp_id;
425 return $groupings ? $groupings :
array();
428 public static function _checkCondition($trigger_obj_id, $operator, $value, $a_usr_id = 0)
446 include_once
'./Services/AccessControl/classes/class.ilConditionHandler.php';
450 if ($condition[
'trigger_type'] ==
'crsg') {
452 if ($tree->isDeleted($target_condition[
'target_ref_id'])) {
455 $course_ids[] =
array(
'id' => $target_condition[
'target_obj_id'],
456 'unique' => $target_condition[
'value']);
460 return $course_ids ? $course_ids :
array();
470 return self::$assignedObjects ? self::$assignedObjects :
array();
477 include_once
'./Services/AccessControl/classes/class.ilConditionHandler.php';
479 $user_id = is_null($a_user_id) ? $ilUser->getId() : $a_user_id;
482 $trigger_ids =
array();
484 $container_obj->getRefId(),
485 $container_obj->getId(),
486 $container_obj->getType()
488 if ($condition[
'operator'] ==
'not_member') {
489 $trigger_ids[] = $condition[
'trigger_obj_id'];
493 if (!count($trigger_ids)) {
496 $matriculation_message = $assigned_message =
'';
497 self::$assignedObjects =
array();
498 foreach ($trigger_ids as $trigger_id) {
501 if ($tree->isDeleted($condition[
'target_ref_id'])) {
504 if ($condition[
'operator'] ==
'not_member') {
505 switch ($condition[
'value']) {
506 case 'matriculation':
508 if (!$matriculation_message) {
509 $matriculation_message = $lng->txt(
'crs_grp_matriculation_required');
513 if ($container_obj->getType() ==
'crs') {
514 include_once(
'Modules/Course/classes/class.ilCourseParticipants.php');
516 if ($members->isGroupingMember($user_id, $condition[
'value'])) {
517 if (!$assigned_message) {
518 self::$assignedObjects[] = $condition[
'target_obj_id'];
519 $assigned_message = $lng->txt(
'crs_grp_already_assigned');
522 } elseif ($container_obj->getType() ==
'grp') {
523 include_once(
'Modules/Group/classes/class.ilGroupParticipants.php');
525 if ($members->isGroupingMember($user_id, $condition[
'value'])) {
526 if (!$assigned_message) {
527 self::$assignedObjects[] = $condition[
'target_obj_id'];
528 $assigned_message = $lng->txt(
'grp_grp_already_assigned');
533 if (!$assigned_message) {
534 self::$assignedObjects[] = $condition[
'target_obj_id'];
535 $assigned_message = $lng->txt(
'crs_grp_already_assigned');
542 if ($matriculation_message) {
543 $container_obj->appendMessage($matriculation_message);
545 } elseif ($assigned_message) {
546 $container_obj->appendMessage($assigned_message);
561 global $tree,$ilObjDataCache,$ilAccess,$tree;
563 include_once
'./Services/AccessControl/classes/class.ilConditionHandler.php';
565 $trigger_ids =
array();
567 $container_obj->getRefId(),
568 $container_obj->getId(),
569 $container_obj->getType()
571 if ($condition[
'operator'] ==
'not_member') {
572 $trigger_ids[] = $condition[
'trigger_obj_id'];
575 if (!count($trigger_ids)) {
578 $hash_table =
array();
579 foreach ($trigger_ids as $trigger_id) {
582 if ($tree->isDeleted($condition[
'target_ref_id'])) {
586 if ($condition[
'operator'] ==
'not_member') {
587 if (!$hash_table[$condition[
'target_ref_id']]) {
588 $items[] = $condition[
'target_ref_id'];
590 $hash_table[$condition[
'target_ref_id']] =
true;
594 return $items ? $items :
array();
static _getConditionsOfTarget($a_target_ref_id, $a_target_obj_id, $a_target_type="")
get all conditions of target object
static lookupMatriculation($a_usr_id)
Lookup matriculation.
static _getInstanceByObjId($a_obj_id)
Get singleton instance.
if(!array_key_exists('StateId', $_REQUEST)) $id
static getAssignedObjects()
Alway call checkGroupingDependencies before.
static _getConditionsOfTrigger($a_trigger_obj_type, $a_trigger_id)
get all conditions of trigger object
static _getVisibleGroupings($a_obj_id)
_checkAccess($grouping_id)
__construct($a_id=0)
Constructor public.
assign($a_crs_ref_id, $a_course_id)
static _checkCondition($trigger_obj_id, $operator, $value, $a_usr_id=0)
static _deleteAll($a_course_id)
foreach($_POST as $key=> $value) $res
static _getGroupingCourseIds($a_course_ref_id, $a_course_id)
Get all ids of courses that are grouped with another course static.
__addCondition($a_target_ref_id, $a_target_obj_id)
static _getInstanceByObjId($a_obj_id)
Get singleton instance.
Create styles array
The data for the language used.
static _checkGroupingDependencies(&$container_obj, $a_user_id=null)
setContainerObjId($a_obj_id)
Handles conditions for accesses to different ILIAS objects.
setContainerRefId($a_ref_id)
static _getGroupingItems($container_obj)
Get courses/groups that are assigned to the same membership limitation.
static _getGroupings($a_course_id)
create($a_course_ref_id, $a_course_id)
_isMember($a_user_id, $a_ref_id, $a_field='')
setContainerType($a_type)
deassign($a_crs_ref_id, $a_course_id)