--- sites/all/modules/cck/modules/fieldgroup/fieldgroup.install Mon Dec 01 18:43:50 2008 +++ sites/all/modules/cck/modules/fieldgroup/fieldgroup.install Mon Dec 22 11:21:54 2008 @@ -1,309 +1,322 @@ - array( - 'group_type' => array('type' => 'varchar', 'length' => 32, 'not null' => TRUE, 'default' => 'standard'), - 'type_name' => array('type' => 'varchar', 'length' => 32, 'not null' => TRUE, 'default' => ''), - 'group_name' => array('type' => 'varchar', 'length' => 32, 'not null' => TRUE, 'default' => ''), - 'label' => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => ''), - 'settings' => array('type' => 'text', 'size' => 'medium', 'not null' => TRUE), - 'weight' => array('type' => 'int', 'not null' => TRUE, 'default' => 0), - ), - 'primary key' => array('type_name', 'group_name'), - ); - - $schema['content_group_fields'] = array( - 'fields' => array( - 'type_name' => array('type' => 'varchar', 'length' => 32, 'not null' => TRUE, 'default' => ''), - 'group_name' => array('type' => 'varchar', 'length' => 32, 'not null' => TRUE, 'default' => ''), - 'field_name' => array('type' => 'varchar', 'length' => 32, 'not null' => TRUE, 'default' => ''), - ), - 'primary key' => array('type_name', 'group_name', 'field_name'), - ); - - return $schema; -} - -/** - * rename groups form "group-*" to "group_*" - */ -function fieldgroup_update_1() { - $ret = array(); - if (!db_table_exists('node_group')) { - return $ret; - } - switch ($GLOBALS['db_type']) { - case 'pgsql': - $ret[] = update_sql("UPDATE {node_group} SET group_name = 'group_'||SUBSTRING(group_name FROM 7)"); - $ret[] = update_sql("UPDATE {node_group_fields} SET group_name = 'group_'||SUBSTRING(group_name FROM 7)"); - break; - - case 'mysql': - case 'mysqli': - $ret[] = update_sql("UPDATE {node_group} SET group_name = CONCAT('group_', SUBSTRING(group_name FROM 7))"); - $ret[] = update_sql("UPDATE {node_group_fields} SET group_name = CONCAT('group_', SUBSTRING(group_name FROM 7))"); - break; - } - return $ret; -} - -/** - * add display settings for the group - */ -function fieldgroup_update_2() { - $ret = array(); - if (!db_table_exists('node_group')) { - return $ret; - } - - // set settings column to accept larger values - switch ($GLOBALS['db_type']) { - case 'mysql': - case 'mysqli': - $ret[] = update_sql('ALTER TABLE {node_group} CHANGE settings settings mediumtext NOT NULL'); - break; - - case 'pgsql': - db_change_column($ret, 'node_group', 'settings', 'settings', 'text', array('not null' => TRUE)); - break; - } - - // move description into the settings array, and add new settings - $result = db_query("SELECT * FROM {node_group}"); - while ($group = db_fetch_array($result)) { - $settings = array(); - $settings['form'] = unserialize($group['settings']); - $settings['form']['description'] = $group['description']; - $settings['display'] = array('collapsible' => 0, 'collapsed' => 0, 'description' => ''); - $ret[] = update_sql("UPDATE {node_group} SET settings = '". db_escape_string(serialize($settings)) ."', description = '' WHERE group_name = '". $group['group_name'] ."'"); - } - - // drop description column - switch ($GLOBALS['db_type']) { - case 'mysql': - case 'mysqli': - $ret[] = update_sql('ALTER TABLE {node_group} DROP description'); - break; - - case 'pgsql': - // Postgres only supports dropping of columns since 7.4 - break; - } - - return $ret; -} - - -/** - * converts group settings collapsible/collapsed => style - */ -function fieldgroup_update_3() { - $ret = array(); - if (!db_table_exists('node_group')) { - return $ret; - } - $result = db_query("SELECT * FROM {node_group}"); - while ($group = db_fetch_array($result)) { - $group['settings'] = unserialize($group['settings']); - - if (!isset($group['settings']['form']['style'])) { - foreach (array('form', 'display') as $context) { - if (isset($group['settings'][$context]['collapsible']) && $group['settings'][$context]['collapsible']) { - if (isset($group['settings'][$context]['collapsed']) && $group['settings'][$context]['collapsed']) { - $group['settings'][$context]['style'] = 'fieldset_collapsed'; - } - else { - $group['settings'][$context]['style'] = 'fieldset_collapsible'; - } - } - else { - $group['settings'][$context]['style'] = 'fieldset'; - } - } - - $ret[] = update_sql("UPDATE {node_group} SET settings = '". db_escape_string(serialize($group['settings'])) ."' WHERE group_name = '". $group['group_name'] ."'"); - } - } - - return $ret; -} - -/* - * Increases module weight, so that other modules can form_alter() cck forms before the fields - * are moved in groups - */ -function fieldgroup_update_4() { - $ret = array(); - $ret[] = update_sql("UPDATE {system} SET weight = 9 WHERE name = 'fieldgroup'"); - return $ret; -} - - -/** - * Start D6 upgrades - */ - -/** - * Move fieldgroup tables to the content_* namespace. - */ -function fieldgroup_update_6000() { - if ($abort = content_check_update('fieldgroup')) { - return $abort; - } - - $ret = array(); - - db_rename_table($ret, 'node_group', 'content_group'); - db_rename_table($ret, 'node_group_fields', 'content_group_fields'); - variable_set('fieldgroup_schema_version', 6000); - return $ret; -} - -/* - * Increases module weight, so that other modules can form_alter() cck forms before the fields - * are moved in groups. - * - * Sites upgraded from D5 should have this already set. - * New D6 installs earlier than RC5 need this, as it was missing in fieldgroup_install. - */ -function fieldgroup_update_6001() { - if ($abort = content_check_update('fieldgroup')) { - return $abort; - } - - $ret = array(); - $ret[] = update_sql("UPDATE {system} SET weight = 9 WHERE name = 'fieldgroup'"); - return $ret; -} - -/** - * Same as 6000 : Move fieldgroup tables to the content_* namespace. - * This was missing in D6 releases earlier than RC5. Ensure we don't run this twice. - */ -function fieldgroup_update_6002() { - if ($abort = content_check_update('fieldgroup')) { - return $abort; - } - - $ret = array(); - if (db_table_exists('node_group')) { - db_rename_table($ret, 'node_group', 'content_group'); - db_rename_table($ret, 'node_group_fields', 'content_group_fields'); - variable_set('fieldgroup_schema_version', 6000); - } - return $ret; -} - -/** - * Remove tinyint (127) limitation on group weights. - */ -function fieldgroup_update_6003() { - if ($abort = content_check_update('fieldgroup')) { - return $abort; - } - - $ret = array(); - db_change_field($ret, 'content_group', 'weight', 'weight', array('type' => 'int', 'not null' => TRUE, 'default' => 0)); - return $ret; -} - -/** - * Add 'type' property for fieldgroups. - */ -function fieldgroup_update_6004() { - if ($abort = content_check_update('fieldgroup')) { - return $abort; - } - - $ret = array(); - db_add_field($ret, 'content_group', 'group_type', array('type' => 'varchar', 'length' => 32, 'not null' => TRUE, 'default' => 'standard')); - $ret[] = update_sql("DELETE FROM {cache_content} WHERE cid='fieldgroup_data'"); - return $ret; -} - -/** - * Add the 'exclude from $content' display setting to all existing groups. - */ -function fieldgroup_update_6005() { - $ret = array(); - $result = db_query("SELECT * FROM {content_group}"); - while ($type = db_fetch_array($result)) { - $new_settings = array(); - $settings = unserialize($type['settings']); - $new_settings = $settings; - $display_settings = !empty($settings['display']) ? $settings['display'] : array(); - if (!empty($display_settings)) { - foreach ($display_settings as $key => $val) { - $new_settings['display'][$key] = $val; - if ($key !== 'label' && is_array($val)) { - $new_settings['display'][$key]['exclude'] = 0; - } - } - } - else { - $new_settings['display'] = array( - 'label' => array('format' => 'above'), - 'full' => array('format' => 'default', 'exclude' => 0), - 'teaser' => array('format' => 'default', 'exclude' => 0), - ); - } - db_query("UPDATE {content_group} SET settings='%s' WHERE group_name='%s' AND type_name='%s'", serialize($new_settings), $type['group_name'], $type['type_name']); - } - return $ret; -} - -/** - * Remove orphaned fields (see http://drupal.org/node/339537). - */ -function fieldgroup_update_6006() { - $ret = array(); - $ret[] = update_sql("DELETE FROM {content_group_fields} WHERE (field_name, type_name) NOT IN (SELECT field_name, type_name FROM content_node_field_instance)"); - return $ret; + array( + 'group_type' => array('type' => 'varchar', 'length' => 32, 'not null' => TRUE, 'default' => 'standard'), + 'type_name' => array('type' => 'varchar', 'length' => 32, 'not null' => TRUE, 'default' => ''), + 'group_name' => array('type' => 'varchar', 'length' => 32, 'not null' => TRUE, 'default' => ''), + 'parent_group_name' => array('type' => 'varchar', 'length' => 32, 'not null' => FALSE, 'default' => ''), + 'label' => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => ''), + 'settings' => array('type' => 'text', 'size' => 'medium', 'not null' => TRUE), + 'weight' => array('type' => 'int', 'not null' => TRUE, 'default' => 0), + ), + 'primary key' => array('type_name', 'group_name'), + ); + + $schema['content_group_fields'] = array( + 'fields' => array( + 'type_name' => array('type' => 'varchar', 'length' => 32, 'not null' => TRUE, 'default' => ''), + 'group_name' => array('type' => 'varchar', 'length' => 32, 'not null' => TRUE, 'default' => ''), + 'field_name' => array('type' => 'varchar', 'length' => 32, 'not null' => TRUE, 'default' => ''), + ), + 'primary key' => array('type_name', 'group_name', 'field_name'), + ); + + return $schema; +} + +/** + * rename groups form "group-*" to "group_*" + */ +function fieldgroup_update_1() { + $ret = array(); + if (!db_table_exists('node_group')) { + return $ret; + } + switch ($GLOBALS['db_type']) { + case 'pgsql': + $ret[] = update_sql("UPDATE {node_group} SET group_name = 'group_'||SUBSTRING(group_name FROM 7)"); + $ret[] = update_sql("UPDATE {node_group_fields} SET group_name = 'group_'||SUBSTRING(group_name FROM 7)"); + break; + + case 'mysql': + case 'mysqli': + $ret[] = update_sql("UPDATE {node_group} SET group_name = CONCAT('group_', SUBSTRING(group_name FROM 7))"); + $ret[] = update_sql("UPDATE {node_group_fields} SET group_name = CONCAT('group_', SUBSTRING(group_name FROM 7))"); + break; + } + return $ret; +} + +/** + * add display settings for the group + */ +function fieldgroup_update_2() { + $ret = array(); + if (!db_table_exists('node_group')) { + return $ret; + } + + // set settings column to accept larger values + switch ($GLOBALS['db_type']) { + case 'mysql': + case 'mysqli': + $ret[] = update_sql('ALTER TABLE {node_group} CHANGE settings settings mediumtext NOT NULL'); + break; + + case 'pgsql': + db_change_column($ret, 'node_group', 'settings', 'settings', 'text', array('not null' => TRUE)); + break; + } + + // move description into the settings array, and add new settings + $result = db_query("SELECT * FROM {node_group}"); + while ($group = db_fetch_array($result)) { + $settings = array(); + $settings['form'] = unserialize($group['settings']); + $settings['form']['description'] = $group['description']; + $settings['display'] = array('collapsible' => 0, 'collapsed' => 0, 'description' => ''); + $ret[] = update_sql("UPDATE {node_group} SET settings = '". db_escape_string(serialize($settings)) ."', description = '' WHERE group_name = '". $group['group_name'] ."'"); + } + + // drop description column + switch ($GLOBALS['db_type']) { + case 'mysql': + case 'mysqli': + $ret[] = update_sql('ALTER TABLE {node_group} DROP description'); + break; + + case 'pgsql': + // Postgres only supports dropping of columns since 7.4 + break; + } + + return $ret; +} + + +/** + * converts group settings collapsible/collapsed => style + */ +function fieldgroup_update_3() { + $ret = array(); + if (!db_table_exists('node_group')) { + return $ret; + } + $result = db_query("SELECT * FROM {node_group}"); + while ($group = db_fetch_array($result)) { + $group['settings'] = unserialize($group['settings']); + + if (!isset($group['settings']['form']['style'])) { + foreach (array('form', 'display') as $context) { + if (isset($group['settings'][$context]['collapsible']) && $group['settings'][$context]['collapsible']) { + if (isset($group['settings'][$context]['collapsed']) && $group['settings'][$context]['collapsed']) { + $group['settings'][$context]['style'] = 'fieldset_collapsed'; + } + else { + $group['settings'][$context]['style'] = 'fieldset_collapsible'; + } + } + else { + $group['settings'][$context]['style'] = 'fieldset'; + } + } + + $ret[] = update_sql("UPDATE {node_group} SET settings = '". db_escape_string(serialize($group['settings'])) ."' WHERE group_name = '". $group['group_name'] ."'"); + } + } + + return $ret; +} + +/* + * Increases module weight, so that other modules can form_alter() cck forms before the fields + * are moved in groups + */ +function fieldgroup_update_4() { + $ret = array(); + $ret[] = update_sql("UPDATE {system} SET weight = 9 WHERE name = 'fieldgroup'"); + return $ret; +} + + +/** + * Start D6 upgrades + */ + +/** + * Move fieldgroup tables to the content_* namespace. + */ +function fieldgroup_update_6000() { + if ($abort = content_check_update('fieldgroup')) { + return $abort; + } + + $ret = array(); + + db_rename_table($ret, 'node_group', 'content_group'); + db_rename_table($ret, 'node_group_fields', 'content_group_fields'); + variable_set('fieldgroup_schema_version', 6000); + return $ret; +} + +/* + * Increases module weight, so that other modules can form_alter() cck forms before the fields + * are moved in groups. + * + * Sites upgraded from D5 should have this already set. + * New D6 installs earlier than RC5 need this, as it was missing in fieldgroup_install. + */ +function fieldgroup_update_6001() { + if ($abort = content_check_update('fieldgroup')) { + return $abort; + } + + $ret = array(); + $ret[] = update_sql("UPDATE {system} SET weight = 9 WHERE name = 'fieldgroup'"); + return $ret; +} + +/** + * Same as 6000 : Move fieldgroup tables to the content_* namespace. + * This was missing in D6 releases earlier than RC5. Ensure we don't run this twice. + */ +function fieldgroup_update_6002() { + if ($abort = content_check_update('fieldgroup')) { + return $abort; + } + + $ret = array(); + if (db_table_exists('node_group')) { + db_rename_table($ret, 'node_group', 'content_group'); + db_rename_table($ret, 'node_group_fields', 'content_group_fields'); + variable_set('fieldgroup_schema_version', 6000); + } + return $ret; +} + +/** + * Remove tinyint (127) limitation on group weights. + */ +function fieldgroup_update_6003() { + if ($abort = content_check_update('fieldgroup')) { + return $abort; + } + + $ret = array(); + db_change_field($ret, 'content_group', 'weight', 'weight', array('type' => 'int', 'not null' => TRUE, 'default' => 0)); + return $ret; +} + +/** + * Add 'type' property for fieldgroups. + */ +function fieldgroup_update_6004() { + if ($abort = content_check_update('fieldgroup')) { + return $abort; + } + + $ret = array(); + db_add_field($ret, 'content_group', 'group_type', array('type' => 'varchar', 'length' => 32, 'not null' => TRUE, 'default' => 'standard')); + $ret[] = update_sql("DELETE FROM {cache_content} WHERE cid='fieldgroup_data'"); + return $ret; +} + +/** + * Add the 'exclude from $content' display setting to all existing groups. + */ +function fieldgroup_update_6005() { + $ret = array(); + $result = db_query("SELECT * FROM {content_group}"); + while ($type = db_fetch_array($result)) { + $new_settings = array(); + $settings = unserialize($type['settings']); + $new_settings = $settings; + $display_settings = !empty($settings['display']) ? $settings['display'] : array(); + if (!empty($display_settings)) { + foreach ($display_settings as $key => $val) { + $new_settings['display'][$key] = $val; + if ($key !== 'label' && is_array($val)) { + $new_settings['display'][$key]['exclude'] = 0; + } + } + } + else { + $new_settings['display'] = array( + 'label' => array('format' => 'above'), + 'full' => array('format' => 'default', 'exclude' => 0), + 'teaser' => array('format' => 'default', 'exclude' => 0), + ); + } + db_query("UPDATE {content_group} SET settings='%s' WHERE group_name='%s' AND type_name='%s'", serialize($new_settings), $type['group_name'], $type['type_name']); + } + return $ret; +} + +/** + * Remove orphaned fields (see http://drupal.org/node/339537). + */ +function fieldgroup_update_6006() { + $ret = array(); + $ret[] = update_sql("DELETE FROM {content_group_fields} WHERE (field_name, type_name) NOT IN (SELECT field_name, type_name FROM content_node_field_instance)"); + return $ret; +} + +/** + * allow for nesting of fieldgroups + */ +function fieldgroup_update_6007() { + if ($abort = content_check_update('fieldgroup')) { + return $abort; + } + $ret = array(); + db_add_field($ret, 'content_group', 'parent_group_name', array('type' => 'varchar', 'length' => 32, 'not null' => FALSE, 'default' => '')); + return $ret; } \ No newline at end of file