1<?php 2 3use ILIAS\Modules\OrgUnit\ARHelper\BaseCommands; 4 5/** 6 * Class ilOrgUnitDefaultPermissionFormGUI 7 * 8 * @author Fabian Schmid <fs@studer-raimann.ch> 9 */ 10class ilOrgUnitDefaultPermissionFormGUI extends ilPropertyFormGUI 11{ 12 const F_OPERATIONS = 'operations'; 13 /** 14 * @var \ILIAS\Modules\OrgUnit\ARHelper\BaseCommands 15 */ 16 protected $parent_gui; 17 /** 18 * @var \ilOrgUnitPermission[] 19 */ 20 protected $ilOrgUnitPermissions = []; 21 22 23 /** 24 * ilOrgUnitDefaultPermissionFormGUI constructor. 25 * 26 * @param \ILIAS\Modules\OrgUnit\ARHelper\BaseCommands $parent_gui 27 * @param ilOrgUnitPermission[] $ilOrgUnitPermissionsFilter 28 */ 29 public function __construct(BaseCommands $parent_gui, array $ilOrgUnitPermissionsFilter) 30 { 31 $this->parent_gui = $parent_gui; 32 $this->ilOrgUnitPermissions = $ilOrgUnitPermissionsFilter; 33 $this->dic()->ctrl()->saveParameter($parent_gui, 'arid'); 34 $this->setFormAction($this->dic()->ctrl()->getFormAction($this->parent_gui)); 35 $this->initFormElements(); 36 $this->initButtons(); 37 $this->setTarget('_top'); 38 parent::__construct(); 39 } 40 41 42 /** 43 * @return int ID of the object 44 */ 45 public function saveObject() 46 { 47 if (!$this->fillObject()) { 48 return false; 49 } 50 foreach ($this->ilOrgUnitPermissions as $ilOrgUnitPermission) { 51 $ilOrgUnitPermission->update(); 52 } 53 54 return true; 55 } 56 57 58 protected function initButtons() 59 { 60 $this->setTitle($this->txt("form_title_org_default_permissions_" 61 . BaseCommands::CMD_UPDATE)); 62 $this->addCommandButton(BaseCommands::CMD_UPDATE, $this->txt('save', true)); 63 $this->addCommandButton(BaseCommands::CMD_CANCEL, $this->txt(BaseCommands::CMD_CANCEL)); 64 } 65 66 67 protected function initFormElements() 68 { 69 foreach ($this->ilOrgUnitPermissions as $ilOrgUnitPermission) { 70 $header = new ilFormSectionHeaderGUI(); 71 $context = $ilOrgUnitPermission->getContext()->getContext(); 72 $header->setTitle($this->txt("obj_{$context}", false)); 73 $this->addItem($header); 74 75 // Checkboxes 76 foreach ($ilOrgUnitPermission->getPossibleOperations() as $operation) { 77 $title = $this->txt("org_op_{$operation->getOperationString()}", false); 78 $id = $operation->getOperationId(); 79 $cb = new ilCheckboxInputGUI($title, "operations[{$context}][{$id}]"); 80 $this->addItem($cb); 81 } 82 } 83 } 84 85 86 public function fillForm() 87 { 88 $operations = array(); 89 foreach ($this->ilOrgUnitPermissions as $ilOrgUnitPermission) { 90 $context = $ilOrgUnitPermission->getContext()->getContext(); 91 foreach ($ilOrgUnitPermission->getPossibleOperations() as $operation) { 92 $id = $operation->getOperationId(); 93 $operations["operations[{$context}][{$id}]"] = $ilOrgUnitPermission->isOperationIdSelected($operation->getOperationId()); 94 } 95 } 96 $this->setValuesByArray($operations); 97 } 98 99 100 protected function fillObject() 101 { 102 if (!$this->checkInput()) { 103 return false; 104 } 105 $sent_operation_ids = $this->getInput(self::F_OPERATIONS); 106 foreach ($this->ilOrgUnitPermissions as $ilOrgUnitPermission) { 107 $operations = []; 108 $context = $ilOrgUnitPermission->getContext()->getContext(); 109 foreach ($ilOrgUnitPermission->getPossibleOperations() as $operation) { 110 $id = $operation->getOperationId(); 111 if ($sent_operation_ids[$context][$id]) { 112 $operations[] = ilOrgUnitOperation::find($id); 113 } 114 } 115 $ilOrgUnitPermission->setOperations($operations); 116 } 117 118 return true; 119 } 120 121 122 /** 123 * @return \ilOrgUnitPermission[] 124 */ 125 public function getIlOrgUnitPermissions() 126 { 127 return $this->ilOrgUnitPermissions; 128 } 129 130 131 /** 132 * @param \ilOrgUnitPermission[] $ilOrgUnitPermissions 133 */ 134 public function setIlOrgUnitPermissions($ilOrgUnitPermissions) 135 { 136 $this->ilOrgUnitPermissions = $ilOrgUnitPermissions; 137 } 138 139 140 /** 141 * @return \ILIAS\DI\Container 142 */ 143 protected function dic() 144 { 145 return $GLOBALS["DIC"]; 146 } 147 148 149 /** 150 * @param $key 151 * 152 * @return mixed 153 */ 154 protected function txt($key) 155 { 156 return $this->parent_gui->txt($key); 157 } 158} 159