diff --git a/feeds.api.php b/feeds.api.php index ba8f4b8..93b1e9e 100644 --- a/feeds.api.php +++ b/feeds.api.php @@ -401,12 +401,13 @@ function my_module_form_callback($mapping, $target, $form, $form_state) { * @see FeedsProcessor::existingEntityId() */ function my_module_mapper_unique(FeedsSource $source, $entity_type, $bundle_name, $target, array $values) { + list($field_name, $column) = explode(':', $target . ':value'); // Example for if the target is a field. $query = new EntityFieldQuery(); $result = $query->entityCondition('entity_type', $entity_type) - ->entityCondition('bundle', $bundle_name) - ->fieldCondition($target, 'value', $values) - ->execute(); + ->entityCondition('bundle', $bundle_name) + ->fieldCondition($field_name, $column, $values) + ->execute(); if (!empty($result[$entity_type])) { return key($result[$entity_type]); diff --git a/tests/feeds_mapper_unique.test b/tests/feeds_mapper_unique.test index 8b81e14..9d0e4a7 100644 --- a/tests/feeds_mapper_unique.test +++ b/tests/feeds_mapper_unique.test @@ -60,7 +60,6 @@ class FeedsMapperUniqueTestCase extends FeedsMapperTestCase { 'source' => 'alpha', 'target' => 'test_unique_target', 'unique' => TRUE, - 'textfield' => 'required', ), )); diff --git a/tests/feeds_tests.module b/tests/feeds_tests.module index 368aeea..c276d04 100644 --- a/tests/feeds_tests.module +++ b/tests/feeds_tests.module @@ -113,10 +113,13 @@ function feeds_tests_feeds_processor_targets_alter(&$targets, $entity_type, $bun 'form_callback' => 'feeds_tests_mapper_form', ); - // Sets unique callbacks for FeedsMapperUniqueTestCase. - $targets['test_unique_target'] = $targets['test_target']; - $targets['test_unique_target']['optional_unique'] = TRUE; - $targets['test_unique_target']['unique_callbacks'] = array('feeds_tests_mapper_unique'); + $targets['test_unique_target'] = array( + 'name' => t('Test unique target'), + 'description' => t('This is a unique test target.'), + 'callback' => 'feeds_tests_mapper_set_target', + 'optional_unique' => TRUE, + 'unique_callbacks' => array('feeds_tests_mapper_unique'), + ); } /** @@ -217,10 +220,12 @@ function feeds_tests_mapper_form($mapping, $target, $form, $form_state) { * @see feeds_tests_feeds_processor_targets_alter() */ function feeds_tests_mapper_unique(FeedsSource $source, $entity_type, $bundle_name, $target, array $values) { + list($field_name, $column) = explode(':', $target . ':value'); + $query = new EntityFieldQuery(); $result = $query->entityCondition('entity_type', $entity_type) ->entityCondition('bundle', $bundle_name) - ->fieldCondition('field_alpha', 'value', $values) + ->fieldCondition($target, $column, $values) ->execute(); if (!empty($result[$entity_type])) {