Theme config clean up when uninstalling

Created on 18 January 2024, over 1 year ago

Sometimes you have to uninstall the theme to fix an issue. It would be really handy to have a method to remove all of the configuration added by civic theme.

Feature request
Status

Active

Version

1.0

Component

Code

Created by

🇦🇺Australia alex.skrypnyk Melbourne

Live updates comments and jobs are added and updated live.
Sign in to follow issues

Comments & Activities

  • Issue created by @alex.skrypnyk
  • 🇦🇺Australia imclean Tasmania

    I came across this recently where installing the subtheme via the GUI timed out the first time then didn't seem to properly install and I got the error in 🐛 Installing civictheme via drush results in "This block is broken or missing." on main page Postponed: needs info . I uninstalled the subtheme and reinstalled it but still had the same error.

    When I then set CivicTheme as the default it also had the missing block error, even though it was fine the first time I tested it. I then uninstalled the subtheme and CivicTheme and tried to reinstall CivicTheme and got the error: "Configuration (...) provided by civictheme already exist in active configuration".

    This is with a fresh install of GovCMS so I can just reinstall it again but this may not be the case in all situations.

  • 🇮🇳India divyansh.gupta Jaipur

    I created this civictheme.install file:
    <?php

    /**
    * @file
    * Includes uninstall code.
    */

    /**
    * Implements hook_uninstall().
    */
    function civictheme_uninstall() {

    // Log the start of the uninstall process.
    \Drupal::logger('civictheme')->notice('Uninstall process started.');

    // Load all configuration names.
    $config_names = \Drupal::configFactory()->listAll();

    // Array of configurations to delete.
    $configurations_to_delete = [
    // Add other specific configurations as needed.
    'core.entity_view_mode.media.component',
    'core.entity_view_mode.media.embedded',
    'field.storage.block_content.field_c_b_background_image',
    'field.storage.block_content.field_c_b_banner_blend_mode',
    'field.storage.block_content.field_c_b_banner_type',
    'field.storage.block_content.field_c_b_bottom',
    'field.storage.block_content.field_c_b_components',
    'field.storage.block_content.field_c_b_featured_image',
    'field.storage.block_content.field_c_b_link',
    'field.storage.block_content.field_c_b_social_icons',
    'field.storage.block_content.field_c_b_theme',
    'field.storage.block_content.field_c_b_top',
    'field.storage.block_content.field_c_b_trigger_text',
    'field.storage.block_content.field_c_b_trigger_theme',
    'field.storage.block_content.field_c_b_with_border',
    'field.storage.media.field_c_m_audio_file',
    'field.storage.media.field_c_m_caption',
    'field.storage.media.field_c_m_document',
    'field.storage.media.field_c_m_icon',
    'field.storage.media.field_c_m_image',
    'field.storage.media.field_c_m_media_tags',
    'field.storage.media.field_c_m_oembed_video',
    'field.storage.media.field_c_m_transcript',
    'field.storage.media.field_c_m_transcript_link',
    'field.storage.media.field_c_m_video_file',
    'field.storage.node.field_c_n_alert_page_visibility',
    'field.storage.node.field_c_n_alert_type',
    'field.storage.node.field_c_n_attachments',
    'field.storage.node.field_c_n_banner_background',
    'field.storage.node.field_c_n_banner_blend_mode',
    'field.storage.node.field_c_n_banner_components',
    'field.storage.node.field_c_n_banner_components_bott',
    'field.storage.node.field_c_n_banner_featured_image',
    'field.storage.node.field_c_n_banner_hide_breadcrumb',
    'field.storage.node.field_c_n_banner_theme',
    'field.storage.node.field_c_n_banner_title',
    'field.storage.node.field_c_n_banner_type',
    'field.storage.node.field_c_n_body',
    'field.storage.node.field_c_n_components',
    'field.storage.node.field_c_n_custom_last_updated',
    'field.storage.node.field_c_n_date_range',
    'field.storage.node.field_c_n_hide_sidebar',
    'field.storage.node.field_c_n_hide_tags',
    'field.storage.node.field_c_n_location',
    'field.storage.node.field_c_n_show_last_updated',
    'field.storage.node.field_c_n_show_toc',
    'field.storage.node.field_c_n_site_section',
    'field.storage.node.field_c_n_summary',
    'field.storage.node.field_c_n_thumbnail',
    'field.storage.node.field_c_n_topics',
    'field.storage.node.field_c_n_vertical_spacing',
    'field.storage.paragraph.field_c_p_address',
    'field.storage.paragraph.field_c_p_attachments',
    'field.storage.paragraph.field_c_p_attributes',
    'field.storage.paragraph.field_c_p_background',
    'field.storage.paragraph.field_c_p_cards',
    'field.storage.paragraph.field_c_p_content',
    'field.storage.paragraph.field_c_p_date',
    'field.storage.paragraph.field_c_p_date_range',
    'field.storage.paragraph.field_c_p_default_panel',
    'field.storage.paragraph.field_c_p_document',
    'field.storage.paragraph.field_c_p_embed_url',
    'field.storage.paragraph.field_c_p_expand',
    'field.storage.paragraph.field_c_p_footer_link',
    'field.storage.paragraph.field_c_p_header_link',
    'field.storage.paragraph.field_c_p_height',
    'field.storage.paragraph.field_c_p_icon',
    'field.storage.paragraph.field_c_p_image',
    'field.storage.paragraph.field_c_p_image_position',
    'field.storage.paragraph.field_c_p_link',
    'field.storage.paragraph.field_c_p_link_text',
    'field.storage.paragraph.field_c_p_links',
    'field.storage.paragraph.field_c_p_list_column_count',
    'field.storage.paragraph.field_c_p_list_content_type',
    'field.storage.paragraph.field_c_p_list_fill_width',
    'field.storage.paragraph.field_c_p_list_filters_exp',
    'field.storage.paragraph.field_c_p_list_item_theme',
    'field.storage.paragraph.field_c_p_list_item_view_as',
    'field.storage.paragraph.field_c_p_list_items',
    'field.storage.paragraph.field_c_p_list_limit',
    'field.storage.paragraph.field_c_p_list_limit_type',
    'field.storage.paragraph.field_c_p_list_link_above',
    'field.storage.paragraph.field_c_p_list_link_below',
    'field.storage.paragraph.field_c_p_list_site_sections',
    'field.storage.paragraph.field_c_p_list_topics',
    'field.storage.paragraph.field_c_p_list_type',
    'field.storage.paragraph.field_c_p_location',
    'field.storage.paragraph.field_c_p_panels',
    'field.storage.paragraph.field_c_p_reference',
    'field.storage.paragraph.field_c_p_show_image_as_icon',
    'field.storage.paragraph.field_c_p_slides',
    'field.storage.paragraph.field_c_p_subtitle',
    'field.storage.paragraph.field_c_p_summary',
    'field.storage.paragraph.field_c_p_theme',
    'field.storage.paragraph.field_c_p_title',
    'field.storage.paragraph.field_c_p_topics',
    'field.storage.paragraph.field_c_p_url',
    'field.storage.paragraph.field_c_p_vertical_spacing',
    'field.storage.paragraph.field_c_p_view_link',
    'field.storage.paragraph.field_c_p_webform',
    'field.storage.paragraph.field_c_p_width',
    ];

    // Loop through all configuration names.
    foreach ($config_names as $config_name) {
    // Check if the config name contains 'civictheme' or is in the
    // specific configurations.
    if (strpos($config_name, 'civictheme') !== FALSE || in_array($config_name, $configurations_to_delete)) {
    $config = \Drupal::configFactory()->getEditable($config_name);
    // Delete the configuration.
    $config->delete();
    // Log a message.
    \Drupal::logger('civictheme')->notice('Deleted configuration: @name', ['@name' => $config_name]);
    }
    }

    }

    but it is not being called while uninstalling but when i tried it other themes and modules it is working fine even it is running if i am running this through cron but .install file is not being called while uninstallling.
    So if someone can help me solve this completely.

Production build 0.71.5 2024