You are here

function feeds_tamper_keyword_filter_validate in Feeds Tamper 6

Same name and namespace in other branches
  1. 7 plugins/keyword_filter.inc \feeds_tamper_keyword_filter_validate()
1 string reference to 'feeds_tamper_keyword_filter_validate'
keyword_filter.inc in plugins/keyword_filter.inc

File

plugins/keyword_filter.inc, line 52

Code

function feeds_tamper_keyword_filter_validate(&$settings) {
  global $multibyte;
  $is_multibyte = $multibyte == UNICODE_MULTIBYTE ? TRUE : FALSE;
  $settings['words'] = str_replace("\r", '', $settings['words']);
  $settings['word_list'] = explode("\n", $settings['words']);
  $settings['word_list'] = array_map('trim', $settings['word_list']);
  $settings['regex'] = FALSE;
  if (!empty($settings['exact']) || $settings['word_boundaries']) {
    foreach ($settings['word_list'] as &$word) {
      if (!empty($settings['exact'])) {
        $word = '/^' . preg_quote($word, '/') . '$/u';
      }
      elseif ($settings['word_boundaries']) {

        // Word boundaries can only match a word with letters at the end.
        if (!preg_match('/^\\w(.*\\w)?$/u', $word)) {
          form_set_error('settings][words', t('Search text must begin and end with a letter, number, or underscore to use the %option option.', array(
            '%option' => t('Respect word boundaries'),
          )));
        }
        $word = '/\\b' . preg_quote($word, '/') . '\\b/u';
      }
      if (!$settings['case_sensitive']) {
        $word .= 'i';
      }
    }
    $settings['regex'] = TRUE;
  }
  elseif (!$settings['word_boundaries'] && $settings['case_sensitive']) {
    $settings['func'] = $is_multibyte ? 'mb_strpos' : 'strpos';
  }
  elseif (!$settings['word_boundaries'] && !$settings['case_sensitive']) {
    $settings['func'] = $is_multibyte ? 'mb_stripos' : 'stripos';
  }
}