ILIAS  release_10 Revision v10.1-43-ga1241a92c2f
class.ilOrgUnitGlobalSettings.php
Go to the documentation of this file.
1 <?php
2 
20 /* Copyright (c) 1998-2010 ILIAS open source, Extended GPL, see docs/LICENSE */
21 
27 {
28  private static ?ilOrgUnitGlobalSettings $instance = null;
31  private array $position_settings = [];
36  private array $object_position_cache = [];
37 
38  private function __construct()
39  {
40  $this->object_definition = $GLOBALS['DIC']['objDefinition'];
41  $this->readSettings();
42  }
43 
44  public static function getInstance(): self
45  {
46  if (!self::$instance) {
47  self::$instance = new self();
48  }
49 
50  return self::$instance;
51  }
52 
54  {
55  if (!isset($this->position_settings[$a_obj_type])) {
56  throw new \InvalidArgumentException('Object type passed does not support position settings: '
57  . $a_obj_type);
58  }
59 
60  return $this->position_settings[$a_obj_type];
61  }
62 
66  public function isPositionAccessActiveForObject(int $a_obj_id): bool
67  {
68  if (isset($this->object_position_cache[$a_obj_id])) {
69  return $this->object_position_cache[$a_obj_id];
70  }
71  $type = ilObject::_lookupType($a_obj_id);
72  try {
73  $type_settings = $this->getObjectPositionSettingsByType($type);
74  } catch (\InvalidArgumentException $invalid_type_exception) {
75  $this->object_position_cache[$a_obj_id] = false;
76 
77  return false;
78  }
79 
80  if (!$type_settings->isActive()) {
81  $this->object_position_cache[$a_obj_id] = false;
82 
83  return false;
84  }
85  if (!$type_settings->isChangeableForObject()) {
86  $this->object_position_cache[$a_obj_id] = true;
87 
88  return true;
89  }
90  $object_position = new ilOrgUnitObjectPositionSetting($a_obj_id);
91 
92  if ($object_position->hasObjectSpecificActivation()) {
93  $this->object_position_cache[$a_obj_id] = $object_position->isActive();
94  } else {
95  $this->object_position_cache[$a_obj_id] = (bool) $type_settings->getActivationDefault();
96  }
97 
98  return $this->object_position_cache[$a_obj_id];
99  }
100 
105  public function saveDefaultPositionActivationStatus(int $a_obj_id): void
106  {
107  $type = ilObject::_lookupType($a_obj_id);
108  try {
109  $type_settings = $this->getObjectPositionSettingsByType($type);
110  } catch (\InvalidArgumentException $ex) {
111  return;
112  }
113  if ($type_settings->isActive()) {
114  $object_setting = new ilOrgUnitObjectTypePositionSetting($a_obj_id);
115  $object_setting->setActive($type_settings->getActivationDefault());
116  $object_setting->update();
117  }
118  }
119 
120  private function readSettings(): void
121  {
122  foreach ($this->object_definition->getOrgUnitPermissionTypes() as $type) {
123  $this->position_settings[$type] = new ilOrgUnitObjectTypePositionSetting($type);
124  }
125  }
126 
130  public function getPositionSettings(): array
131  {
133  }
134 }
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
isPositionAccessActiveForObject(int $a_obj_id)
Check of position access is activate for object.
static ilOrgUnitGlobalSettings $instance
$GLOBALS["DIC"]
Definition: wac.php:30
getObjectPositionSettingsByType(string $a_obj_type)
array $object_position_cache
Array with key obj_id => active status.
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.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...