X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=api%2Fv3%2FDedupe.php;h=00992069184055a2c76082a58ee96c3aa41189c9;hb=3e46951c9b58ae37787351fb840bd396457b2d80;hp=bcd3ada435135a034417023c7896f8e33417acca;hpb=1e2541f832346cfb4d0835ccb7fa76e3276f3386;p=civicrm-core.git diff --git a/api/v3/Dedupe.php b/api/v3/Dedupe.php index bcd3ada435..0099206918 100644 --- a/api/v3/Dedupe.php +++ b/api/v3/Dedupe.php @@ -51,7 +51,7 @@ function civicrm_api3_dedupe_get($params) { } foreach ($result as $index => $values) { if (isset($values['data']) && !empty($values['data'])) { - $result[$index]['data'] = unserialize($values['data']); + $result[$index]['data'] = CRM_Core_DAO::unSerializeField($values['data'], CRM_Core_DAO::SERIALIZE_PHP); } } return civicrm_api3_create_success($result, $params, 'PrevNextCache'); @@ -137,3 +137,46 @@ function _civicrm_api3_dedupe_getstatistics_spec(&$params) { ]; } + +/** + * Get the duplicate contacts for the supplied parameters. + * + * @param array $params + * + * @return array + * @throws \CiviCRM_API3_Exception + * @throws \API_Exception + * @throws \CRM_Core_Exception + */ +function civicrm_api3_dedupe_getduplicates($params) { + $options = _civicrm_api3_get_options_from_params($params); + $dupePairs = CRM_Dedupe_Merger::getDuplicatePairs($params['rule_group_id'], NULL, TRUE, $options['limit'], FALSE, TRUE, $params['criteria'], CRM_Utils_Array::value('check_permissions', $params), CRM_Utils_Array::value('search_limit', $params, 0)); + return civicrm_api3_create_success($dupePairs); +} + +/** + * Adjust Metadata for getduplicates action.. + * + * The metadata is used for setting defaults, documentation & validation. + * + * @param array $params + * Array of parameters determined by getfields. + */ +function _civicrm_api3_dedupe_getduplicates_spec(&$params) { + $params['rule_group_id'] = [ + 'title' => ts('Rule Group ID'), + 'api.required' => TRUE, + 'type' => CRM_Utils_Type::T_INT, + ]; + $params['criteria'] = [ + 'title' => ts('Criteria'), + 'description' => ts("Dedupe search criteria, as parsable by v3 Contact.get api, keyed by Contact. Eg.['Contact' => ['id' => ['BETWEEN' => [1, 2000]], 'group' => 34]"), + 'api.default' => [], + ]; + $spec['search_limit'] = [ + 'title' => ts('Number of contacts to look for matches for.'), + 'type' => CRM_Utils_Type::T_INT, + 'api.default' => (int) Civi::settings()->get('dedupe_default_limit'), + ]; + +}