Browse Source

Clear the correct cache and fix coder issues

pull/899/head
Jared Whiklo 3 years ago
parent
commit
debab30443
  1. 20
      src/Form/IslandoraSettingsForm.php

20
src/Form/IslandoraSettingsForm.php

@ -357,22 +357,23 @@ class IslandoraSettingsForm extends ConfigFormBase {
} }
/** /**
* Removes the Fedora Pseudo field from any entity bundles that have be unselected. * Removes the Fedora URI field from entity bundles that have be unselected.
* *
* @param array $current_config * @param array $current_config
* The current set of entity type & bundle to have the pseudo field, format {bundle}:{entity_type} * The current set of entity types & bundles to have the pseudo field,
* format {bundle}:{entity_type}.
* @param array $new_config * @param array $new_config
* The new set of entity type & bundle to have the pseudo field, format {bundle}:{entity_type} * The new set of entity types & bundles to have the pseudo field, format
* {bundle}:{entity_type}.
* *
* @throws \Drupal\Component\Plugin\Exception\InvalidPluginDefinitionException * @throws \Drupal\Component\Plugin\Exception\InvalidPluginDefinitionException
* @throws \Drupal\Component\Plugin\Exception\PluginNotFoundException * @throws \Drupal\Component\Plugin\Exception\PluginNotFoundException
* @throws \Drupal\Core\Entity\EntityStorageException * @throws \Drupal\Core\Entity\EntityStorageException
*/ */
private function updateEntityViewConfiguration(array $current_config, array $new_config) { private function updateEntityViewConfiguration(array $current_config, array $new_config) {
$cache_tags = [];
$removed = array_diff($current_config, $new_config); $removed = array_diff($current_config, $new_config);
$added = array_diff($new_config, $current_config);
$entity_view_display = $this->entityTypeManager->getStorage('entity_view_display'); $entity_view_display = $this->entityTypeManager->getStorage('entity_view_display');
// types being removed
foreach ($removed as $bundle_type) { foreach ($removed as $bundle_type) {
[$bundle, $type_id] = explode(":", $bundle_type); [$bundle, $type_id] = explode(":", $bundle_type);
$results = $entity_view_display->getQuery() $results = $entity_view_display->getQuery()
@ -384,10 +385,13 @@ class IslandoraSettingsForm extends ConfigFormBase {
foreach ($entities as $entity) { foreach ($entities as $entity) {
$entity->removeComponent(self::GEMINI_PSEUDO_FIELD); $entity->removeComponent(self::GEMINI_PSEUDO_FIELD);
$entity->save(); $entity->save();
$cache_tags = array_merge($cache_tags, $entity->getCacheTags());
} }
} }
$entity_view_display->resetCache(); if (count($removed) > 0 || count($added) > 0) {
Cache::invalidateTags($cache_tags); // If we added or cleared a type then clear the extra_fields cache.
// @see Drupal/Core/Entity/EntityFieldManager::getExtraFields
Cache::invalidateTags(["entity_field_info"]);
}
} }
} }

Loading…
Cancel
Save