From c0f06fbe676d75267b140ce121da5903aabaf938 Mon Sep 17 00:00:00 2001 From: Dries Buytaert <dries@buytaert.net> Date: Thu, 27 Jan 2005 14:45:42 +0000 Subject: [PATCH] - Patch #6025 by Jeremy: avoid data to get lost when two users are editing a node at the same time. --- modules/node.module | 14 +++++++++++++- modules/node/node.module | 14 +++++++++++++- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/modules/node.module b/modules/node.module index 836cb2a35747..557251781d0b 100644 --- a/modules/node.module +++ b/modules/node.module @@ -724,6 +724,11 @@ function node_menu($may_cache) { return $items; } +function node_last_changed($nid) { + $node = db_fetch_object(db_query('SELECT changed FROM {node} WHERE nid = %d', $nid)); + return ($node->changed); +} + /** * Generate the content administration overview. */ @@ -1083,6 +1088,10 @@ function node_validate($node) { $node->teaser = node_teaser($node->body); } + if (node_last_changed($node->nid) > $node->changed) { + form_set_error('changed', t('This content has been modified by another user, unable to save changes.')); + } + // Create a new revision when required. $node = node_revision_create($node); @@ -1221,6 +1230,10 @@ function node_form($edit) { $output .= form_hidden('created', $edit->created); } + if ($edit->changed) { + $output .= form_hidden('changed', $edit->changed); + } + $output .= form_hidden('type', $edit->type); // Add the buttons. @@ -1353,7 +1366,6 @@ function node_preview($node) { if (empty($node->created)) { $node->created = time(); } - $node->changed = time(); // Extract a teaser, if it hasn't been set (e.g. by a module-provided // 'teaser' form item). diff --git a/modules/node/node.module b/modules/node/node.module index 836cb2a35747..557251781d0b 100644 --- a/modules/node/node.module +++ b/modules/node/node.module @@ -724,6 +724,11 @@ function node_menu($may_cache) { return $items; } +function node_last_changed($nid) { + $node = db_fetch_object(db_query('SELECT changed FROM {node} WHERE nid = %d', $nid)); + return ($node->changed); +} + /** * Generate the content administration overview. */ @@ -1083,6 +1088,10 @@ function node_validate($node) { $node->teaser = node_teaser($node->body); } + if (node_last_changed($node->nid) > $node->changed) { + form_set_error('changed', t('This content has been modified by another user, unable to save changes.')); + } + // Create a new revision when required. $node = node_revision_create($node); @@ -1221,6 +1230,10 @@ function node_form($edit) { $output .= form_hidden('created', $edit->created); } + if ($edit->changed) { + $output .= form_hidden('changed', $edit->changed); + } + $output .= form_hidden('type', $edit->type); // Add the buttons. @@ -1353,7 +1366,6 @@ function node_preview($node) { if (empty($node->created)) { $node->created = time(); } - $node->changed = time(); // Extract a teaser, if it hasn't been set (e.g. by a module-provided // 'teaser' form item). -- GitLab