'tel_prefer_normalized' => array(Zend_Filter_Input::ALLOW_EMPTY => true),
'tz' => array(Zend_Filter_Input::ALLOW_EMPTY => true),
'geo' => array(Zend_Filter_Input::ALLOW_EMPTY => true),
- 'preferred_address' => array(Zend_Filter_Input::ALLOW_EMPTY => true),
+ 'preferred_address' => array(Zend_Filter_Input::ALLOW_EMPTY => true, Zend_Filter_Input::DEFAULT_VALUE => 0),
// modlog fields
'created_by' => array(Zend_Filter_Input::ALLOW_EMPTY => true),
'creation_time' => array(Zend_Filter_Input::ALLOW_EMPTY => true),
foreach ($geoFields as $geoField) {
$this->_filters[$geoField] = new Zend_Filter_Empty(NULL);
}
+ $this->_filters['preferred_address'] = new Zend_Filter_Empty(0);
parent::__construct($_data, $_bypassFilters, $_convertDates);
}
if (Tinebase_Core::isLogLevel(Zend_Log::TRACE)) Tinebase_Core::getLogger()->trace(__METHOD__ . '::' . __LINE__
. ' Duplicate check fields: ' . print_r($this->_duplicateCheckFields, TRUE));
-
+
$filters = array();
foreach ($this->_duplicateCheckFields as $group) {
$addFilter = array();
$group = array($group);
}
foreach ($group as $field) {
- if (! empty($_record->{$field})) {
- if ($field === 'relations') {
- $relationFilter = $this->_getRelationDuplicateFilter($_record);
- if ($relationFilter) {
- $addFilter[] = $relationFilter;
- }
+ $customFieldConfig = Tinebase_CustomField::getInstance()->getCustomFieldByNameAndApplication(
+ $this->_applicationName,
+ $field,
+ $this->_modelName
+ );
+
+ if ($customFieldConfig && isset($_record->customfields[$field])) {
+ $value = $_record->customfields[$field];
+ if (! empty($value)) {
+ $addFilter[] = array(
+ 'field' => 'customfield',
+ 'operator' => 'equals',
+ 'value' => array(
+ 'value' => $value,
+ 'cfId' => $customFieldConfig->getId()
+ )
+ );
} else {
- $addFilter[] = array('field' => $field, 'operator' => 'equals', 'value' => $_record->{$field});
+ // empty: go to next group
+ continue 2;
}
-
- } else if (isset($_record->customfields[$field])) {
- $customFieldConfig = Tinebase_CustomField::getInstance()->getCustomFieldByNameAndApplication($this->_applicationName, $field, $this->_modelName);
- if ($customFieldConfig) {
- $addFilter[] = array('field' => 'customfield', 'operator' => 'equals', 'value' => array(
- 'value' => $_record->customfields[$field],
- 'cfId' => $customFieldConfig->getId()
- ));
+
+ } else {
+ if (! empty($_record->{$field})) {
+ if ($field === 'relations') {
+ $relationFilter = $this->_getRelationDuplicateFilter($_record);
+ if ($relationFilter) {
+ $addFilter[] = $relationFilter;
+ }
+ } else {
+ $addFilter[] = array(
+ 'field' => $field,
+ 'operator' => 'equals',
+ 'value' => $_record->{$field}
+ );
+ }
+ } else {
+ // empty: go to next group
+ continue 2;
}
}
}