summaryrefslogtreecommitdiff
path: root/modules/node/node.install
diff options
context:
space:
mode:
authorDries Buytaert <dries@buytaert.net>2010-09-29 19:46:40 +0000
committerDries Buytaert <dries@buytaert.net>2010-09-29 19:46:40 +0000
commit0a8e9c5b20c09e896f7627a15b5cf817e9ed5f9e (patch)
tree1d2b9ace8b4387e78ccede842f4ab8a1a11f2ed4 /modules/node/node.install
parenta6a4073b808b6af1b6e60f7a82666a1ccfd405c2 (diff)
downloadbrdo-0a8e9c5b20c09e896f7627a15b5cf817e9ed5f9e.tar.gz
brdo-0a8e9c5b20c09e896f7627a15b5cf817e9ed5f9e.tar.bz2
- Patch #898558 by Damien Tournoud, chx, ksenzee: clean-up the upgrade path: node.
Diffstat (limited to 'modules/node/node.install')
-rw-r--r--modules/node/node.install80
1 files changed, 49 insertions, 31 deletions
diff --git a/modules/node/node.install b/modules/node/node.install
index f63caa1e7..56af7bce3 100644
--- a/modules/node/node.install
+++ b/modules/node/node.install
@@ -485,10 +485,9 @@ function node_update_7004() {
// Map old preview setting to new values order.
$original_preview ? $original_preview = 2 : $original_preview = 1;
drupal_static_reset('_node_types_build');
- $type_list = node_type_get_types();
// Apply original settings to all types.
- foreach ($type_list as $type => $entity) {
+ foreach (_update_7000_node_get_types() as $type => $type_object) {
variable_set('teaser_length_' . $type, $original_length);
variable_set('node_preview_' . $type, $original_preview);
}
@@ -517,18 +516,27 @@ function node_update_7006(&$sandbox) {
// Get node type info for every invocation.
drupal_static_reset('_node_types_build');
- $node_types = node_type_get_types();
if (!isset($sandbox['total'])) {
// Initial invocation.
+ // First, create the body field.
+ $body_field = array(
+ 'field_name' => 'body',
+ 'type' => 'text_with_summary',
+ 'module' => 'text',
+ 'cardinality' => 1,
+ 'entity_types' => array('node'),
+ 'translatable' => TRUE,
+ );
+ _update_7000_field_create_field($body_field);
+
+ $default_trim_length = variable_get('teaser_length', 600);
+
// Get node type info, specifically the body field settings.
- $result = db_select('node_type', 'node_type')
- ->fields('node_type')
- ->execute();
- foreach ($result as $type_object) {
- $node_types[$type_object->type] = $type_object;
- }
+ $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;
@@ -541,26 +549,38 @@ function node_update_7006(&$sandbox) {
$node_types[$type_object->type] = $type_object;
}
- $default_trim_length = variable_get('teaser_length', 600);
// Add body field instances for existing node types.
foreach ($node_types as $node_type) {
if ($node_type->has_body) {
- $instance = node_add_body_field($node_type, $node_type->body_label);
- // Update newly created instance to convert teaser_length variable
- // into formatter settings.
$trim_length = variable_get('teaser_length_' . $node_type->type, $default_trim_length);
- $instance_changed = FALSE;
- foreach ($instance['display'] as $view_mode => $view_mode_info) {
- if ($view_mode_info['type'] == 'text_trimmed' || $view_mode_info['type'] == 'text_summary_or_trimmed') {
- if (!isset($view_mode_info['settings']['trim_length'])) {
- $instance['display'][$view_mode]['settings']['trim_length'] = $trim_length;
- $instance_changed = TRUE;
- }
- }
- }
- if ($instance_changed) {
- field_update_instance($instance);
- }
+
+ $instance = array(
+ 'entity_type' => 'node',
+ 'bundle' => $node_type->type,
+ 'label' => $node_type->body_label,
+ 'widget' => array(
+ 'type' => 'text_textarea_with_summary',
+ 'settings' => array(
+ 'rows' => 20,
+ 'summary_rows' => 5,
+ ),
+ 'weight' => -4,
+ 'module' => 'text',
+ ),
+ 'settings' => array('display_summary' => TRUE),
+ 'display' => array(
+ 'default' => array(
+ 'label' => 'hidden',
+ 'type' => 'text_default',
+ ),
+ 'teaser' => array(
+ 'label' => 'hidden',
+ 'type' => 'text_summary_or_trimmed',
+ 'trim_length' => $trim_length,
+ ),
+ ),
+ );
+ _update_7000_field_create_instance($body_field, $instance);
variable_del('teaser_length_' . $node_type->type);
}
// Leave 'teaser_length' variable for aggregator module upgrade.
@@ -580,14 +600,12 @@ function node_update_7006(&$sandbox) {
$query = db_select('node', 'n');
$query->join('node_revision', 'nr', 'n.vid = nr.vid');
$sandbox['total'] = $query->countQuery()->execute()->fetchField();
+
+ $sandbox['body_field_id'] = $body_field['id'];
}
else {
// Subsequent invocations.
- // Grab the body field ID for field_sql_storage_field_storage_write().
- $body_field = field_info_field('body');
- $body_field_id = $body_field['id'];
-
$found = FALSE;
if ($sandbox['total']) {
// Operate on every revision of every node (whee!), in batches.
@@ -647,7 +665,7 @@ function node_update_7006(&$sandbox) {
}
// This is a core update and no contrib modules are enabled yet, so
// we can assume default field storage for a faster update.
- field_sql_storage_field_storage_write('node', $node, FIELD_STORAGE_INSERT, array($body_field_id));
+ _update_7000_field_sql_storage_write('node', $node->type, $node->nid, $node->vid, 'body', $node->body);
}
// Migrate the status columns to the {node_revision} table.
@@ -699,7 +717,7 @@ function node_update_7007() {
function node_update_7008() {
$roles = user_roles(FALSE, 'administer nodes');
foreach ($roles as $rid => $role) {
- user_role_grant_permissions($rid, array('access content overview'));
+ _update_7000_user_role_grant_permissions($rid, array('access content overview'), 'node');
}
}