Running drupal 7.43 and better_exposed_filters 7.x-3.2-48-dev

I have a view in which I wished to rewrite the exposed filter values, leaving just 2 exposed, with different names. This is a date filter, so the filter list is 12 items long.

First off, there was no way of knowing what the original indices were without debugging the code. I tried:
0|new name
1|next name
but the code requires the actual values of the indices which are <, <= etc.
Without these indices, no joy.

Second, there seems to be an error in code where incorrect options are being called. Corrected code below. However, I have no idea of the affect of this change on anything else. I just needed to make this functionality work for me.

Beginning on line 1104 of better_exposed_filters_exposed_form_plugin.inc, my changes can be found after lines beginning with:

// LS

(I don't know how to get text to be php colored)

foreach ($settings as $label => $options) {
// Sanity check: Ensure this filter is an exposed filter.
if (empty($filters[$label]) || !$filters[$label]->options['exposed']) {
continue;
}

// Form element is designated by the element ID which is user-
// configurable.
$filter_key = 'filter-' . (!empty($filters[$label]->options['is_grouped']) ? $filters[$label]->options['group_info']['identifier'] : $label);
// LS 8 May 2016 correct bug that prevents renaming of values
$filter_id = $form['#info'][$filter_key]['operator'];
// $filter_id = $form['#info'][$filter_key]['value'];

// Token replacement on BEF Description fields.
if (!empty($options['more_options']['bef_filter_description'])) {
// Collect replacement data.
$data = array();
$available = $options['more_options']['tokens']['available'];
if (in_array('vocabulary', $available)) {
$vocabs = taxonomy_get_vocabularies();
$data['vocabulary'] = $vocabs[$filters[$label]->options['vid']];
}
/* Others? */

// Replace tokens.
$options['more_options']['bef_filter_description'] = token_replace(
$options['more_options']['bef_filter_description'], $data
);
$form[$filter_id]['#bef_description'] = $options['more_options']['bef_filter_description'];
}

// Handle filter value rewrites.
if (!empty($options['more_options']['rewrite']['filter_rewrite_values'])) {
$lines = explode("\n", trim($options['more_options']['rewrite']['filter_rewrite_values']));
$rewrite = array();
foreach ($lines as $line) {
list($search, $replace) = explode('|', $line);
if (isset($search)) {
$rewrite[$search] = $replace;
}
}

foreach ($form[$filter_id]['#options'] as $index => $option) {
$is_object = FALSE;
if (is_object($option)) {
// Taxonomy filters use objects instead of text.
$is_object = TRUE;
$option = reset($option->option);

// Hierarchical filters prepend hyphens to indicate depth. We need
// to remove them for comparison, but keep them after replacement to
// ensure nested options display correctly.
$option = ltrim($option, '-');
}

// LS 8 May 2016 should be $index not $option
if (isset($rewrite[$index])) {
// if (isset($rewrite[$option])) {
// LS 8 May 2016 should be $index not $option
if ('' == $rewrite[$index]) {
// if ('' == $rewrite[$index]) {
unset($form[$filter_id]['#options'][$index]);
}
else {
if ($is_object) {
// dsm($form[$filter_id]['#options'][$index]->option, "$filter_id at $index");
// Taxonomy term filters are stored as objects. Use str_replace
// to ensure that keep hyphens for hierarchical filters.
list($tid, $original) = each($form[$filter_id]['#options'][$index]->option);
$form[$filter_id]['#options'][$index]->option[$tid] = str_replace($option, $rewrite[$option], $original);
}
else {
// LS 8 May 2016 should be $index not $option
$form[$filter_id]['#options'][$index] = $rewrite[$index];
// $form[$filter_id]['#options'][$index] = $rewrite[$option];
}
}
}
}
}

Thx.

Comments

lsaw created an issue. See original summary.

Neslee Canil Pinto’s picture

Status: Active » Closed (won't fix)

Hi, there will be no more future development for 7.x branch. If you see this issue in 8.x, feel free to file an issue. Closing this as Closed(wont fix).