You are here

group_core_comments.install in Open Social 8.2

Install, update and uninstall functions for the group_core_comments module.

File

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

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

/**
 * Implements hook_install().
 *
 * Perform actions related to the installation of group_core_comments.
 */
function group_core_comments_install() {

  // Set some default permissions.
  _group_core_comments_set_permissions();
}

/**
 * Function to set permissions.
 */
function _group_core_comments_set_permissions() {
  $roles = Role::loadMultiple();

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

/**
 * Get permissions per role.
 *
 * @param string $role
 *   The name of the role.
 *
 * @return array
 *   A list of permissions.
 */
function _group_core_comments_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'], [
    'delete all comments',
  ]);
  if (isset($permissions[$role])) {
    return $permissions[$role];
  }
  return [];
}

/**
 * Enable 'delete all comments' permission for site manager users.
 */
function group_core_comments_update_8001(&$sandbox) {
  $roles = Role::loadMultiple();
  $permissions = [
    'delete all comments',
  ];

  /** @var \Drupal\user\Entity\Role $role */
  foreach ($roles as $role) {
    if ($role
      ->id() === 'sitemanager') {
      user_role_grant_permissions($role
        ->id(), $permissions);
    }
  }
}

Functions

Namesort descending Description
group_core_comments_install Implements hook_install().
group_core_comments_update_8001 Enable 'delete all comments' permission for site manager users.
_group_core_comments_get_permissions Get permissions per role.
_group_core_comments_set_permissions Function to set permissions.