function feeds_tamper_keyword_filter_validate in Feeds Tamper 6
Same name and namespace in other branches
- 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';
}
}