admin_toolbar_content-1.0.0/admin_toolbar_content.install
admin_toolbar_content.install
<?php
/**
* @file
* Install, update and uninstall functions for the Admin Toolbar Content module.
*/
/**
* Initialise the new configuration settings to their defaults.
*/
function admin_toolbar_content_update_9000() {
$config = \Drupal::configFactory()->getEditable('admin_toolbar_content.settings');
$config->set('recent_items', $config->get('recent_items') ?? 10);
$config->set('hide_non_content_items', $config->get('hide_non_content_items') ?? 1);
$config->set('show_account_link', $config->get('show_account_link') ?? '');
$config->set('enhance_content_item', $config->get('enhance_content_item') ?? 1);
$config->set('show_categories_item', $config->get('show_categories_item') ?? 1);
$config->set('show_media_item', $config->get('show_media_item') ?? 1);
$config->set('show_webforms_item', $config->get('show_webforms_item') ?? 1);
$config->save();
// Clear cache so admin menu can rebuild.
\Drupal::service('plugin.manager.menu.link')->rebuild();
}
/**
* Migrate config settings to v2.
*/
function admin_toolbar_content_update_9001() {
$config = \Drupal::configFactory()->getEditable('admin_toolbar_content.settings');
$data = [
'common' => [
'group_collections' => $config->get('group_collections') ?? '',
],
'content' => [
'enabled' => $config->get('enhance_content_item') ?? 1,
'recent_items' => $config->get('recent_items') ?? 5,
'recent_items_link' => $config->get('recent_items_link') ?? 'default',
'hide_non_content_items' => $config->get('hide_non_content_items') ?? 1,
],
'categories' => [
'enabled' => $config->get('show_categories_item') ?? 1,
],
'media' => [
'enabled' => $config->get('show_media_item') ?? 1,
'link_media_library' => 1,
],
'webforms' => [
'enabled' => $config->get('show_webforms_item') ?? 1,
],
'menus' => [
'enabled' => $config->get('show_menus_item') ?? 1,
],
'drupal' => [
'enabled' => 1,
'account_links' => $config->get('show_account_link') ?? 'both',
],
];
$config->setData($data);
$config->save();
}
/**
* Update config settings.
*/
function admin_toolbar_content_update_9002() {
$config = \Drupal::configFactory()->getEditable('admin_toolbar_content.settings');
// Correct the known default plugins to the new config structure.
$data = [
'common' => [
'group_collections' => $config->get('common.group_collections') ?? '',
'hide_empty_collections' => 0,
],
'plugins' => [
'content' => [
'enabled' => (bool) $config->get('content.enabled') ?? TRUE,
'recent_items' => [
'number_of_items' => $config->get('content.recent_items') ?? 5,
'hide_empty_list' => FALSE,
'link' => $config->get('content.recent_items_link') ?? 'default',
],
'hide_non_content_items' => (bool) $config->get('content.hide_non_content_items') ?? TRUE,
'hide_content_type_items' => [
'content_view' => 0,
'admin_permissions' => 0,
],
],
'categories' => [
'enabled' => (bool) $config->get('categories.enabled') ?? TRUE,
],
'media' => [
'enabled' => (bool) $config->get('media.enabled') ?? TRUE,
'link_media_library' => (bool) $config->get('media.link_media_library') ?? TRUE,
],
'webform' => [
'enabled' => (bool) $config->get('webforms.enabled') ?? TRUE,
],
'menus' => [
'enabled' => (bool) $config->get('menus.enabled') ?? TRUE,
],
'drupal' => [
'enabled' => (bool) $config->get('drupal.enabled') ?? TRUE,
'account_links' => $config->get('drupal.account_links') ?? 'both',
],
],
];
$raw_Data = $config->getRawData();
$plugin_manager = \Drupal::service('admin_toolbar_content.manager');
$plugins = $plugin_manager->getDefinitions();
foreach ($plugins as $plugin_id => $definition) {
if (isset($data['plugins'][$plugin_id])) {
// Skip the default plugins, those are corrected above.
continue;
}
// Custom plugins will just be copied to the new 'plugins' key.
$data['plugins'][$plugin_id] = [];
foreach ($raw_Data[$plugin_id] ?? [] as $key => $value) {
$data['plugins'][$plugin_id][$key] = $value;
}
}
$config->setData($data);
$config->save();
}
