ILIAS  trunk Revision v11.0_alpha-3011-gc6b235a2e85
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 169 of file class.ilAccessInitialPermissionGuidelineAppliedObjective.php.

170 {
171 $client_ini = $environment->getResource(Setup\Environment::RESOURCE_CLIENT_INI);
172 $db = $environment->getResource(Environment::RESOURCE_DATABASE);
173
174 $role_folder_id = (int) $client_ini->readVariable("system", "ROLE_FOLDER_ID");
175
176 $learning_progress_permissions = [];
177 if ($this->has_learning_progress) {
178 $learning_progress_permissions = array_filter([
179 ilRbacReview::_getCustomRBACOperationId("read_learning_progress"),
180 ilRbacReview::_getCustomRBACOperationId("edit_learning_progress")
181
182 ]);
183 }
184
185 foreach ($this->initial_permission_definition as $role_type => $roles) {
186 foreach ($roles as $role_title => $definition) {
187 if (
188 $this->used_for_authoring &&
189 array_key_exists('ignore_for_authoring_objects', $definition) &&
190 $definition['ignore_for_authoring_objects']
191 ) {
192 continue;
193 }
194
195 if (array_key_exists('id', $definition) && is_numeric($definition['id'])) {
196 // According to JF (2018-07-02), some roles have to be selected by if, not by title
197 $query = "SELECT obj_id FROM object_data WHERE type = %s AND obj_id = %s";
198 $query_types = ['text', 'integer'];
199 $query_values = [$role_type, $definition['id']];
200 } else {
201 $query = "SELECT obj_id FROM object_data WHERE type = %s AND title = %s";
202 $query_types = ['text', 'text'];
203 $query_values = [$role_type, $role_title];
204 }
205
206 $res = $db->queryF($query, $query_types, $query_values);
207 if (1 == $db->numRows($res)) {
208 $row = $db->fetchAssoc($res);
209 $role_id = (int) $row['obj_id'];
210
211 $operation_ids = [];
212
213 if (array_key_exists('object', $definition) && is_array($definition['object'])) {
214 $operation_ids = array_merge($operation_ids, $definition['object']);
215 }
216
217 if (array_key_exists('lp', $definition) && $definition['lp']) {
218 $operation_ids = array_merge($operation_ids, $learning_progress_permissions);
219 }
220
221 foreach (array_filter(array_map('intval', $operation_ids)) as $ops_id) {
222 if ($ops_id == self::RBAC_OP_COPY) {
224 }
225
226 $db->replace(
227 'rbac_templates',
228 [
229 'rol_id' => ['integer', $role_id],
230 'type' => ['text', $this->object_type],
231 'ops_id' => ['integer', $ops_id],
232 'parent' => ['integer', $role_folder_id]
233 ],
234 []
235 );
236 }
237
238 if (array_key_exists('create', $definition) && is_array($definition['create'])) {
239 foreach ($definition['create'] as $container_object_type) {
240 foreach (ilRbacReview::_getCustomRBACOperationId("create_" . $this->object_type) as $ops_id) {
241 if ($ops_id == self::RBAC_OP_COPY) {
243 }
244
245 $db->replace(
246 'rbac_templates',
247 [
248 'rol_id' => ['integer', $role_id],
249 'type' => ['text', $container_object_type],
250 'ops_id' => ['integer', $ops_id],
251 'parent' => ['integer', $role_folder_id]
252 ],
253 []
254 );
255 }
256 }
257 }
258 }
259 }
260 }
261
262
263 return $environment;
264 }
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

References $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 146 of file class.ilAccessInitialPermissionGuidelineAppliedObjective.php.

146 : string
147 {
148 return hash("sha256", self::class);
149 }

◆ getLabel()

ilAccessInitialPermissionGuidelineAppliedObjective::getLabel ( )

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

151 : string
152 {
153 return "Apply initial permission guideline";
154 }

◆ getPreconditions()

ilAccessInitialPermissionGuidelineAppliedObjective::getPreconditions ( Environment  $environment)

◆ isApplicable()

ilAccessInitialPermissionGuidelineAppliedObjective::isApplicable ( Environment  $environment)

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

266 : bool
267 {
268 if (!ilObject::_getObjectTypeIdByTitle($this->object_type)) {
269 throw new Exception("Something went wrong, there MUST be valid id for object_type " . $this->object_type);
270 }
271
272 if (!ilRbacReview::_getCustomRBACOperationId("create_" . $this->object_type)) {
273 throw new Exception(
274 "Something went wrong, missing CREATE operation id for object type " . $this->object_type
275 );
276 }
277
278 return true;
279 }
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 156 of file class.ilAccessInitialPermissionGuidelineAppliedObjective.php.

156 : bool
157 {
158 return true;
159 }

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: