better_exposed_filters.install in Better Exposed Filters 8.4
Same filename and directory in other branches
Contains better_exposed_filters.install.
File
better_exposed_filters.installView source
<?php
/**
* @file
* Contains better_exposed_filters.install.
*/
/**
* Provide upgrade path from 8.x-3.x to 8.x-4.x.
*/
function better_exposed_filters_update_8001() {
$config_factory = \Drupal::configFactory();
foreach ($config_factory
->listAll('views.view.') as $config_name) {
$config = $config_factory
->getEditable($config_name);
// Go through each display on each view.
$displays = $config
->get('display');
foreach ($displays as $display_name => $display) {
if (!empty($display['display_options']['exposed_form'])) {
$exposed_form = $display['display_options']['exposed_form'];
// Find BEF exposed forms.
if (isset($exposed_form['type']) && $exposed_form['type'] === 'bef') {
$bef_settings = [];
foreach ($exposed_form['options']['bef'] as $type => $option) {
// General settings.
if ($type === 'general') {
$bef_settings['general'] = [
'autosubmit' => $option['autosubmit'] ?? FALSE,
'autosubmit_exclude_textfield' => $option['autosubmit_exclude_textfield'] ?? FALSE,
'autosubmit_hide' => $option['autosubmit_hide'] ?? FALSE,
'input_required' => $exposed_form['options']['input_required'] ?? FALSE,
];
if (isset($exposed_form['options']['text_input_required'])) {
$bef_settings['general'] += [
'text_input_required' => $exposed_form['options']['text_input_required'],
'text_input_required_format' => 'basic_html',
];
}
$bef_settings['general'] += [
'allow_secondary' => $option['allow_secondary'] ?? FALSE,
'secondary_label' => $option['secondary_label'] ?? 'Advanced options',
];
}
elseif ($type === 'sort') {
$bef_settings['sort'] = [
'plugin_id' => $option['bef_format'] ?? 'default',
'advanced' => [
'combine' => $option['advanced']['combine'] ?? FALSE,
'combine_rewrite' => $option['advanced']['combine_rewrite'] ?? '',
'reset' => $option['advanced']['reset'] ?? FALSE,
'reset_label' => $option['advanced']['reset_label'] ?? '',
'collapsible' => $option['advanced']['collapsible'] ?? FALSE,
'collapsible_label' => $option['advanced']['collapsible_label'] ?? '',
'is_secondary' => $option['advanced']['is_secondary'] ?? FALSE,
],
];
}
elseif ($type === 'pager') {
$bef_settings['pager'] = [
'plugin_id' => $option['bef_format'] ?? 'default',
'advanced' => [
'is_secondary' => $option['is_secondary'] ?? FALSE,
],
];
}
else {
// This would indicate a newer version of the config already.
if ($type === 'filter') {
continue;
}
$field_name = $type;
$bef_settings['filter'][$field_name] = [
'plugin_id' => $option['bef_format'] ?? 'default',
];
// Checkboxes/Radio buttons.
if ($option['bef_format'] === 'bef') {
$bef_settings['filter'][$field_name]['select_all_none'] = $option['more_options']['select_all_none'] ?? FALSE;
$bef_settings['filter'][$field_name]['select_all_none_nested'] = $option['more_options']['select_all_none_nested'] ?? FALSE;
}
// Links.
if ($option['bef_format'] === 'bef_links') {
$bef_settings['filter'][$field_name]['select_all_none'] = $option['more_options']['select_all_none'] ?? FALSE;
}
// Sliders.
if ($option['bef_format'] === 'bef_slider') {
// Update plugin name to 'bef_sliders'.
$bef_settings['filter'][$field_name] = [
'plugin_id' => 'bef_sliders',
];
// Animate option is now split into two separate options.
$animate = $option['slider_options']['bef_slider_animate'];
$animate_ms = 0;
if (empty($animate)) {
$animate = 'none';
}
elseif (is_int($animate)) {
$animate = 'custom';
$animate_ms = $animate;
}
$bef_settings['filter'][$field_name] = array_merge($bef_settings['filter'][$field_name], [
'min' => $option['slider_options']['bef_slider_min'] ?? 0,
'max' => $option['slider_options']['bef_slider_max'] ?? 99999,
'step' => $option['slider_options']['bef_slider_step'] ?? 1,
'animate' => $animate,
'animate_ms' => $animate_ms,
'orientation' => $option['slider_options']['bef_slider_orientation'] ?? 'horizontal',
]);
}
// Shared advanced settings.
$bef_settings['filter'][$field_name]['advanced'] = [
'collapsible' => $option['more_options']['bef_collapsible'] ?? FALSE,
'is_secondary' => $option['more_options']['is_secondary'] ?? FALSE,
'placeholder_text' => $option['more_options']['placeholder_text'] ?? '',
'rewrite' => [
'filter_rewrite_values' => $option['more_options']['rewrite']['filter_rewrite_values'] ?? '',
],
// New option.
'sort_options' => FALSE,
];
}
}
// Update BEF settings.
$config
->set("display.{$display_name}.display_options.exposed_form.options.bef", $bef_settings);
}
}
}
$config
->save(TRUE);
}
}
/**
* Renames bef_slider plugin to bef_sliders to be compatible with 8.x-4.x.
*/
function better_exposed_filters_update_8002() {
$config_factory = \Drupal::configFactory();
foreach ($config_factory
->listAll('views.view.') as $config_name) {
$config = $config_factory
->getEditable($config_name);
// Go through each display on each view.
$displays = $config
->get('display');
$needs_update = FALSE;
foreach ($displays as $display_name => $display) {
if (!empty($display['display_options']['exposed_form'])) {
$exposed_form = $display['display_options']['exposed_form'];
// Find BEF exposed forms.
if (isset($exposed_form['type']) && $exposed_form['type'] === 'bef') {
$bef_settings = $exposed_form['options']['bef'];
foreach ($exposed_form['options']['bef'] as $type => $option) {
if ($type === 'filter') {
$field_name = $type;
// Sliders.
if (($option['bef_format'] ?? '') === 'bef_slider') {
$needs_update = TRUE;
// Update plugin name to 'bef_sliders'.
$bef_settings['filter'][$field_name] = [
'plugin_id' => 'bef_sliders',
];
// Animate option is now split into two separate options.
$animate = $option['slider_options']['bef_slider_animate'];
$animate_ms = 0;
if (empty($animate)) {
$animate = 'none';
}
elseif (is_int($animate)) {
$animate = 'custom';
$animate_ms = $animate;
}
$bef_settings['filter'][$field_name] = array_merge($bef_settings['filter'][$field_name], [
'min' => $option['slider_options']['bef_slider_min'] ?? 0,
'max' => $option['slider_options']['bef_slider_max'] ?? 99999,
'step' => $option['slider_options']['bef_slider_step'] ?? 1,
'animate' => $animate,
'animate_ms' => $animate_ms,
'orientation' => $option['slider_options']['bef_slider_orientation'] ?? 'horizontal',
]);
}
}
}
// Update BEF settings.
if ($needs_update) {
$config
->set("display.{$display_name}.display_options.exposed_form.options.bef", $bef_settings);
}
}
}
}
if ($needs_update) {
$config
->save(TRUE);
}
}
}
Functions
Name | Description |
---|---|
better_exposed_filters_update_8001 | Provide upgrade path from 8.x-3.x to 8.x-4.x. |
better_exposed_filters_update_8002 | Renames bef_slider plugin to bef_sliders to be compatible with 8.x-4.x. |