protected function tryInternalizeMultiFields(array &$fields, $fieldName, array &$data) { if (!isset($fields[$fieldName]) && is_array($fields[$fieldName])) { return false; } $qty = 0; $result = array(); $values = $fields[$fieldName]; foreach ($values as &$v) { $ID = isset($v['ID']) ? $v['ID'] : 0; $value = isset($v['VALUE']) ? trim($v['VALUE']) : ''; //Allow empty values for persistent fields for support deletion operation. if ($ID <= 0 && $value === '') { continue; } if ($ID > 0 && isset($v['DELETE']) && strtoupper($v['DELETE']) === 'Y') { //Empty fields will be deleted. $value = ''; } $valueType = isset($v['VALUE_TYPE']) ? trim($v['VALUE_TYPE']) : ''; if ($valueType === '') { $valueType = CCrmFieldMulti::GetDefaultValueType($fieldName); } $key = $ID > 0 ? $ID : 'n' . ++$qty; $result[$key] = array('VALUE_TYPE' => $valueType, 'VALUE' => $value); } unset($v, $fields[$fieldName]); if (empty($result)) { return false; } $data[$fieldName] = $result; return true; }