You are here

function better_exposed_filters_exposed_form_plugin::_bef_set_defaults in Better Exposed Filters 7.3

Fills in missing settings with default values.

Similar to array_merge_recursive, but later numeric keys overwrites earlier values. Use this to set defaults for missing values in a multi-dimensional array. Eg:

$existing = $this->_bef_set_defaults($defaults, $existing);

Return value

array The resulting settings array

1 call to better_exposed_filters_exposed_form_plugin::_bef_set_defaults()
better_exposed_filters_exposed_form_plugin::_bef_get_settings in ./better_exposed_filters_exposed_form_plugin.inc
Returns an array of default or current existing values for BEF settings.

File

./better_exposed_filters_exposed_form_plugin.inc, line 1866
Provides an Better Exposed Filters exposed form plugin for View 3.x.

Class

better_exposed_filters_exposed_form_plugin
Better exposed filter form plugin class.

Code

function _bef_set_defaults() {
  $count = func_num_args();
  if (!$count) {
    return;
  }
  elseif (1 == $count) {
    return func_get_arg(0);
  }

  // First array is the default values.
  $params = func_get_args();
  $return = array_shift($params);

  // Merge the rest of the arrays onto the default array.
  foreach ($params as $array) {
    foreach ($array as $key => $value) {

      // Numeric keyed values are added (unless already there).
      if (is_numeric($key) && !in_array($value, $return)) {
        if (is_array($value)) {
          $return[] = $this
            ->_bef_set_defaults($return[$key], $value);
        }
        else {
          $return[] = $value;
        }
      }
      else {
        if (isset($return[$key]) && is_array($value) && is_array($return[$key])) {
          $return[$key] = $this
            ->_bef_set_defaults($return[$key], $value);
        }
        else {
          $return[$key] = $value;
        }
      }
    }
  }
  return $return;
}