...Человеческий поиск в разработке...
- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/classes/general/restservice.php
- Класс: \CCrmActivityRestProxy
- Вызов: CCrmActivityRestProxy::internalizeCommunications
protected function internalizeCommunications($ownerTypeID, $ownerID, $typeID, &$communications, &$bindings) { $communicationFieldInfos = self::getCommunicationFieldsInfo(); foreach($communications as $k => &$v) { self::internalizeFields($v, $communicationFieldInfos); $commEntityTypeID = $v['ENTITY_TYPE_ID'] ? intval($v['ENTITY_TYPE_ID']) : 0; $commEntityID = $v['ENTITY_ID'] ? intval($v['ENTITY_ID']) : 0; $commValue = $v['VALUE'] ?: ''; $commType = $v['TYPE'] ?: ''; if($commValue !== '' && ($commEntityTypeID <= 0 || $commEntityID <= 0)) { // Push owner info into communication (if ommited) $commEntityTypeID = $v['ENTITY_TYPE_ID'] = $ownerTypeID; $commEntityID = $v['ENTITY_ID'] = $ownerID; } if($commEntityTypeID <= 0 || $commEntityID <= 0) { unset($communications[$k]); continue; } // value can be empty for meetings and tasks if ($commValue === '' && !in_array($typeID, [CCrmActivityType::Meeting, CCrmActivityType::Task])) { unset($communications[$k]); continue; } if($commType === '') { if($typeID === CCrmActivityType::Call) { $v['TYPE'] = 'PHONE'; } elseif($typeID === CCrmActivityType::Email) { $v['TYPE'] = 'EMAIL'; } } elseif(($typeID === CCrmActivityType::Call && $commType !== 'PHONE') || ($typeID === CCrmActivityType::Email && $commType !== 'EMAIL')) { // Invalid communication type is specified unset($communications[$k]); continue; } $bindings["{$commEntityTypeID}_{$commEntityID}"] = array( 'OWNER_TYPE_ID' => $commEntityTypeID, 'OWNER_ID' => $commEntityID ); } unset($v); }