$v4Params['select'][] = 'id';
}
// Convert join syntax
- foreach ($v4Params['select'] as &$select) {
+ foreach ($v4Params['select'] as $idx => $select) {
if (strstr($select, '_id.')) {
- $joins[$select] = explode('.', str_replace('_id.', '.', $select));
- $select = str_replace('_id.', '.', $select);
+ $joins[$select] = $v4Params['select'][$idx] = str_replace('_id.', '.', $select);
}
}
}
$result[$index][$key] = $this->runApi4LegacyChain($key, $params, $v4Entity, $row, $sequential);
}
// Convert join format
- foreach ($joins as $api3Key => $api4Path) {
- $result[$index][$api3Key] = \CRM_Utils_Array::pathGet($result[$index], $api4Path);
+ foreach ($joins as $api3Key => $api4Key) {
+ $result[$index][$api3Key] = $result[$index][$api4Key] ?? NULL;
}
// Resolve custom field names
foreach ($custom as $group => $fields) {
'contact_id' => $contactId,
'return' => 'contact_id.api_key',
]);
- $field = $this->_apiversion == 4 ? 'contact.api_key' : 'contact_id.api_key';
- $this->assertEquals('abcd1234', $joinResult[$field]);
+ $this->assertEquals('abcd1234', $joinResult['contact_id.api_key']);
// Restricted return -- because we don't have permission
$config->userPermissionClass->permissions = ['access CiviCRM', 'view all contacts', 'edit all contacts'];