Commit | Line | Data |
---|---|---|
6a488035 TO |
1 | <?php |
2 | ||
3 | // TODO: How to handle NULL values/records? | |
ffd93213 EM |
4 | /** |
5 | * Class CRM_Dedupe_BAO_QueryBuilder_IndividualSupervised | |
6 | */ | |
6a488035 TO |
7 | class CRM_Dedupe_BAO_QueryBuilder_IndividualSupervised extends CRM_Dedupe_BAO_QueryBuilder { |
8 | ||
e0ef6999 EM |
9 | /** |
10 | * @param $rg | |
11 | * | |
12 | * @return array | |
13 | */ | |
6a488035 TO |
14 | static function record($rg) { |
15 | ||
16 | $civicrm_contact = CRM_Utils_Array::value('civicrm_contact', $rg->params, array()); | |
17 | $civicrm_email = CRM_Utils_Array::value('civicrm_email', $rg->params, array()); | |
18 | ||
19 | $params = array( | |
20 | 1 => array(CRM_Utils_Array::value('first_name', $civicrm_contact, ''), 'String'), | |
21 | 2 => array(CRM_Utils_Array::value('last_name', $civicrm_contact, ''), 'String'), | |
22 | 3 => array(CRM_Utils_Array::value('email', $civicrm_email, ''), 'String'), | |
23 | ); | |
24 | ||
25 | return array( | |
26 | "civicrm_contact.{$rg->name}.{$rg->threshold}" => CRM_Core_DAO::composeQuery(" | |
27 | SELECT contact.id as id1, {$rg->threshold} as weight | |
28 | FROM civicrm_contact as contact | |
29 | JOIN civicrm_email as email ON email.contact_id=contact.id | |
30 | WHERE contact_type = 'Individual' | |
31 | AND first_name = %1 | |
32 | AND last_name = %2 | |
33 | AND email = %3", $params, TRUE), | |
34 | ); | |
35 | } | |
36 | ||
e0ef6999 EM |
37 | /** |
38 | * @param $rg | |
39 | * | |
40 | * @return array | |
41 | */ | |
6a488035 TO |
42 | static function internal($rg) { |
43 | $query = " | |
44 | SELECT contact1.id as id1, contact2.id as id2, {$rg->threshold} as weight | |
45 | FROM civicrm_contact as contact1 | |
46 | JOIN civicrm_email as email1 ON email1.contact_id=contact1.id | |
47 | JOIN civicrm_contact as contact2 ON | |
48 | contact1.first_name = contact2.first_name AND | |
49 | contact1.last_name = contact2.last_name | |
50 | JOIN civicrm_email as email2 ON | |
51 | email2.contact_id=contact2.id AND | |
52 | email1.email=email2.email | |
53 | WHERE contact1.contact_type = 'Individual' | |
54 | AND " . self::internalFilters($rg); | |
55 | return array("civicrm_contact.{$rg->name}.{$rg->threshold}" => $query); | |
56 | } | |
57 | }; | |
58 | ||
59 | ||
60 |