ILIAS  release_8 Revision v8.24
ilAccessInitialPermissionGuidelineAppliedObjective Class Reference
+ Inheritance diagram for ilAccessInitialPermissionGuidelineAppliedObjective:
+ Collaboration diagram for ilAccessInitialPermissionGuidelineAppliedObjective:

Public Member Functions

 __construct (string $object_type, bool $has_learning_progress=false, bool $used_for_authoring=false)
 
 getHash ()
 
 getLabel ()
 
 isNotable ()
 
 getPreconditions (Environment $environment)
 
 achieve (Environment $environment)
 
 isApplicable (Environment $environment)
 

Protected Attributes

const RBAC_OP_EDIT_PERMISSIONS = 1
 
const RBAC_OP_VISIBLE = 2
 
const RBAC_OP_READ = 3
 
const RBAC_OP_WRITE = 4
 
const RBAC_OP_DELETE = 6
 
const RBAC_OP_COPY = 99
 
array $initial_permission_definition
 
string $object_type
 
bool $has_learning_progress
 
bool $used_for_authoring
 

Detailed Description

Constructor & Destructor Documentation

◆ __construct()

ilAccessInitialPermissionGuidelineAppliedObjective::__construct ( string  $object_type,
bool  $has_learning_progress = false,
bool  $used_for_authoring = false 
)

Member Function Documentation

◆ achieve()

ilAccessInitialPermissionGuidelineAppliedObjective::achieve ( Environment  $environment)

Definition at line 155 of file class.ilAccessInitialPermissionGuidelineAppliedObjective.php.

156 {
157 $client_ini = $environment->getResource(Setup\Environment::RESOURCE_CLIENT_INI);
158 $db = $environment->getResource(Environment::RESOURCE_DATABASE);
159
160 $role_folder_id = (int) $client_ini->readVariable("system", "ROLE_FOLDER_ID");
161
162 $learning_progress_permissions = [];
163 if ($this->has_learning_progress) {
164 $learning_progress_permissions = array_filter([
165 ilRbacReview::_getCustomRBACOperationId("read_learning_progress"),
166 ilRbacReview::_getCustomRBACOperationId("edit_learning_progress")
167
168 ]);
169 }
170
171 foreach ($this->initial_permission_definition as $role_type => $roles) {
172 foreach ($roles as $role_title => $definition) {
173 if (
174 $this->used_for_authoring &&
175 array_key_exists('ignore_for_authoring_objects', $definition) &&
176 $definition['ignore_for_authoring_objects']
177 ) {
178 continue;
179 }
180
181 if (array_key_exists('id', $definition) && is_numeric($definition['id'])) {
182 // According to JF (2018-07-02), some roles have to be selected by if, not by title
183 $query = "SELECT obj_id FROM object_data WHERE type = %s AND obj_id = %s";
184 $query_types = ['text', 'integer'];
185 $query_values = [$role_type, $definition['id']];
186 } else {
187 $query = "SELECT obj_id FROM object_data WHERE type = %s AND title = %s";
188 $query_types = ['text', 'text'];
189 $query_values = [$role_type, $role_title];
190 }
191
192 $res = $db->queryF($query, $query_types, $query_values);
193 if (1 == $db->numRows($res)) {
194 $row = $db->fetchAssoc($res);
195 $role_id = (int) $row['obj_id'];
196
197 $operation_ids = [];
198
199 if (array_key_exists('object', $definition) && is_array($definition['object'])) {
200 $operation_ids = array_merge($operation_ids, $definition['object']);
201 }
202
203 if (array_key_exists('lp', $definition) && $definition['lp']) {
204 $operation_ids = array_merge($operation_ids, $learning_progress_permissions);
205 }
206
207 foreach (array_filter(array_map('intval', $operation_ids)) as $ops_id) {
208 if ($ops_id == self::RBAC_OP_COPY) {
210 }
211
212 $db->replace(
213 'rbac_templates',
214 [
215 'rol_id' => ['integer', $role_id],
216 'type' => ['text', $this->object_type],
217 'ops_id' => ['integer', $ops_id],
218 'parent' => ['integer', $role_folder_id]
219 ],
220 []
221 );
222 }
223
224 if (array_key_exists('create', $definition) && is_array($definition['create'])) {
225 foreach ($definition['create'] as $container_object_type) {
226 foreach (ilRbacReview::_getCustomRBACOperationId("create_" . $this->object_type) as $ops_id) {
227 if ($ops_id == self::RBAC_OP_COPY) {
229 }
230
231 $db->replace(
232 'rbac_templates',
233 [
234 'rol_id' => ['integer', $role_id],
235 'type' => ['text', $container_object_type],
236 'ops_id' => ['integer', $ops_id],
237 'parent' => ['integer', $role_folder_id]
238 ],
239 []
240 );
241 }
242 }
243 }
244 }
245 }
246 }
247
248
249 return $environment;
250 }
static _getCustomRBACOperationId(string $operation, \ilDBInterface $ilDB=null)
An environment holds resources to be used in the setup process.
Definition: Environment.php:28
getResource(string $id)
Consumers of this method should check if the result is what they expect, e.g.
$res
Definition: ltiservices.php:69
$query

