summaryrefslogtreecommitdiff
path: root/modules/node/node.module
diff options
context:
space:
mode:
authorDries Buytaert <dries@buytaert.net>2010-03-31 13:55:25 +0000
committerDries Buytaert <dries@buytaert.net>2010-03-31 13:55:25 +0000
commit3e10914bc5a04915772fbf1e3432156d34058540 (patch)
treeb8fba708c8e7dc578099b2a1d193aea209920c6c /modules/node/node.module
parentd0f81a1fbaf05e31cd204ce624f7559632a311e3 (diff)
downloadbrdo-3e10914bc5a04915772fbf1e3432156d34058540.tar.gz
brdo-3e10914bc5a04915772fbf1e3432156d34058540.tar.bz2
- Patch #757484 by catch: optimize node_save().
Diffstat (limited to 'modules/node/node.module')
-rw-r--r--modules/node/node.module17
1 files changed, 10 insertions, 7 deletions
diff --git a/modules/node/node.module b/modules/node/node.module
index 0325f5c0f..b11c0035e 100644
--- a/modules/node/node.module
+++ b/modules/node/node.module
@@ -1072,15 +1072,14 @@ function node_save($node) {
module_invoke_all('node_' . $op, $node);
entity_invoke($op, 'node', $node);
- // Update the node access table for this node.
- node_access_acquire_grants($node);
+ // Update the node access table for this node. There's no need to delete
+ // existing records if the node is new.
+ $delete = $op == 'insert';
+ node_access_acquire_grants($node, $delete);
// Clear internal properties.
unset($node->is_new);
- // Clear the page and block caches.
- cache_clear_all();
-
// Ignore slave server temporarily to give time for the
// saved node to be propagated to the slave.
db_ignore_slave();
@@ -3062,8 +3061,12 @@ function node_query_node_access_alter(QueryAlterableInterface $query) {
*
* @param $node
* The $node to acquire grants for.
+ *
+ * @param $delete
+ * Whether to delete existing node access records before inserting new ones.
+ * Defaults to TRUE.
*/
-function node_access_acquire_grants($node) {
+function node_access_acquire_grants($node, $delete = TRUE) {
$grants = module_invoke_all('node_access_records', $node);
// Let modules alter the grants.
drupal_alter('node_access_records', $grants, $node);
@@ -3081,7 +3084,7 @@ function node_access_acquire_grants($node) {
$grants = array_shift($grant_by_priority);
}
- node_access_write_grants($node, $grants);
+ node_access_write_grants($node, $grants, NULL, $delete);
}
/**