- <?php
- * @file
- * Field group module install file.
- */
-
- * Implements hook_requirements().
- */
- function field_group_requirements($phase) {
- $requirements = array();
-
- $t = get_t();
-
- if ($phase == 'runtime') {
- list($extras_module, $extras_enabled) = _field_group_extra_status();
-
- if ($extras_enabled && !$extras_module) {
- if ($extras_module === FALSE) {
-
- $message = $t('The <em>Accordion</em>, <em>Div</em>, <em>Horizontal tabs</em>, or <em>Multipage</em> field group types are used on this site. The contrib module %module should be enabled to ensure the existing field groups continue to work properly. Alternatively, update those field groups to use other group types.', array(
- '!module' => l('Field Group Extra', 'https://backdropcms.org/project/field_group_extra'),
- ));
- } elseif (!$extras_module) {
-
- $message = $t('The <em>Accordion</em>, <em>Div</em>, <em>Horizontal tabs</em>, or <em>Multipage</em> field group types are used on this site. Enable the contrib module %module to ensure the existing field groups continue to work properly. Alternatively, update those field groups to use other group types.', array(
- '%module' => 'Field Group Extra',
- ));
- }
- $requirements['field_group_extra'] = array(
- 'title' => $t('Field Group Extra'),
- 'value' => $message,
- 'severity' => REQUIREMENT_ERROR,
- );
- }
- }
-
- return $requirements;
- }
-
- * Status of the Field Group Extra module.
- *
- * @return array
- */
- function _field_group_extra_status() {
- $status = &backdrop_static(__FUNCTION__, NULL);
-
- if (!empty($status)) {
- return $status;
- }
-
- $extras_module = db_select('system', 's')
- ->fields('s', array('status'))
- ->condition('name', 'field_group_extra')
- ->execute()
- ->fetchField();
-
- $extras_enabled = FALSE;
- $field_groups = config_get_names_with_prefix('field_group.field_group.');
- $extra_types = array(
-
- 'accordion',
- 'accordion-item',
- 'div',
- 'htab',
- 'htabs',
- 'multipage',
- 'multipage-group',
-
- );
- foreach ($field_groups as $field_group) {
- $config = config($field_group);
- if (in_array($config->get('format_type'), $extra_types)) {
- if ($config->get('format_type') == 'div' && $config->get('format_settings.formatter') == 'open') {
- continue;
- }
- $extras_enabled = TRUE;
- break;
- }
- }
-
- $status = array($extras_module, $extras_enabled);
-
- return array($extras_module, $extras_enabled);
- }
-
- * Implements hook_update_last_removed().
- */
- function field_group_update_last_removed() {
- return 7008;
- }
-
- * Migrate field groups from table to config.
- */
- function field_group_update_1000() {
- if (db_table_exists('field_group')) {
-
-
-
- $result = db_query('SELECT * FROM {field_group}');
- foreach ($result as $row) {
- $field_group = (array) $row;
- $field_group += unserialize($field_group['data']);
- unset($field_group['id']);
- unset($field_group['identifier']);
- unset($field_group['data']);
- unset($field_group['export_type']);
- unset($field_group['disabled']);
-
- $config = config('field_group.field_group.' . $field_group['entity_type'] . '.' . $field_group['bundle'] . '.' . $field_group['mode'] . '.' . $field_group['group_name']);
- $config->setData($field_group);
- $config->save();
- }
- db_drop_table('field_group');
- }
- }
-
- * Merge HTML5 format type into the HTML Element format type.
- */
- function field_group_update_1001() {
- $config_names = config_get_names_with_prefix('field_group.field_group.');
- foreach ($config_names as $config_name) {
- $field_group_config = config($config_name);
- if ($field_group_config->get('format_type') == 'html5') {
- $field_group_config->set('format_type', 'html-element');
- $wrapper = $field_group_config->get('format_settings.instance_settings.wrapper');
- if (!$wrapper) {
- $wrapper = 'section';
- }
- $field_group_config->set('format_settings.instance_settings.wrapper', $wrapper);
- $field_group_config->set('format_settings.instance_settings.wrapper_other', '');
- $field_group_config->set('format_settings.instance_settings.show_label', 0);
- $field_group_config->set('format_settings.instance_settings.label_element', 'div');
- $field_group_config->set('format_settings.instance_settings.required_fields', 1);
- }
- if ($field_group_config->get('format_type') == 'html-element') {
- $field_group_config->set('format_settings.instance_settings.wrapper', 'other');
- $element = $field_group_config->get('format_settings.instance_settings.element');
- $field_group_config->set('format_settings.instance_settings.wrapper_other', $element);
- }
- $field_group_config->save();
- }
- }
-
- * Warn that field_group_extra module needs to be downloaded and installed
- * if Accordion, Div, Horizontal Tabs, and Multipage types are enabled.
- */
- function field_group_update_1002() {
- list($extras_module, $extras_enabled) = _field_group_extra_status();
-
- if ($extras_enabled) {
- if ($extras_module === FALSE) {
-
- backdrop_set_message(t('The <em>Accordion</em>, <em>Div</em>, <em>Horizontal tabs</em>, and <em>Multipage</em> field group types have been moved out of the Field Group module. Your website uses one or more of these group types. Download and enable the contrib module !module to ensure the existing field groups continue to work properly. Alternatively, update those field groups to use other group types.', array(
- '!module' => l('Field Group Extra', 'https://backdropcms.org/project/field_group_extra'),
- )));
- } elseif (!$extras_module) {
-
- db_update('system')
- ->fields(array('status' => 1))
- ->condition('name', 'field_group_extra')
- ->execute();
- backdrop_set_message(t('The contrib module %module has been enabled to ensure the existing field groups continue to work properly. Alternatively, update those field groups to use other group types.', array(
- '%module' => 'Field Group Extra',
- )));
- }
- }
- }
-
- * HTML element - update label_element and label_element_other.
- */
- function field_group_update_1003() {
- $config_names = config_get_names_with_prefix('field_group.field_group.');
- foreach ($config_names as $config_name) {
- $field_group_config = config($config_name);
- if ($field_group_config->get('format_type') == 'html-element') {
- $label_element = $field_group_config->get('format_settings.instance_settings.label_element');
- if (!$label_element) {
- $field_group_config->set('format_settings.instance_settings.label_element', 'h2');
- }
- if (!in_array($label_element, array('h2', 'h3', 'div', 'p', 'span'))) {
- $field_group_config->set('format_settings.instance_settings.label_element', 'other');
- $field_group_config->set('format_settings.instance_settings.label_element_other', $label_element);
- }
- else {
- $field_group_config->set('format_settings.instance_settings.label_element_other', '');
- }
- }
- $field_group_config->save();
- }
- }
-
- * Merge Div format type into the HTML Element format type, if the display is
- * not set to collapsible or collapsed. It can be safely converted.
- */
- function field_group_update_1004() {
- $config_names = config_get_names_with_prefix('field_group.field_group.');
- foreach ($config_names as $config_name) {
- $field_group_config = config($config_name);
- if ($field_group_config->get('format_type') == 'div' && $field_group_config->get('format_settings.formatter') == 'open') {
- $field_group_config->set('format_type', 'html-element');
- $field_group_config->set('format_settings.instance_settings.wrapper', 'div');
- $field_group_config->set('format_settings.instance_settings.wrapper_other', '');
- $field_group_config->set('format_settings.instance_settings.label_element_other', '');
-
-
- $field_group_config->clear('format_settings.formatter');
- $field_group_config->clear('format_settings.instance_settings.effect');
- $field_group_config->clear('format_settings.instance_settings.speed');
- }
- $field_group_config->save();
- }
- }