ILIAS  release_9 Revision v9.13-25-g2c18ec4c24f
class.ilOrgUnitDefaultPermissionFormGUI.php
Go to the documentation of this file.
1 <?php
20 
26 {
27  public const F_OPERATIONS = 'operations';
30  protected array $ilOrgUnitPermissions = [];
32  protected \ilLanguage $language;
33  protected \ilOrgUnitPermissionDBRepository $permissionRepo;
34 
41  public function __construct(
42  BaseCommands $parent_gui,
43  array $ilOrgUnitPermissionsFilter,
44  ilObjectDefinition $objectDefinition
45  ) {
47  $this->permissionRepo = $dic["repo.Permissions"];
48 
49  global $DIC;
50  $this->parent_gui = $parent_gui;
51  $this->language = $DIC->language();
52  $this->ilOrgUnitPermissions = $ilOrgUnitPermissionsFilter;
53  $this->dic()->ctrl()->saveParameter($parent_gui, 'arid');
54  $this->setFormAction($this->dic()->ctrl()->getFormAction($this->parent_gui));
56  $this->initFormElements();
57  $this->initButtons();
58  $this->setTarget('_top');
59 
61  }
62 
63  public function saveObject(): bool
64  {
65  if ($this->fillObject() === false) {
66  return false;
67  }
68 
69  $permissions = [];
70  foreach ($this->ilOrgUnitPermissions as $ilOrgUnitPermission) {
71  $permissions[] = $this->permissionRepo->store($ilOrgUnitPermission);
72  }
73  $this->setIlOrgUnitPermissions($permissions);
74 
75  return true;
76  }
77 
78  private function initButtons(): void
79  {
80  $this->setTitle($this->txt("form_title_org_default_permissions_"
81  . BaseCommands::CMD_UPDATE));
82  $this->addCommandButton(BaseCommands::CMD_UPDATE, $this->txt('save', true));
83  $this->addCommandButton(BaseCommands::CMD_CANCEL, $this->txt(BaseCommands::CMD_CANCEL));
84  }
85 
86  private function initFormElements(): void
87  {
88  foreach ($this->ilOrgUnitPermissions as $ilOrgUnitPermission) {
89  $ilOrgUnitPermission = $this->permissionRepo->update($ilOrgUnitPermission);
90  if ($ilOrgUnitPermission->getContext() !== null) {
91  $header = new ilFormSectionHeaderGUI();
92  $context = $ilOrgUnitPermission->getContext()->getContext();
93  $header->setTitle($this->getTitleForFormHeaderByContext($context));
94  $this->addItem($header);
95  }
96 
97 
98 
99  // Checkboxes
100  foreach ($ilOrgUnitPermission->getPossibleOperations() as $operation) {
101  $title = $this->txt("org_op_{$operation->getOperationString()}");
102  $id = $operation->getOperationId();
103  $cb = new ilCheckboxInputGUI($title, "operations[{$context}][{$id}]");
104  $this->addItem($cb);
105  }
106  }
107  }
108 
109  public function fillForm(): void
110  {
111  $operations = array();
112  foreach ($this->ilOrgUnitPermissions as $ilOrgUnitPermission) {
113  $ilOrgUnitPermission = $this->permissionRepo->update($ilOrgUnitPermission);
114  if ($ilOrgUnitPermission->getContext() !== null) {
115  $context = $ilOrgUnitPermission->getContext()->getContext();
116  foreach ($ilOrgUnitPermission->getPossibleOperations() as $operation) {
117  $id = $operation->getOperationId();
118  $operations["operations[{$context}][{$id}]"] = $ilOrgUnitPermission->isOperationIdSelected($operation->getOperationId());
119  }
120  }
121  }
122  $this->setValuesByArray($operations);
123  }
124 
125  private function fillObject(): bool
126  {
127  if (!$this->checkInput()) {
128  return false;
129  }
130  $sent_operation_ids = ($this->getInput(self::F_OPERATIONS) != '') ? $this->getInput(self::F_OPERATIONS) : [];
131 
132  $permissions = [];
133  foreach ($this->ilOrgUnitPermissions as $ilOrgUnitPermission) {
134  $operations = [];
135  $ilOrgUnitPermission = $this->permissionRepo->update($ilOrgUnitPermission);
136  if ($ilOrgUnitPermission->getContext()) {
137  $context = $ilOrgUnitPermission->getContext()->getContext();
138  foreach ($ilOrgUnitPermission->getPossibleOperations() as $operation) {
139  $id = $operation->getOperationId();
140  if (isset($sent_operation_ids[$context][$id])) {
141  $operations[] = $operation;
142  }
143  }
144  $ilOrgUnitPermission = $ilOrgUnitPermission->withOperations($operations);
145  }
146  $permissions[] = $ilOrgUnitPermission;
147  }
148  $this->setIlOrgUnitPermissions($permissions);
149 
150  return true;
151  }
152 
156  public function getIlOrgUnitPermissions(): array
157  {
159  }
160 
164  public function setIlOrgUnitPermissions(array $ilOrgUnitPermissions): void
165  {
166  $this->ilOrgUnitPermissions = $ilOrgUnitPermissions;
167  }
168 
169  private function dic(): \ILIAS\DI\Container
170  {
171  return $GLOBALS["DIC"];
172  }
173 
174  private function txt(string $key): string
175  {
176  return $this->language->txt($key);
177  }
178 
179  protected function getTitleForFormHeaderByContext(string $context)
180  {
181  $lang_code = "obj_{$context}";
182  if ($this->objectDefinition->isPlugin($context)) {
183  return ilObjectPlugin::lookupTxtById($context, $lang_code);
184  }
185 
186  return $this->txt($lang_code);
187  }
188 }
$context
Definition: webdav.php:31
Class ChatMainBarProvider .
setTarget(string $a_target)
Class ilOrgUnitDefaultPermissionFormGUI.
getInput(string $a_post_var, bool $ensureValidation=true)
Returns the input of an item, if item provides getInput method and as fallback the value of the HTTP-...
global $DIC
Definition: feed.php:28
parses the objects.xml it handles the xml-description of all ilias objects
__construct(VocabulariesInterface $vocabularies)
$GLOBALS["DIC"]
Definition: wac.php:31
setFormAction(string $a_formaction)
__construct(BaseCommands $parent_gui, array $ilOrgUnitPermissionsFilter, ilObjectDefinition $objectDefinition)
ilOrgUnitDefaultPermissionFormGUI constructor.
Class HTTPServicesTest.
string $key
Consumer key/client ID value.
Definition: System.php:193
setValuesByArray(array $a_values, bool $a_restrict_to_value_keys=false)
addCommandButton(string $a_cmd, string $a_text, string $a_id="")
static lookupTxtById(string $plugin_id, string $lang_var)
$dic
Definition: result.php:32