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.