References $query, $res, ilRbacReview\_getCustomRBACOperationId(), ILIAS\Setup\Environment\getResource(), and ILIAS\Repository\int().

+ Here is the call graph for this function:

◆ getHash()

ilAccessInitialPermissionGuidelineAppliedObjective::getHash ( )

Definition at line 132 of file class.ilAccessInitialPermissionGuidelineAppliedObjective.php.

132 : string
133 {
134 return hash("sha256", self::class);
135 }

◆ getLabel()

ilAccessInitialPermissionGuidelineAppliedObjective::getLabel ( )

Definition at line 137 of file class.ilAccessInitialPermissionGuidelineAppliedObjective.php.

137 : string
138 {
139 return "Apply initial permission guideline";
140 }

◆ getPreconditions()

ilAccessInitialPermissionGuidelineAppliedObjective::getPreconditions ( Environment  $environment)

◆ isApplicable()

ilAccessInitialPermissionGuidelineAppliedObjective::isApplicable ( Environment  $environment)

Definition at line 252 of file class.ilAccessInitialPermissionGuidelineAppliedObjective.php.

252 : bool
253 {
254 if (!ilObject::_getObjectTypeIdByTitle($this->object_type)) {
255 throw new Exception("Something went wrong, there MUST be valid id for object_type " . $this->object_type);
256 }
257
258 if (!ilRbacReview::_getCustomRBACOperationId("create_" . $this->object_type)) {
259 throw new Exception(
260 "Something went wrong, missing CREATE operation id for object type " . $this->object_type
261 );
262 }
263
264 return true;
265 }
static _getObjectTypeIdByTitle(string $type, \ilDBInterface $ilDB=null)

References ilRbacReview\_getCustomRBACOperationId(), and ilObject\_getObjectTypeIdByTitle().

+ Here is the call graph for this function:

◆ isNotable()

ilAccessInitialPermissionGuidelineAppliedObjective::isNotable ( )

Definition at line 142 of file class.ilAccessInitialPermissionGuidelineAppliedObjective.php.

142 : bool
143 {
144 return true;
145 }

Field Documentation

◆ $has_learning_progress

bool ilAccessInitialPermissionGuidelineAppliedObjective::$has_learning_progress
protected

◆ $initial_permission_definition

array ilAccessInitialPermissionGuidelineAppliedObjective::$initial_permission_definition
protected

◆ $object_type

string ilAccessInitialPermissionGuidelineAppliedObjective::$object_type
protected

◆ $used_for_authoring

bool ilAccessInitialPermissionGuidelineAppliedObjective::$used_for_authoring
protected

◆ RBAC_OP_COPY

const ilAccessInitialPermissionGuidelineAppliedObjective::RBAC_OP_COPY = 99
protected

◆ RBAC_OP_DELETE

const ilAccessInitialPermissionGuidelineAppliedObjective::RBAC_OP_DELETE = 6
protected

◆ RBAC_OP_EDIT_PERMISSIONS

const ilAccessInitialPermissionGuidelineAppliedObjective::RBAC_OP_EDIT_PERMISSIONS = 1
protected

◆ RBAC_OP_READ

const ilAccessInitialPermissionGuidelineAppliedObjective::RBAC_OP_READ = 3
protected

◆ RBAC_OP_VISIBLE

const ilAccessInitialPermissionGuidelineAppliedObjective::RBAC_OP_VISIBLE = 2
protected

◆ RBAC_OP_WRITE

const ilAccessInitialPermissionGuidelineAppliedObjective::RBAC_OP_WRITE = 4
protected

The documentation for this class was generated from the following file: