social_lms_integrator-1.0.0-beta4/modules/social_lms_integrator_iteration/social_lms_integrator_iteration.install
modules/social_lms_integrator_iteration/social_lms_integrator_iteration.install
<?php
/**
* Adds 3 blocks for iteration listing
*/
function social_lms_integrator_iteration_update_8008() {
$configs_to_install = [
'views.view.iteration_listing',
];
foreach ($configs_to_install as $config_to_install) {
_social_lms_integrator_iteration_update_or_install_config($config_to_install, '8008', 'social_lms_integrator_iteration');
}
}
/**
* Adds new field field_iteration_all_day
*/
function social_lms_integrator_iteration_update_8009() {
$configs_to_install = [
'field.storage.node.field_iteration_all_day',
'field.field.node.iteration.field_iteration_all_day',
'core.entity_form_display.iteration_enrollment.iteration_enrollment.default',
'core.entity_view_display.iteration_enrollment.iteration_enrollment.default',
];
foreach ($configs_to_install as $config_to_install) {
_social_lms_integrator_iteration_update_or_install_config($config_to_install, '8009', 'social_lms_integrator_iteration');
}
}
/**
* Update group iteration view and remove
* group specific logic, without touching the logic.
*/
function social_lms_integrator_iteration_update_8010() {
$configs_to_install = [
'views.view.group_iterations',
];
foreach ($configs_to_install as $config_to_install) {
_social_lms_integrator_iteration_update_or_install_config($config_to_install, '8010', 'social_lms_integrator_iteration');
}
}
/**
* Adds 3 blocks for iteration listing
*/
function social_lms_integrator_iteration_update_8011() {
$configs_to_install = [
'views.view.iteration_listing',
];
foreach ($configs_to_install as $config_to_install) {
_social_lms_integrator_iteration_update_or_install_config($config_to_install, '8011', 'social_lms_integrator_iteration');
}
}
/**
* Adds 1 view and block iteration listing
*/
function social_lms_integrator_iteration_update_8012() {
$configs_to_install = [
'views.view.iteration_listing',
];
foreach ($configs_to_install as $config_to_install) {
_social_lms_integrator_iteration_update_or_install_config($config_to_install, '8012', 'social_lms_integrator_iteration');
}
}
/**
* Change to view block iteration listing - Date filter added.
*/
function social_lms_integrator_iteration_update_8013() {
$configs_to_install = [
'views.view.iteration_listing',
];
foreach ($configs_to_install as $config_to_install) {
_social_lms_integrator_iteration_update_or_install_config($config_to_install, '8013', 'social_lms_integrator_iteration');
}
}
function social_lms_integrator_iteration_install() {
$config_factory = \Drupal::service('config.factory');
$config_names = [
'block.block.socialblue_groupheroblock',
'block.block.socialblue_pagetitleblock_content',
];
foreach ($config_names as $config_name) {
$config = $config_factory->getEditable($config_name);
if (!empty($config->getRawData())) {
$pages = $config->get('visibility.request_path.pages');
$pages = explode("\r\n", $pages);
// Add new pages for iterations
$pages[] = '/group/*/iterations';
$pages = implode("\r\n", $pages);
$config->set('visibility.request_path.pages', $pages);
$config->save();
}
}
}
function _social_lms_integrator_iteration_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,
];
}
