diff --git a/plugins/keyword_filter.inc b/plugins/keyword_filter.inc index 3604ce0..2841874 100644 --- a/plugins/keyword_filter.inc +++ b/plugins/keyword_filter.inc @@ -40,6 +40,12 @@ function feeds_tamper_keyword_filter_form($importer, $element_key, $settings) { '#default_value' => isset($settings['invert']) ? $settings['invert'] : FALSE, '#description' => t('Inverting the filter will %remove items with the specified text.', array('%remove' => 'remove')), ); + $form['field_only'] = array( + '#type' => 'checkbox', + '#title' => t('Skip field only'), + '#default_value' => isset($settings['field_only']) ? $settings['field_only'] : FALSE, + '#description' => t('If checked, then only the field will be skipped, but not the whole import item.'), + ); return $form; } @@ -81,7 +87,7 @@ function feeds_tamper_keyword_filter_callback($result, $item_key, $element_key, if (!$settings['invert']) { return; } - unset($result->items[$item_key]); + _feeds_tamper_keyword_filter_unset($result, $item_key, $element_key, &$field, $settings); return; } } @@ -92,12 +98,26 @@ function feeds_tamper_keyword_filter_callback($result, $item_key, $element_key, if (!$settings['invert']) { return; } - unset($result->items[$item_key]); + _feeds_tamper_keyword_filter_unset($result, $item_key, $element_key, &$field, $settings); return; } } } if (!$settings['invert']) { - unset($result->items[$item_key]); + _feeds_tamper_keyword_filter_unset($result, $item_key, $element_key, &$field, $settings); } } + +/** + * Unset item helper. + */ +function _feeds_tamper_keyword_filter_unset(&$result, $item_key, $element_key, &$field, $settings) { + // Remove the whole item ... + if (empty($settings['field_only'])) { + unset($result->items[$item_key]); + } + // ... or only the field value. + else { + unset($result->items[$item_key][$element_key]); + } +} \ No newline at end of file