You are here

function lightning_search_node_type_delete in Lightning Core 8.4

Same name and namespace in other branches
  1. 8.5 modules/lightning_search/lightning_search.module \lightning_search_node_type_delete()
  2. 8 modules/lightning_search/lightning_search.module \lightning_search_node_type_delete()
  3. 8.2 modules/lightning_search/lightning_search.module \lightning_search_node_type_delete()
  4. 8.3 modules/lightning_search/lightning_search.module \lightning_search_node_type_delete()

Implements hook_ENTITY_TYPE_delete().

File

modules/lightning_search/lightning_search.module, line 59
Contains Search API integration for Lightning.

Code

function lightning_search_node_type_delete(NodeTypeInterface $node_type) {

  // Don't do anything during config sync.
  if (\Drupal::isConfigSyncing()) {
    return;
  }
  $type = $node_type
    ->id();

  // No point in continuing without an index to configure.

  /** @var \Drupal\search_api\IndexInterface $index */
  $index = Index::load('content');
  if (empty($index)) {
    return;
  }
  $field = $index
    ->getField('rendered');
  if ($field) {
    $configuration = $field
      ->getConfiguration();
    unset($configuration['view_mode']['entity:node'][$type]);
    $field
      ->setConfiguration($configuration);
    $index
      ->save();
  }

  /** @var \Drupal\views\ViewEntityInterface $view */
  $view = View::load('search');
  if (empty($view)) {
    return;
  }
  $display =& $view
    ->getDisplay('default');
  if ($display['display_options']['row']['type'] == 'search_api') {
    unset($display['display_options']['row']['options']['view_modes']['entity:node'][$type]);
    $view
      ->save();
  }
}