summaryrefslogtreecommitdiff
path: root/modules/node/node.install
diff options
context:
space:
mode:
authorwebchick <webchick@24967.no-reply.drupal.org>2011-05-13 10:41:03 -0400
committerwebchick <webchick@24967.no-reply.drupal.org>2011-05-13 10:41:03 -0400
commitb1bd7f76152725a976059e27f5cf3ed8acb0a627 (patch)
treee19bc84661ae1043e824450c96937a11cef1d663 /modules/node/node.install
parent8e471a22a7db5089eb3bfec61580719e4ebb88d2 (diff)
downloadbrdo-b1bd7f76152725a976059e27f5cf3ed8acb0a627.tar.gz
brdo-b1bd7f76152725a976059e27f5cf3ed8acb0a627.tar.bz2
Issue #1017672 by catch, q0rban: D6 to D7 update process permanently deletes comment bodies and other data, and throws fatal SQL errors.
Diffstat (limited to 'modules/node/node.install')
-rw-r--r--modules/node/node.install34
1 files changed, 20 insertions, 14 deletions
diff --git a/modules/node/node.install b/modules/node/node.install
index c5378dc85..14290e3ad 100644
--- a/modules/node/node.install
+++ b/modules/node/node.install
@@ -469,7 +469,26 @@ function node_update_dependencies() {
* @ingroup update-api-6.x-to-7.x
*/
function _update_7000_node_get_types() {
- return db_query('SELECT * FROM {node_type}')->fetchAllAssoc('type', PDO::FETCH_OBJ);
+ $node_types = db_query('SELECT * FROM {node_type}')->fetchAllAssoc('type', PDO::FETCH_OBJ);
+
+ // Create default settings for orphan nodes.
+ $all_types = db_query('SELECT DISTINCT type FROM {node}')->fetchCol();
+ $extra_types = array_diff($all_types, array_keys($node_types));
+
+ foreach ($extra_types as $type) {
+ $type_object = new stdClass;
+ $type_object->type = $type;
+
+ // In Drupal 6, whether you have a body field or not is a flag in the node
+ // type table. If it's enabled, nodes may or may not have an empty string
+ // for the bodies. As we can't detect what this setting should be in
+ // Drupal 7 without access to the Drupal 6 node type settings, we assume
+ // the default, which is to enable the body field.
+ $type_object->has_body = 1;
+ $type_object->body_label = 'Body';
+ $node_types[$type_object->type] = $type_object;
+ }
+ return $node_types;
}
/**
@@ -600,19 +619,6 @@ function node_update_7006(&$sandbox) {
// Get node type info, specifically the body field settings.
$node_types = _update_7000_node_get_types();
- // Create default settings for orphan nodes.
- $extra_types = db_query('SELECT DISTINCT type FROM {node} WHERE type NOT IN (:types)', array(':types' => array_keys($node_types)))->fetchCol();
- foreach ($extra_types as $type) {
- $type_object = new stdClass;
- $type_object->type = $type;
- // Always create a body. Querying node_revisions for a non-empty body
- // would skip creating body fields for types that have a body but
- // the nodes of that type so far had empty bodies.
- $type_object->has_body = 1;
- $type_object->body_label = 'Body';
- $node_types[$type_object->type] = $type_object;
- }
-
// Add body field instances for existing node types.
foreach ($node_types as $node_type) {
if ($node_type->has_body) {