diff --git a/core/modules/node/node.module b/core/modules/node/node.module index 4e76edddd2..af5a97eac5 100644 --- a/core/modules/node/node.module +++ b/core/modules/node/node.module @@ -1197,8 +1197,7 @@ function node_access_rebuild($batch_mode = FALSE) { // To preserve database integrity, only write grants if the node // loads successfully. if (!empty($node)) { - $grants = $access_control_handler->acquireGrants($node); - \Drupal::service('node.grant_storage')->write($node, $grants); + $access_control_handler->acquireAndWriteGrants($node); } } } @@ -1254,9 +1253,8 @@ function _node_access_rebuild_batch_operation(&$context) { // loads successfully. if (!empty($node)) { /** @var \Drupal\node\NodeAccessControlHandlerInterface $access_control_handler */ - $access_control_handler = \Drupal::entityManager()->getAccessControlHandler('node'); - $grants = $access_control_handler->acquireGrants($node); - \Drupal::service('node.grant_storage')->write($node, $grants); + $access_control_handler = \Drupal::entityTypeManager()->getAccessControlHandler('node'); + $access_control_handler->acquireAndWriteGrants($node); } $context['sandbox']['progress']++; $context['sandbox']['current_node'] = $nid; diff --git a/core/modules/node/src/Entity/Node.php b/core/modules/node/src/Entity/Node.php index e5544a2d85..90edd9b02a 100644 --- a/core/modules/node/src/Entity/Node.php +++ b/core/modules/node/src/Entity/Node.php @@ -139,9 +139,8 @@ public function postSave(EntityStorageInterface $storage, $update = TRUE) { // is new. if ($this->isDefaultRevision()) { /** @var \Drupal\node\NodeAccessControlHandlerInterface $access_control_handler */ - $access_control_handler = \Drupal::entityManager()->getAccessControlHandler('node'); - $grants = $access_control_handler->acquireGrants($this); - \Drupal::service('node.grant_storage')->write($this, $grants, NULL, $update); + $access_control_handler = \Drupal::entityTypeManager()->getAccessControlHandler('node'); + $access_control_handler->acquireAndWriteGrants($this, $update); } // Reindex the node when it is updated. The node is automatically indexed diff --git a/core/modules/node/src/NodeAccessControlHandler.php b/core/modules/node/src/NodeAccessControlHandler.php index a8a0bc6241..e7bb113705 100644 --- a/core/modules/node/src/NodeAccessControlHandler.php +++ b/core/modules/node/src/NodeAccessControlHandler.php @@ -160,7 +160,7 @@ public function acquireGrants(NodeInterface $node) { /** * {@inheritdoc} */ - public function writeGrants(NodeInterface $node, $delete = TRUE) { + public function acquireAndWriteGrants(NodeInterface $node, $delete = TRUE) { $grants = $this->acquireGrants($node); $this->grantStorage->write($node, $grants, NULL, $delete); } @@ -168,6 +168,13 @@ public function writeGrants(NodeInterface $node, $delete = TRUE) { /** * {@inheritdoc} */ + public function writeGrants(NodeInterface $node, $delete = TRUE) { + $this->acquireAndWriteGrants($node, $delete); + } + + /** + * {@inheritdoc} + */ public function writeDefaultGrant() { $this->grantStorage->writeDefault(); } diff --git a/core/modules/node/src/NodeAccessControlHandlerInterface.php b/core/modules/node/src/NodeAccessControlHandlerInterface.php index 7d407c1f16..3c28b0c267 100644 --- a/core/modules/node/src/NodeAccessControlHandlerInterface.php +++ b/core/modules/node/src/NodeAccessControlHandlerInterface.php @@ -29,23 +29,32 @@ public function acquireGrants(NodeInterface $node); /** - * Writes a list of grants to the database, deleting any previously saved ones. + * Gets and writes the grants of a node to the database. * - * Modules that use node access can use this function when doing mass updates - * due to widespread permission changes. + * @param \Drupal\node\NodeInterface $node + * The node whose grants are being written. + * @param $delete + * (optional) If FALSE, does not delete records. This is only for + * optimization purposes, and assumes the caller has already performed + * a mass delete of some form. Defaults to TRUE. + */ + public function acquireAndWriteGrants(NodeInterface $node, $delete = TRUE); + + /** + * Gets and writes the grants of a node to the database. * - * Note: Don't call this function directly from a contributed module. Call - * \Drupal\node\NodeAccessControlHandlerInterface::acquireGrants() instead. + * Compatibility wrapper for acquireAndWriteGrants(). * * @param \Drupal\node\NodeInterface $node * The node whose grants are being written. * @param $delete - * (optional) If false, does not delete records. This is only for optimization - * purposes, and assumes the caller has already performed a mass delete of - * some form. Defaults to TRUE. + * (optional) If FALSE, does not delete records. This is only for + * optimization purposes, and assumes the caller has already performed + * a mass delete of some form. Defaults to TRUE. * * @deprecated in Drupal 8.x, will be removed before Drupal 9.0. - * Use \Drupal\node\NodeAccessControlHandlerInterface::acquireGrants(). + * Use + * \Drupal\node\NodeAccessControlHandlerInterface::acquireAndWriteGrants(). */ public function writeGrants(NodeInterface $node, $delete = TRUE);