You are here

social_gdpr.install in Open Social 10.2.x

Install, update and uninstall functions for the social_gdpr module.

File

modules/custom/social_gdpr/social_gdpr.install
View source
<?php

/**
 * @file
 * Install, update and uninstall functions for the social_gdpr module.
 */
use Drupal\user\Entity\Role;

/**
 * Implements hook_install().
 */
function social_gdpr_install() {

  // Set some default permissions.
  _social_gdpr_set_permissions();
  \Drupal::configFactory()
    ->getEditable('data_policy.data_policy')
    ->set('enforce_consent', TRUE)
    ->save();
}

/**
 * Function to set permissions.
 */
function _social_gdpr_set_permissions() {

  /** @var \Drupal\user\Entity\Role $role */
  foreach (Role::loadMultiple() as $role) {
    if ($role
      ->id() !== 'administrator') {
      $permissions = _social_gdpr_get_permissions($role
        ->id());
      user_role_grant_permissions($role
        ->id(), $permissions);
    }
  }

  // Only for AN.
  user_role_grant_permissions('anonymous', [
    'without consent',
  ]);
}

/**
 * Build the permissions.
 *
 * @param string $role
 *   The role.
 *
 * @return array
 *   Returns an array containing the permissions.
 */
function _social_gdpr_get_permissions($role) {

  // Anonymous.
  $permissions['anonymous'] = [];

  // Authenticated.
  $permissions['authenticated'] = array_merge($permissions['anonymous'], []);

  // Content manager.
  $permissions['contentmanager'] = array_merge($permissions['authenticated'], []);

  // Site manager.
  $permissions['sitemanager'] = array_merge($permissions['contentmanager'], [
    'administer data policy settings',
    'administer data policy entities',
    'edit data policy',
    'view all data policy revisions',
    'access data policy revisions',
    'revert all data policy revisions',
    'overview user consents',
    'edit inform and consent setting',
    'overview inform and consent settings',
    'administer inform and consent settings',
    'change inform and consent setting status',
    'translate data_policy',
  ]);
  if (isset($permissions[$role])) {
    return $permissions[$role];
  }
  return [];
}

/**
 * Update data policy permissions with new administer entities permission.
 */
function social_gdpr_update_8901() {
  user_role_grant_permissions('sitemanager', [
    'administer data policy entities',
  ]);
}

/**
 * Add permissions for SM to add translations for Data Policy.
 */
function social_gdpr_update_8902() {
  user_role_grant_permissions('sitemanager', [
    'translate data_policy',
  ]);
}

Functions

Namesort descending Description
social_gdpr_install Implements hook_install().
social_gdpr_update_8901 Update data policy permissions with new administer entities permission.
social_gdpr_update_8902 Add permissions for SM to add translations for Data Policy.
_social_gdpr_get_permissions Build the permissions.
_social_gdpr_set_permissions Function to set permissions.