ILIAS  trunk Revision v11.0_alpha-3011-gc6b235a2e85
class.ilOrgUnitGlobalSettings.php
Go to the documentation of this file.
1<?php
2
24{
25 private static ?ilOrgUnitGlobalSettings $instance = null;
28 private array $position_settings = [];
33 private array $object_position_cache = [];
34
35 private function __construct()
36 {
37 $this->object_definition = $GLOBALS['DIC']['objDefinition'];
38 $this->readSettings();
39 }
40
41 public static function getInstance(): self
42 {
43 if (!self::$instance) {
44 self::$instance = new self();
45 }
46
47 return self::$instance;
48 }
49
51 {
52 if (!isset($this->position_settings[$a_obj_type])) {
53 throw new \InvalidArgumentException('Object type passed does not support position settings: '
54 . $a_obj_type);
55 }
56
57 return $this->position_settings[$a_obj_type];
58 }
59
63 public function isPositionAccessActiveForObject(int $a_obj_id): bool
64 {
65 if (isset($this->object_position_cache[$a_obj_id])) {
66 return $this->object_position_cache[$a_obj_id];
67 }
68 $type = ilObject::_lookupType($a_obj_id);
69 try {
70 $type_settings = $this->getObjectPositionSettingsByType($type);
71 } catch (\InvalidArgumentException $invalid_type_exception) {
72 $this->object_position_cache[$a_obj_id] = false;
73
74 return false;
75 }
76
77 if (!$type_settings->isActive()) {
78 $this->object_position_cache[$a_obj_id] = false;
79
80 return false;
81 }
82 if (!$type_settings->isChangeableForObject()) {
83 $this->object_position_cache[$a_obj_id] = true;
84
85 return true;
86 }
87 $object_position = new ilOrgUnitObjectPositionSetting($a_obj_id);
88
89 if ($object_position->hasObjectSpecificActivation()) {
90 $this->object_position_cache[$a_obj_id] = $object_position->isActive();
91 } else {
92 $this->object_position_cache[$a_obj_id] = (bool) $type_settings->getActivationDefault();
93 }
94
95 return $this->object_position_cache[$a_obj_id];
96 }
97
102 public function saveDefaultPositionActivationStatus(int $a_obj_id): void
103 {
104 $type = ilObject::_lookupType($a_obj_id);
105 try {
106 $type_settings = $this->getObjectPositionSettingsByType($type);
107 } catch (\InvalidArgumentException $ex) {
108 return;
109 }
110 if ($type_settings->isActive()) {
111 $object_setting = new ilOrgUnitObjectTypePositionSetting($a_obj_id);
112 $object_setting->setActive($type_settings->getActivationDefault());
113 $object_setting->update();
114 }
115 }
116
117 private function readSettings(): void
118 {
119 foreach ($this->object_definition->getOrgUnitPermissionTypes() as $type) {
120 $this->position_settings[$type] = new ilOrgUnitObjectTypePositionSetting($type);
121 }
122 }
123
127 public function getPositionSettings(): array
128 {
130 }
131}
parses the objects.xml it handles the xml-description of all ilias objects
static _lookupType(int $id, bool $reference=false)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
saveDefaultPositionActivationStatus(int $a_obj_id)
Set and save the default activation status according to settings.
getObjectPositionSettingsByType(string $a_obj_type)
static ilOrgUnitGlobalSettings $instance
array $object_position_cache
Array with key obj_id => active status.
isPositionAccessActiveForObject(int $a_obj_id)
Check of position access is activate for object.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
$GLOBALS["DIC"]
Definition: wac.php:54