You are here

rac.install in Role Access Control 8.2

Same filename and directory in other branches
  1. 8 rac.install

Implements hook_install()

File

rac.install
View source
<?php

/**
 * @file
 * Implements hook_install()
 */

/**
 * Install function to assign default permissions for role access.
 */
function rac_install() {
  $ops = [
    'view',
  ];
  $roles = user_roles();
  foreach ($ops as $op) {
    foreach ($roles as $role) {
      $permission = "RAC_" . $op . "_" . $role
        ->id();
      $role
        ->grantPermission($permission);
      $role
        ->save();
    }
  }
}

/**
 * Add default config for new update_unpublished setting.
 */
function rac_update_8100($sandbox) {
  \Drupal::service("config.factory")
    ->getEditable("rac.settings")
    ->set("update_unpublished", TRUE)
    ->save();
}

/**
 * Update configuration around updated reference provider settings.
 */
function rac_update_8101($sandbox) {

  // Enable the new sub module.
  \Drupal::service('module_installer')
    ->install([
    'rac_relations',
  ]);
  $consumers = Drupal::service('entity_type.manager')
    ->getStorage('access_consumer')
    ->loadMultiple();
  $rac_unpublished = \Drupal::config("rac.settings")
    ->get('update_unpublished');
  foreach ($consumers as $consumer) {
    $provider_ids = $consumer
      ->getProviders();
    if (in_array('rac', $provider_ids)) {
      if (!in_array('rac_relations', $provider_ids)) {
        $provider_ids = $provider_ids + [
          'rac_relations' => 'rac_relations',
        ];
        $consumer
          ->setProviders($provider_ids);
      }
      $rac_config = $consumer
        ->getProviderConfig('rac');
      $rac_relations_config = $consumer
        ->getProviderConfig('rac_relations') ?: [];
      $fields = array_keys($rac_config['enabled_fields']);
      foreach ($fields as $field_name) {
        $rac_config['enabled_fields'][$field_name] = [];

        // Setup the new operation grants system.
        $rac_config['enabled_fields'][$field_name]['grants'] = [
          'view' => 'view',
        ];
        $rac_config['enabled_fields'][$field_name]['unpublished'] = FALSE;
        $rac_relations_config['enabled_fields'][$field_name]['grants'] = [
          'view' => 'view',
          'update' => 'update',
        ];

        // Move the old rac delete grant.
        if (isset($rac_config['enabled_fields']['grant_delete']) && $rac_config['enabled_fields']['grant_delete']) {
          $rac_relations_config['enabled_fields'][$field_name]['grants']['delete'] = 'delete';
        }
        if (is_array($rac_config['enabled_fields'])) {
          unset($rac_config['enabled_fields']['grant_delete']);
        }

        // Move the global unpublished setting the the new field.
        $rac_relations_config['enabled_fields'][$field_name]['unpublished'] = $rac_unpublished;
      }
      $consumer
        ->setProviderConfig('rac', $rac_config);
      $consumer
        ->setProviderConfig('rac_relations', $rac_relations_config);
      $consumer
        ->save();
    }
  }
}

Functions

Namesort descending Description
rac_install Install function to assign default permissions for role access.
rac_update_8100 Add default config for new update_unpublished setting.
rac_update_8101 Update configuration around updated reference provider settings.