diff --git a/core/modules/book/book.module b/core/modules/book/book.module index 0457488..03dacf2 100644 --- a/core/modules/book/book.module +++ b/core/modules/book/book.module @@ -491,6 +491,7 @@ function book_node_insert(EntityInterface $node) { $node->book['nid'] = $node->id(); $node->book['menu_name'] = $book_manager->createMenuName($node->book['bid']); $book_manager->updateOutline($node); + $book_manager->bookCacheDelete($node); } } @@ -507,6 +508,7 @@ function book_node_update(EntityInterface $node) { $node->book['nid'] = $node->id(); $node->book['menu_name'] = $book_manager->createMenuName($node->book['bid']); $book_manager->updateOutline($node); + $book_manager->bookCacheDelete($node); } } @@ -532,6 +534,7 @@ function book_node_predelete(EntityInterface $node) { ->condition('mlid', $node->book['mlid']) ->execute(); drupal_static_reset('book_get_books'); + \Drupal::service('book.manager')->bookCacheDelete($node); } } diff --git a/core/modules/book/lib/Drupal/book/BookManager.php b/core/modules/book/lib/Drupal/book/BookManager.php index 9b415a8..94c72e7 100644 --- a/core/modules/book/lib/Drupal/book/BookManager.php +++ b/core/modules/book/lib/Drupal/book/BookManager.php @@ -1042,4 +1042,15 @@ public function bookMenuSubtreeData($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); + cache('menu')->delete($cache->data); + } }