diff --git a/plugins/keyword_filter.inc b/plugins/keyword_filter.inc index 69796ad..491b3cf 100644 --- a/plugins/keyword_filter.inc +++ b/plugins/keyword_filter.inc @@ -10,7 +10,7 @@ $plugin = array( 'callback' => 'feeds_tamper_keyword_filter_callback', 'validate' => 'feeds_tamper_keyword_filter_validate', 'name' => 'Keyword filter', - 'multi' => 'loop', + 'multi' => 'direct', 'category' => 'Filter', ); @@ -86,26 +86,32 @@ function feeds_tamper_keyword_filter_validate(&$settings) { } function feeds_tamper_keyword_filter_callback($result, $item_key, $element_key, &$field, array $settings) { + // If field is not array, type cast it. + $field = is_array($field) ? $field : (array)$field; if ($settings['regex']) { foreach ($settings['word_list'] as $word) { - if (preg_match($word, $field) > 0) { - if (!$settings['invert']) { - return; + foreach ($field as $value) { + if (preg_match($word, $value) > 0) { + if (!$settings['invert']) { + return; + } } - unset($result->items[$item_key]); - return; } + unset($result->items[$item_key]); + return; } } else { foreach ($settings['word_list'] as $word) { - if ($settings['func']($field, $word) !== FALSE) { - if (!$settings['invert']) { - return; + foreach ($field as $value) { + if ($settings['func']($value, $word) !== FALSE) { + if (!$settings['invert']) { + return; + } } - unset($result->items[$item_key]); - return; } + unset($result->items[$item_key]); + return; } } if (!$settings['invert']) {