social_lms_integrator-1.0.0-beta4/modules/social_lms_integrator_iteration_managers/social_lms_integrator_iteration_managers.install

modules/social_lms_integrator_iteration_managers/social_lms_integrator_iteration_managers.install
<?php

/**
 * @file
 * Install, update and uninstall functions for the social_lms_integrator_iteration_managers module.
 */

use Drupal\user\Entity\Role;
use Symfony\Component\Yaml\Yaml;

/**
 * Implements hook_install().
 *
 * Perform actions related to the installation of social_lms_integrator_iteration_managers.
 */
function social_lms_integrator_iteration_managers_install() {
  // Fetch site manager role.
  $role = Role::load('sitemanager');
  // Set permission for site manager.
  if ($role instanceof Role) {
    // Set permission.
    $role->grantPermission('set social iteration managers settings');
    $role->trustData()->save();
  }

  // Add enrollments permissions to CM and SM.
  $roles = [
    'sitemanager',
    'contentmanager',
  ];

  foreach ($roles as $rolename) {
    $role = Role::load($rolename);
    // Set permission for site manager.
    if ($role instanceof Role) {
      // Set permission.
      $role->grantPermission('manage everything iteration enrollments');
      $role->trustData()->save();
    }
  }
}

/**
 * Updates views.view.iteration_manage_enrollments view
 */
function social_lms_integrator_iteration_managers_update_8001() {

  $configs_to_install = [
    'views.view.iteration_manage_enrollments',
  ];

  foreach ($configs_to_install as $config_to_install) {
    _social_lms_integrator_iteration_managers_update_or_install_config($config_to_install, '8001', 'social_lms_integrator_iteration_managers');
  }

}

/**
 * Updates message templates and related fields
 */
function social_lms_integrator_iteration_managers_update_8002() {

  $configs_to_install = [
    'field.field.message.member_added_by_it_organiser.field_message_context',
    'field.field.message.member_added_by_it_organiser.field_message_destination',
    'field.field.message.member_added_by_it_organiser.field_message_related_object'
  ];

  foreach ($configs_to_install as $config_to_install) {
    _social_lms_integrator_iteration_managers_update_or_install_config($config_to_install, '8002', 'social_lms_integrator_iteration_managers');
  }

}


/**
 * Updates views to fix VBO field Plugin issue
 */
function social_lms_integrator_iteration_managers_update_8003() {

  $configs_to_install = [
    'views.view.iteration_manage_enrollments'
  ];

  foreach ($configs_to_install as $config_to_install) {
    _social_lms_integrator_iteration_managers_update_or_install_config($config_to_install, '8003', 'social_lms_integrator_iteration_managers');
  }

}

/**
 * Add view.iteration_manage_enrollment_requests
 */
function social_lms_integrator_iteration_managers_update_8004() {

  $configs_to_install = [
    'views.view.iteration_manage_enrollment_requests'
  ];

  foreach ($configs_to_install as $config_to_install) {
    _social_lms_integrator_iteration_managers_update_or_install_config($config_to_install, '8004', 'social_lms_integrator_iteration_managers');
  }

}

function _social_lms_integrator_iteration_managers_update_or_install_config( String $prefix, String $update_id, String $module) {
  $updated = [];
  $created = [];

  /** @var \Drupal\Core\Config\ConfigManagerInterface $config_manager */
  $config_manager = \Drupal::service('config.manager');
  $files = glob(drupal_get_path('module', $module) . '/config/update_' . $update_id. '/' . $prefix . '*.yml') ;
  foreach ($files as $file) {
    $raw = file_get_contents($file);
    $value = \Drupal\Component\Serialization\Yaml::decode($raw);
    if(!is_array($value)) {
      throw new \RuntimeException(sprintf('Invalid YAML file %s'), $file);
    }

    $type = $config_manager->getEntityTypeIdByName(basename($file));
    $entity_manager = $config_manager->getEntityTypeManager();
    $definition = $entity_manager->getDefinition($type);
    $id_key = $definition->getKey('id');
    $id = $value[$id_key];

    /** @var \Drupal\Core\Config\Entity\ConfigEntityStorage $entity_storage */
    $entity_storage = $entity_manager->getStorage($type);
    $entity = $entity_storage->load($id);
    if ($entity) {
      $entity = $entity_storage->updateFromStorageRecord($entity, $value);
      $entity->save();
      $updated[] = $id;
    }
    else {
      $entity = $entity_storage->createFromStorageRecord($value);
      $entity->save();
      $created[] = $id;
    }
  }

  return [
    'udpated' => $updated,
    'created' => $created,
  ];
}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc