* @return string
* @throws Exception
*/
- public static function composeQuery($query, $params, $abort = TRUE) {
+ public static function composeQuery($query, $params = [], $abort = TRUE) {
$tr = [];
foreach ($params as $key => $item) {
if (is_numeric($key)) {
}
}
self::appendCustomTablesExtendingContacts($contactReferences);
+ self::appendCustomContactReferenceFields($contactReferences);
// FixME for time being adding below line statically as no Foreign key constraint defined for table 'civicrm_entity_tag'
$contactReferences['civicrm_entity_tag'][] = 'entity_id';
$customValueTables = CRM_Core_BAO_CustomGroup::getAllCustomGroupsByBaseEntity('Contact');
$customValueTables->find();
while ($customValueTables->fetch()) {
- $cidRefs[$customValueTables->table_name] = ['entity_id'];
+ $cidRefs[$customValueTables->table_name][] = 'entity_id';
+ }
+ }
+
+ /**
+ * Add custom ContactReference fields to the list of contact references
+ *
+ * This includes active and inactive fields/groups
+ *
+ * @param array $cidRefs
+ *
+ * @throws \CiviCRM_API3_Exception
+ */
+ public static function appendCustomContactReferenceFields(&$cidRefs) {
+ $fields = civicrm_api3('CustomField', 'get', [
+ 'return' => ['column_name', 'custom_group_id.table_name'],
+ 'data_type' => 'ContactReference',
+ ])['values'];
+ foreach ($fields as $field) {
+ $cidRefs[$field['custom_group_id.table_name']][] = $field['column_name'];
}
}