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,
];
}
