diff options
author | Dries Buytaert <dries@buytaert.net> | 2005-01-27 14:45:42 +0000 |
---|---|---|
committer | Dries Buytaert <dries@buytaert.net> | 2005-01-27 14:45:42 +0000 |
commit | c0f06fbe676d75267b140ce121da5903aabaf938 (patch) | |
tree | 6d85ea690d3b69d9c1ad68cfbb2903efb4fa9bad | |
parent | cf2bf077162a1e44d0edea3a625f615de91c6ba3 (diff) | |
download | brdo-c0f06fbe676d75267b140ce121da5903aabaf938.tar.gz brdo-c0f06fbe676d75267b140ce121da5903aabaf938.tar.bz2 |
- Patch #6025 by Jeremy: avoid data to get lost when two users are editing a node at the same time.
-rw-r--r-- | modules/node.module | 14 | ||||
-rw-r--r-- | modules/node/node.module | 14 |
2 files changed, 26 insertions, 2 deletions
diff --git a/modules/node.module b/modules/node.module index 836cb2a35..557251781 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 836cb2a35..557251781 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). |