You are here

function geofield_ymap_filter_process in Geofield Yandex Maps 7

Filter process callback.

1 string reference to 'geofield_ymap_filter_process'
geofield_ymap_filter_info in ./geofield_ymap.filter.inc
Implements hook_filter_info().

File

./geofield_ymap.filter.inc, line 77

Code

function geofield_ymap_filter_process($text, $filter, $format, $langcode, $cache, $cache_id) {
  if (preg_match_all('#\\[map(.*?)\\](.*?)\\[/map\\]#s', $text, $matches_all, PREG_SET_ORDER)) {
    $default_element = array();
    foreach ($filter->settings as $filter_setting_name => $filter_setting_value) {
      $default_element['#' . $filter_setting_name] = $filter_setting_value;
    }
    foreach ($matches_all as $matches) {
      $map_settings = trim($matches[1]);
      $map_objects = trim($matches[2]);
      $element = $default_element;
      if ($map_settings) {
        foreach (explode(' ', $map_settings) as $map_setting) {
          list($map_setting_name, $map_setting_value) = explode('=', $map_setting);
          $map_setting_name = str_replace('-', '_', $map_setting_name);
          if (isset($filter->settings['map_' . $map_setting_name])) {
            $element['#map_' . $map_setting_name] = trim($map_setting_value, '"');
          }
        }
      }
      if ($map_objects) {
        $element['#map_objects'] = str_replace("\n", ' ', $map_objects);
      }
      $text = str_replace($matches[0], theme('geofield_ymap', array(
        'element' => $element,
      )), $text);
    }
  }
  return $text;
}