diff --git a/core/modules/book/book.module b/core/modules/book/book.module index fe6e06d..ad500ba 100644 --- a/core/modules/book/book.module +++ b/core/modules/book/book.module @@ -274,6 +274,7 @@ function book_node_insert(EntityInterface $node) { /** @var \Drupal\book\BookManagerInterface $book_manager */ $book_manager = \Drupal::service('book.manager'); $book_manager->updateOutline($node); + $book_manager->bookCacheDelete($node); } /** @@ -283,6 +284,7 @@ function book_node_update(EntityInterface $node) { /** @var \Drupal\book\BookManagerInterface $book_manager */ $book_manager = \Drupal::service('book.manager'); $book_manager->updateOutline($node); + $book_manager->bookCacheDelete($node); } /** @@ -293,6 +295,7 @@ function book_node_predelete(EntityInterface $node) { /** @var \Drupal\book\BookManagerInterface $book_manager */ $book_manager = \Drupal::service('book.manager'); $book_manager->deleteFromBook($node->book['nid']); + \Drupal::service('book.manager')->bookCacheDelete($node); } } diff --git a/core/modules/book/src/BookManager.php b/core/modules/book/src/BookManager.php index 3f5cfdc..86c0a1a 100644 --- a/core/modules/book/src/BookManager.php +++ b/core/modules/book/src/BookManager.php @@ -1061,4 +1061,17 @@ public function bookSubtreeData($link) { return $tree[$cid]; } + public function bookGenerateCacheId($book) { + $mid = empty($book['plid']) ? $book['mlid'] : $book['plid']; + return 'links:' . $book['menu_name'] . ':subtree-cid:' . $mid; + } + + public function bookCacheDelete($node) { + $cid = $this->bookGenerateCacheId($node->book); + $cache = cache('menu')->get($cid); + if (!empty($cache->data)) { + return cache('menu')->delete($cache->data); + } + return FALSE; + } }