diff --git a/unique_field.module b/unique_field.module index 1c72828..356b5fc 100644 --- a/unique_field.module +++ b/unique_field.module @@ -10,7 +10,6 @@ * * By Joe Turgeon [http://arithmetric.com] */ - // query scope definitions define('UNIQUE_FIELD_SCOPE_NODE', 'node'); define('UNIQUE_FIELD_SCOPE_TYPE', 'type'); @@ -268,6 +267,7 @@ function unique_field_match_value($field, $values, $scope, $ntype = NULL, $nlang } else { // Query condition for other fields + $field_values = array(); $field_info = field_info_field($field); // Check all items/values foreach ($values as $value) { @@ -281,10 +281,25 @@ function unique_field_match_value($field, $values, $scope, $ntype = NULL, $nlang if (!strlen($val) || !is_scalar($val)) { continue; } - $efq->fieldCondition($field, $key, $val); + $field_values[] = array('key' => $key, 'val' => $val); } } } + if ($field_info->cardinality) { + $field_values = reset($field_values); + $val = $field_values['val']; + $key = $field_values['key']; + $efq->fieldCondition($field, $key, $val); + } + else { + $val = array(); + $key = ''; + foreach ($field_values as $k => $v) { + $val[] = $v['val']; + $key = $v['key']; + } + $efq->fieldCondition($field, $key, $val, 'IN'); + } // Add query conditions for the scope setting if ($scope === UNIQUE_FIELD_SCOPE_TYPE && !empty($ntype)) {