157         $client_ini = $environment->
getResource(
Setup\Environment::RESOURCE_CLIENT_INI);
   158         $db = $environment->
getResource(Environment::RESOURCE_DATABASE);
   160         $role_folder_id = (
int) $client_ini->readVariable(
"system", 
"ROLE_FOLDER_ID");
   162         $learning_progress_permissions = [];
   163         if ($this->has_learning_progress) {
   164             $learning_progress_permissions = array_filter([
   171         foreach ($this->initial_permission_definition as $role_type => $roles) {
   172             foreach ($roles as $role_title => $definition) {
   174                     $this->used_for_authoring &&
   175                     array_key_exists(
'ignore_for_authoring_objects', $definition) &&
   176                     $definition[
'ignore_for_authoring_objects']
   181                 if (array_key_exists(
'id', $definition) && is_numeric($definition[
'id'])) {
   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']];
   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];
   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'];
   199                     if (array_key_exists(
'object', $definition) && is_array($definition[
'object'])) {
   200                         $operation_ids = array_merge($operation_ids, $definition[
'object']);
   203                     if (array_key_exists(
'lp', $definition) && $definition[
'lp']) {
   204                         $operation_ids = array_merge($operation_ids, $learning_progress_permissions);
   207                     foreach (array_filter(
array_map(
'intval', $operation_ids)) as $ops_id) {
   208                         if ($ops_id == self::RBAC_OP_COPY) {
   215                                 'rol_id' => [
'integer', $role_id],
   216                                 'type' => [
'text', $this->object_type],
   217                                 'ops_id' => [
'integer', $ops_id],
   218                                 'parent' => [
'integer', $role_folder_id]
   224                     if (array_key_exists(
'create', $definition) && is_array($definition[
'create'])) {
   225                         foreach ($definition[
'create'] as $container_object_type) {
   227                                 if ($ops_id == self::RBAC_OP_COPY) {
   234                                         'rol_id' => [
'integer', $role_id],
   235                                         'type' => [
'text', $container_object_type],
   236                                         'ops_id' => [
'integer', $ops_id],
   237                                         'parent' => [
'integer', $role_folder_id]
 
getResource(string $id)
Consumers of this method should check if the result is what they expect, e.g. 
 
static _getCustomRBACOperationId(string $operation, \ilDBInterface $ilDB=null)
 
An environment holds resources to be used in the setup process.