diff --git a/CRM/Report/Form.php b/CRM/Report/Form.php index 6b83d4ff0df9..3a006244fb2c 100644 --- a/CRM/Report/Form.php +++ b/CRM/Report/Form.php @@ -4304,33 +4304,82 @@ public function fiscalYearOffset($fieldName) { /** * Add Address into From Table if required. + * + * Prefix will be added to both tables as + * it is assumed you are using it to get address of a secondary contact. + * + * @param string $prefix + * @param array $extra Additional options. + * Not currently used in core but may be used in override extensions. */ - public function addAddressFromClause() { + public function joinAddressFromContact($prefix = '', $extra = array()) { // include address field if address column is to be included - if ((isset($this->_addressField) && - $this->_addressField - ) || - $this->isTableSelected('civicrm_address') - ) { + if ((isset($this->_addressField) && $this->_addressField) || $this->isTableSelected($prefix . 'civicrm_address')) { + $this->_from .= " + LEFT JOIN civicrm_address {$this->_aliases[$prefix . 'civicrm_address']} + ON ({$this->_aliases[$prefix . 'civicrm_contact']}.id = + {$this->_aliases[$prefix . 'civicrm_address']}.contact_id) AND + {$this->_aliases[$prefix . 'civicrm_address']}.is_primary = 1\n"; + } + } + + /** + * Add Country into From Table if required. + * + * Prefix will be added to both tables as + * it is assumed you are using it to get address of a secondary contact. + * + * @param string $prefix + * @param array $extra Additional options. + * Not currently used in core but may be used in override extensions. + */ + public function joinCountryFromClause($prefix = '', $extra = array()) { + // include country field if country column is to be included + if ($this->isTableSelected($prefix . 'civicrm_country')) { $this->_from .= " - LEFT JOIN civicrm_address {$this->_aliases['civicrm_address']} - ON ({$this->_aliases['civicrm_contact']}.id = - {$this->_aliases['civicrm_address']}.contact_id) AND - {$this->_aliases['civicrm_address']}.is_primary = 1\n"; + LEFT JOIN civicrm_country {$this->_aliases[$prefix . 'civicrm_country']} + ON {$this->_aliases[$prefix . 'civicrm_address']}.country_id = {$this->_aliases[$prefix . 'civicrm_country']}.id AND + {$this->_aliases[$prefix . 'civicrm_address']}.is_primary = 1 "; } } /** * Add Phone into From Table if required. + * + * Prefix will be added to both tables as + * it is assumed you are using it to get address of a secondary contact. + * + * @param string $prefix + * @param array $extra Additional options. + * Not currently used in core but may be used in override extensions. */ - public function addPhoneFromClause() { - // include address field if address column is to be included - if ($this->isTableSelected('civicrm_phone')) { + public function joinPhoneFromClause($prefix = '', $extra = array()) { + // include phone field if phone column is to be included + if ($this->isTableSelected($prefix . 'civicrm_phone')) { + $this->_from .= " + LEFT JOIN civicrm_phone {$this->_aliases[$prefix . 'civicrm_phone']} + ON {$this->_aliases[$prefix . 'civicrm_contact']}.id = {$this->_aliases[$prefix . 'civicrm_phone']}.contact_id AND + {$this->_aliases[$prefix . 'civicrm_phone']}.is_primary = 1\n"; + } + } + + /** + * Add Email into From Table if required. + * + * Prefix will be added to both tables as + * it is assumed you are using it to get address of a secondary contact. + * + * @param string $prefix + * @param array $extra Additional options. + * Not currently used in core but may be used in override extensions. + */ + public function joinEmailFromClause($prefix = '', $extra = array()) { + // include email field if email column is to be included + if ($this->isTableSelected($prefix . 'civicrm_email')) { $this->_from .= " - LEFT JOIN civicrm_phone {$this->_aliases['civicrm_phone']} - ON ({$this->_aliases['civicrm_contact']}.id = - {$this->_aliases['civicrm_phone']}.contact_id) AND - {$this->_aliases['civicrm_phone']}.is_primary = 1\n"; + LEFT JOIN civicrm_email {$this->_aliases[$prefix . 'civicrm_email']} + ON ({$this->_aliases[$prefix . 'civicrm_contact']}.id = {$this->_aliases[$prefix . 'civicrm_email']}.contact_id AND + {$this->_aliases[$prefix . 'civicrm_email']}.is_primary = 1) "; } } diff --git a/CRM/Report/Form/Activity.php b/CRM/Report/Form/Activity.php index e024ba937e62..098b4229da91 100644 --- a/CRM/Report/Form/Activity.php +++ b/CRM/Report/Form/Activity.php @@ -582,7 +582,7 @@ public function from($recordType) { $this->_aliases['civicrm_contact'] = 'civicrm_contact_source'; } - $this->addAddressFromClause(); + $this->joinAddressFromClause(); } /** diff --git a/CRM/Report/Form/ActivitySummary.php b/CRM/Report/Form/ActivitySummary.php index 44e223b7fb46..e933d084a9eb 100644 --- a/CRM/Report/Form/ActivitySummary.php +++ b/CRM/Report/Form/ActivitySummary.php @@ -337,12 +337,7 @@ public function from($durationMode = FALSE) { LEFT JOIN civicrm_case_contact ON civicrm_case_contact.case_id = civicrm_case.id "; - if ($this->_phoneField) { - $this->_from .= " - LEFT JOIN civicrm_phone {$this->_aliases['civicrm_phone']} - ON {$this->_aliases['civicrm_contact']}.id = {$this->_aliases['civicrm_phone']}.contact_id AND - {$this->_aliases['civicrm_phone']}.is_primary = 1 "; - } + $this->joinPhoneFromClause(); } else { $this->_from = " @@ -355,12 +350,7 @@ public function from($durationMode = FALSE) { {$this->_aclFrom}"; } - if ($this->_emailField) { - $this->_from .= " - LEFT JOIN civicrm_email {$this->_aliases['civicrm_email']} - ON {$this->_aliases['civicrm_contact']}.id = {$this->_aliases['civicrm_email']}.contact_id AND - {$this->_aliases['civicrm_email']}.is_primary = 1 "; - } + $this->joinEmailFromClause(); } /** diff --git a/CRM/Report/Form/Campaign/SurveyDetails.php b/CRM/Report/Form/Campaign/SurveyDetails.php index aa8e3e6f042b..94b41a0b338b 100644 --- a/CRM/Report/Form/Campaign/SurveyDetails.php +++ b/CRM/Report/Form/Campaign/SurveyDetails.php @@ -291,19 +291,9 @@ public function from() { $this->_from .= " INNER JOIN civicrm_activity_contact activity_contact_civireport ON ( {$this->_aliases['civicrm_activity']}.id = activity_contact_civireport.activity_id AND activity_contact_civireport.record_type_id = {$assigneeID} )\n"; - //get the address table. - $this->_from .= " LEFT JOIN civicrm_address {$this->_aliases['civicrm_address']} ON - {$this->_aliases['civicrm_contact']}.id = {$this->_aliases['civicrm_address']}.contact_id AND {$this->_aliases['civicrm_address']}.is_primary = 1\n"; - - if ($this->_emailField) { - $this->_from .= "LEFT JOIN civicrm_email {$this->_aliases['civicrm_email']} ON - {$this->_aliases['civicrm_contact']}.id = {$this->_aliases['civicrm_email']}.contact_id AND {$this->_aliases['civicrm_email']}.is_primary = 1\n"; - } - - if ($this->_phoneField) { - $this->_from .= "LEFT JOIN civicrm_phone {$this->_aliases['civicrm_phone']} ON - {$this->_aliases['civicrm_contact']}.id = {$this->_aliases['civicrm_phone']}.contact_id AND {$this->_aliases['civicrm_phone']}.is_primary = 1\n"; - } + $this->joinAddressFromClause(); + $this->joinPhoneFromClause(); + $this->joinEmailFromClause(); if ($this->_locationBasedPhoneField) { foreach ($this->_surveyResponseFields as $key => $value) { diff --git a/CRM/Report/Form/Case/Demographics.php b/CRM/Report/Form/Case/Demographics.php index 67a4aa5492ae..e49f372a3298 100644 --- a/CRM/Report/Form/Case/Demographics.php +++ b/CRM/Report/Form/Case/Demographics.php @@ -313,19 +313,9 @@ public function from() { } } - if ($this->_emailField) { - $this->_from .= " - LEFT JOIN civicrm_email {$this->_aliases['civicrm_email']} - ON ({$this->_aliases['civicrm_contact']}.id = {$this->_aliases['civicrm_email']}.contact_id AND - {$this->_aliases['civicrm_email']}.is_primary = 1) "; - } + $this->joinPhoneFromClause(); + $this->joinEmailFromClause(); - if ($this->_phoneField) { - $this->_from .= " - LEFT JOIN civicrm_phone {$this->_aliases['civicrm_phone']} - ON {$this->_aliases['civicrm_contact']}.id = {$this->_aliases['civicrm_phone']}.contact_id AND - {$this->_aliases['civicrm_phone']}.is_primary = 1 "; - } } public function where() { diff --git a/CRM/Report/Form/Case/Detail.php b/CRM/Report/Form/Case/Detail.php index 205aa72af433..ae4d2eaca152 100644 --- a/CRM/Report/Form/Case/Detail.php +++ b/CRM/Report/Form/Case/Detail.php @@ -414,24 +414,10 @@ public function from() { "; } - if ($this->_addressField) { - $this->_from .= " - LEFT JOIN civicrm_address {$this->_aliases['civicrm_address']} - ON {$conact}.id = {$this->_aliases['civicrm_address']}.contact_id AND - {$this->_aliases['civicrm_address']}.is_primary = 1 "; - } - if ($this->_emailField) { - $this->_from .= " - LEFT JOIN civicrm_email {$this->_aliases['civicrm_email']} - ON {$conact}.id = {$this->_aliases['civicrm_email']}.contact_id AND - {$this->_aliases['civicrm_email']}.is_primary = 1 "; - } - if ($this->_phoneField) { - $this->_from .= " - LEFT JOIN civicrm_phone {$this->_aliases['civicrm_phone']} - ON ( {$conact}.id = {$this->_aliases['civicrm_phone']}.contact_id AND - {$this->_aliases['civicrm_phone']}.is_primary = 1) "; - } + $this->joinAddressFromClause(); + $this->joinPhoneFromClause(); + $this->joinEmailFromClause(); + if ($this->_worldRegionField) { $this->_from .= " LEFT JOIN civicrm_country {$this->_aliases['civicrm_country']} diff --git a/CRM/Report/Form/Contact/CurrentEmployer.php b/CRM/Report/Form/Contact/CurrentEmployer.php index d0081f850b43..382dc4a17910 100644 --- a/CRM/Report/Form/Contact/CurrentEmployer.php +++ b/CRM/Report/Form/Contact/CurrentEmployer.php @@ -252,17 +252,11 @@ public function from() { LEFT JOIN civicrm_relationship {$this->_aliases['civicrm_relationship']} ON ( {$this->_aliases['civicrm_relationship']}.contact_id_a={$this->_aliases['civicrm_contact']}.id AND {$this->_aliases['civicrm_relationship']}.contact_id_b={$this->_aliases['civicrm_contact']}.employer_id - AND {$this->_aliases['civicrm_relationship']}.relationship_type_id={$relType}) - LEFT JOIN civicrm_address {$this->_aliases['civicrm_address']} - ON ({$this->_aliases['civicrm_contact']}.id = {$this->_aliases['civicrm_address']}.contact_id - AND {$this->_aliases['civicrm_address']}.is_primary = 1 ) - - LEFT JOIN civicrm_phone {$this->_aliases['civicrm_phone']} - ON ({$this->_aliases['civicrm_contact']}.id = {$this->_aliases['civicrm_phone']}.contact_id - AND {$this->_aliases['civicrm_phone']}.is_primary = 1) - LEFT JOIN civicrm_email {$this->_aliases['civicrm_email']} - ON ({$this->_aliases['civicrm_contact']}.id = {$this->_aliases['civicrm_email']}.contact_id - AND {$this->_aliases['civicrm_email']}.is_primary = 1) "; + AND {$this->_aliases['civicrm_relationship']}.relationship_type_id={$relType}) "; + + $this->joinAddressFromClause(); + $this->joinPhoneFromClause(); + $this->joinEmailFromClause(); } public function where() { diff --git a/CRM/Report/Form/Contact/Detail.php b/CRM/Report/Form/Contact/Detail.php index c715aea841c1..092f827a96d4 100644 --- a/CRM/Report/Form/Contact/Detail.php +++ b/CRM/Report/Form/Contact/Detail.php @@ -390,6 +390,12 @@ public function select() { if (!empty($field['required']) || !empty($this->_params['fields'][$fieldName]) ) { + if ($tableName == 'civicrm_address' || $tableName == 'civicrm_country') { + $this->_addressField = TRUE; + } + elseif ($tableName == 'civicrm_email') { + $this->_emailField = TRUE; + } //isolate the select clause compoenent wise if (in_array($table['alias'], $this->_component)) { $select[$table['alias']][] = "{$field['dbAlias']} as {$tableName}_{$fieldName}"; @@ -457,35 +463,10 @@ public function from() { $this->_from = " FROM civicrm_contact {$this->_aliases['civicrm_contact']} {$this->_aclFrom}"; - if ($this->isTableSelected('civicrm_country') || - $this->isTableSelected('civicrm_address') - ) { - $this->_from .= " - LEFT JOIN civicrm_address {$this->_aliases['civicrm_address']} - ON ({$this->_aliases['civicrm_contact']}.id = {$this->_aliases['civicrm_address']}.contact_id AND - {$this->_aliases['civicrm_address']}.is_primary = 1 ) "; - } - - if ($this->isTableSelected('civicrm_email')) { - $this->_from .= " - LEFT JOIN civicrm_email {$this->_aliases['civicrm_email']} - ON ({$this->_aliases['civicrm_contact']}.id = {$this->_aliases['civicrm_email']}.contact_id AND - {$this->_aliases['civicrm_email']}.is_primary = 1) "; - } - - if ($this->isTableSelected('civicrm_phone')) { - $this->_from .= " - LEFT JOIN civicrm_phone {$this->_aliases['civicrm_phone']} - ON {$this->_aliases['civicrm_contact']}.id = {$this->_aliases['civicrm_phone']}.contact_id AND - {$this->_aliases['civicrm_phone']}.is_primary = 1 "; - } - - if ($this->isTableSelected('civicrm_country')) { - $this->_from .= " - LEFT JOIN civicrm_country {$this->_aliases['civicrm_country']} - ON {$this->_aliases['civicrm_address']}.country_id = {$this->_aliases['civicrm_country']}.id AND - {$this->_aliases['civicrm_address']}.is_primary = 1 "; - } + $this->joinAddressFromClause(); + $this->joinCountryFromClause(); + $this->joinPhoneFromClause(); + $this->joinEmailFromClause(); $this->_from .= "{$group}"; diff --git a/CRM/Report/Form/Contact/Summary.php b/CRM/Report/Form/Contact/Summary.php index ad5fe235a831..26484eaf1ee5 100644 --- a/CRM/Report/Form/Contact/Summary.php +++ b/CRM/Report/Form/Contact/Summary.php @@ -192,27 +192,9 @@ public function from() { LEFT JOIN civicrm_address {$this->_aliases['civicrm_address']} ON ({$this->_aliases['civicrm_contact']}.id = {$this->_aliases['civicrm_address']}.contact_id AND {$this->_aliases['civicrm_address']}.is_primary = 1 ) "; - - if ($this->isTableSelected('civicrm_email')) { - $this->_from .= " - LEFT JOIN civicrm_email {$this->_aliases['civicrm_email']} - ON ({$this->_aliases['civicrm_contact']}.id = {$this->_aliases['civicrm_email']}.contact_id AND - {$this->_aliases['civicrm_email']}.is_primary = 1) "; - } - - if ($this->_phoneField) { - $this->_from .= " - LEFT JOIN civicrm_phone {$this->_aliases['civicrm_phone']} - ON {$this->_aliases['civicrm_contact']}.id = {$this->_aliases['civicrm_phone']}.contact_id AND - {$this->_aliases['civicrm_phone']}.is_primary = 1 "; - } - - if ($this->isTableSelected('civicrm_country')) { - $this->_from .= " - LEFT JOIN civicrm_country {$this->_aliases['civicrm_country']} - ON {$this->_aliases['civicrm_address']}.country_id = {$this->_aliases['civicrm_country']}.id AND - {$this->_aliases['civicrm_address']}.is_primary = 1 "; - } + $this->joinPhoneFromClause(); + $this->joinEmailFromClause(); + $this->joinCountryFromClause(); } public function postProcess() { diff --git a/CRM/Report/Form/Contribute/Detail.php b/CRM/Report/Form/Contribute/Detail.php index e67e0d0b4424..ff2596d56e37 100644 --- a/CRM/Report/Form/Contribute/Detail.php +++ b/CRM/Report/Form/Contribute/Detail.php @@ -941,16 +941,10 @@ public function appendAdditionalFromJoins() { INNER JOIN (SELECT c.id, IF(COUNT(oc.id) = 0, 0, 1) AS ordinality FROM civicrm_contribution c LEFT JOIN civicrm_contribution oc ON c.contact_id = oc.contact_id AND oc.receive_date < c.receive_date GROUP BY c.id) {$this->_aliases['civicrm_contribution_ordinality']} ON {$this->_aliases['civicrm_contribution_ordinality']}.id = {$this->_aliases['civicrm_contribution']}.id"; } - $this->addPhoneFromClause(); + $this->joinPhoneFromClause(); + $this->joinAddressFromClause(); + $this->joinEmailFromClause(); - $this->addAddressFromClause(); - - if ($this->_emailField) { - $this->_from .= " - LEFT JOIN civicrm_email {$this->_aliases['civicrm_email']} - ON {$this->_aliases['civicrm_contact']}.id = {$this->_aliases['civicrm_email']}.contact_id AND - {$this->_aliases['civicrm_email']}.is_primary = 1\n"; - } // include contribution note if (!empty($this->_params['fields']['contribution_note']) || !empty($this->_params['note_value']) diff --git a/CRM/Report/Form/Contribute/History.php b/CRM/Report/Form/Contribute/History.php index 0cb76f1fad74..e0dada5fdf41 100644 --- a/CRM/Report/Form/Contribute/History.php +++ b/CRM/Report/Form/Contribute/History.php @@ -398,23 +398,13 @@ public function from() { ON {$this->_aliases['civicrm_contact']}.id = {$this->_aliases['civicrm_contribution']}.contact_id AND {$this->_aliases['civicrm_contribution']}.is_test = 0 "; - if ($this->_emailField) { - $this->_from .= " LEFT JOIN civicrm_email {$this->_aliases['civicrm_email']} - ON ({$this->_aliases['civicrm_contact']}.id = {$this->_aliases['civicrm_email']}.contact_id AND - {$this->_aliases['civicrm_email']}.is_primary = 1) "; - } - - if ($this->_phoneField) { - $this->_from .= " LEFT JOIN civicrm_phone {$this->_aliases['civicrm_phone']} - ON ({$this->_aliases['civicrm_contact']}.id = {$this->_aliases['civicrm_phone']}.contact_id AND - {$this->_aliases['civicrm_phone']}.is_primary = 1) "; - } - $relContacAlias = 'contact_relationship'; $this->_relationshipFrom = " INNER JOIN civicrm_relationship {$this->_aliases['civicrm_relationship']} ON (({$this->_aliases['civicrm_relationship']}.contact_id_a = {$relContacAlias}.id OR {$this->_aliases['civicrm_relationship']}.contact_id_b = {$relContacAlias}.id ) AND {$this->_aliases['civicrm_relationship']}.is_active = 1) "; - $this->addAddressFromClause(); + $this->joinAddressFromClause(); + $this->joinPhoneFromClause(); + $this->joinEmailFromClause(); // for credit card type $this->addFinancialTrxnFromClause(); diff --git a/CRM/Report/Form/Contribute/Lybunt.php b/CRM/Report/Form/Contribute/Lybunt.php index b19c08116a45..35a621f918e9 100644 --- a/CRM/Report/Form/Contribute/Lybunt.php +++ b/CRM/Report/Form/Contribute/Lybunt.php @@ -345,19 +345,10 @@ public function from() { AND {$this->_aliases['civicrm_contribution']}.is_test = 0 INNER JOIN civicrm_contact {$this->_aliases['civicrm_contact']} ON restricted_contacts.cid = {$this->_aliases['civicrm_contact']}.id"; - if ($this->isTableSelected('civicrm_email')) { - $this->_from .= " - LEFT JOIN civicrm_email {$this->_aliases['civicrm_email']} - ON {$this->_aliases['civicrm_contact']}.id = {$this->_aliases['civicrm_email']}.contact_id - AND {$this->_aliases['civicrm_email']}.is_primary = 1"; - } - if ($this->isTableSelected('civicrm_phone')) { - $this->_from .= " - LEFT JOIN civicrm_phone {$this->_aliases['civicrm_phone']} - ON {$this->_aliases['civicrm_contact']}.id = {$this->_aliases['civicrm_phone']}.contact_id - AND {$this->_aliases['civicrm_phone']}.is_primary = 1"; - } - $this->addAddressFromClause(); + + $this->joinAddressFromClause(); + $this->joinPhoneFromClause(); + $this->joinEmailFromClause(); } else { $this->setFromBase('civicrm_contact'); diff --git a/CRM/Report/Form/Contribute/Recur.php b/CRM/Report/Form/Contribute/Recur.php index 602b8f5607fb..614eefeecf42 100644 --- a/CRM/Report/Form/Contribute/Recur.php +++ b/CRM/Report/Form/Contribute/Recur.php @@ -273,14 +273,9 @@ public function from() { $this->_from .= " LEFT JOIN civicrm_contribution {$this->_aliases['civicrm_contribution']} ON {$this->_aliases['civicrm_contribution_recur']}.id = {$this->_aliases['civicrm_contribution']}.contribution_recur_id"; - $this->_from .= " - LEFT JOIN civicrm_email {$this->_aliases['civicrm_email']} - ON ({$this->_aliases['civicrm_contact']}.id = {$this->_aliases['civicrm_email']}.contact_id AND - {$this->_aliases['civicrm_email']}.is_primary = 1)"; - $this->_from .= " - LEFT JOIN civicrm_phone {$this->_aliases['civicrm_phone']} - ON ({$this->_aliases['civicrm_contact']}.id = {$this->_aliases['civicrm_phone']}.contact_id AND - {$this->_aliases['civicrm_phone']}.is_primary = 1)"; + + $this->joinPhoneFromClause(); + $this->joinEmailFromClause(); // for credit card type $this->addFinancialTrxnFromClause(); diff --git a/CRM/Report/Form/Contribute/Summary.php b/CRM/Report/Form/Contribute/Summary.php index 32f64a7aa8ed..6b9928db3061 100644 --- a/CRM/Report/Form/Contribute/Summary.php +++ b/CRM/Report/Form/Contribute/Summary.php @@ -41,7 +41,7 @@ class CRM_Report_Form_Contribute_Summary extends CRM_Report_Form { protected $_customGroupExtends = array('Contribution', 'Contact', 'Individual'); protected $_customGroupGroupBy = TRUE; - public $_drilldownReport = array('contribute/detail' => 'Link to Detail Report'); + public $_drilldownReport = array('contribute/summary' => 'Link to Summary Report'); /** * To what frequency group-by a date column @@ -515,15 +515,12 @@ public function from($entity = NULL) { {$softCreditJoin} LEFT JOIN civicrm_financial_type {$this->_aliases['civicrm_financial_type']} ON {$this->_aliases['civicrm_contribution']}.financial_type_id ={$this->_aliases['civicrm_financial_type']}.id - LEFT JOIN civicrm_email {$this->_aliases['civicrm_email']} - ON ({$this->_aliases['civicrm_contact']}.id = {$this->_aliases['civicrm_email']}.contact_id AND - {$this->_aliases['civicrm_email']}.is_primary = 1) + "; - LEFT JOIN civicrm_phone {$this->_aliases['civicrm_phone']} - ON ({$this->_aliases['civicrm_contact']}.id = {$this->_aliases['civicrm_phone']}.contact_id AND - {$this->_aliases['civicrm_phone']}.is_primary = 1)"; + $this->joinAddressFromClause(); + $this->joinPhoneFromClause(); + $this->joinEmailFromClause(); - $this->addAddressFromClause(); //for contribution batches if ($this->isTableSelected('civicrm_batch')) { $this->_from .= " diff --git a/CRM/Report/Form/Contribute/Sybunt.php b/CRM/Report/Form/Contribute/Sybunt.php index 2299e9d7b8df..f4f0ab42bda6 100644 --- a/CRM/Report/Form/Contribute/Sybunt.php +++ b/CRM/Report/Form/Contribute/Sybunt.php @@ -352,22 +352,13 @@ public function from() { ON {$this->_aliases['civicrm_contact']}.id = {$this->_aliases['civicrm_contribution']}.contact_id {$this->_aclFrom}"; - if ($this->isTableSelected('civicrm_email')) { - $this->_from .= " - LEFT JOIN civicrm_email {$this->_aliases['civicrm_email']} - ON {$this->_aliases['civicrm_contact']}.id = {$this->_aliases['civicrm_email']}.contact_id - AND {$this->_aliases['civicrm_email']}.is_primary = 1"; - } - if ($this->isTableSelected('civicrm_phone')) { - $this->_from .= " - LEFT JOIN civicrm_phone {$this->_aliases['civicrm_phone']} - ON {$this->_aliases['civicrm_contact']}.id = {$this->_aliases['civicrm_phone']}.contact_id AND - {$this->_aliases['civicrm_phone']}.is_primary = 1"; - } + $this->joinPhoneFromClause(); + $this->joinEmailFromClause(); + // for credit card type $this->addFinancialTrxnFromClause(); - $this->addAddressFromClause(); + $this->joinAddressFromClause(); } public function where() { diff --git a/CRM/Report/Form/Contribute/TopDonor.php b/CRM/Report/Form/Contribute/TopDonor.php index 8fe9c8f4d6b4..10f163b26f18 100644 --- a/CRM/Report/Form/Contribute/TopDonor.php +++ b/CRM/Report/Form/Contribute/TopDonor.php @@ -253,17 +253,14 @@ public function from() { FROM civicrm_contact {$this->_aliases['civicrm_contact']} {$this->_aclFrom} INNER JOIN civicrm_contribution {$this->_aliases['civicrm_contribution']} ON {$this->_aliases['civicrm_contact']}.id = {$this->_aliases['civicrm_contribution']}.contact_id AND {$this->_aliases['civicrm_contribution']}.is_test = 0 - LEFT JOIN civicrm_email {$this->_aliases['civicrm_email']} - ON {$this->_aliases['civicrm_contact']}.id = {$this->_aliases['civicrm_email']}.contact_id - AND {$this->_aliases['civicrm_email']}.is_primary = 1 - LEFT JOIN civicrm_phone {$this->_aliases['civicrm_phone']} - ON {$this->_aliases['civicrm_contact']}.id = {$this->_aliases['civicrm_phone']}.contact_id AND - {$this->_aliases['civicrm_phone']}.is_primary = 1"; + "; // for credit card type $this->addFinancialTrxnFromClause(); - $this->addAddressFromClause(); + $this->joinAddressFromClause(); + $this->joinPhoneFromClause(); + $this->joinEmailFromClause(); } public function where() { diff --git a/CRM/Report/Form/Event/ParticipantListCount.php b/CRM/Report/Form/Event/ParticipantListCount.php index 2a6d2bb91e24..4d57626ff6a1 100644 --- a/CRM/Report/Form/Event/ParticipantListCount.php +++ b/CRM/Report/Form/Event/ParticipantListCount.php @@ -462,17 +462,12 @@ public function from() { {$this->_aclFrom} LEFT JOIN civicrm_contact {$this->_aliases['civicrm_employer']} ON ({$this->_aliases['civicrm_employer']}.id = {$this->_aliases['civicrm_contact']}.employer_id ) - LEFT JOIN civicrm_address {$this->_aliases['civicrm_address']} - ON {$this->_aliases['civicrm_contact']}.id = {$this->_aliases['civicrm_address']}.contact_id AND - {$this->_aliases['civicrm_address']}.is_primary = 1 - LEFT JOIN civicrm_email {$this->_aliases['civicrm_email']} - ON ({$this->_aliases['civicrm_contact']}.id = {$this->_aliases['civicrm_email']}.contact_id AND - {$this->_aliases['civicrm_email']}.is_primary = 1) - LEFT JOIN civicrm_phone {$this->_aliases['civicrm_phone']} - ON {$this->_aliases['civicrm_contact']}.id = {$this->_aliases['civicrm_phone']}.contact_id AND - {$this->_aliases['civicrm_phone']}.is_primary = 1 LEFT JOIN civicrm_line_item {$this->_aliases['civicrm_line_item']} ON {$this->_aliases['civicrm_line_item']}.entity_table = 'civicrm_participant' AND {$this->_aliases['civicrm_participant']}.id ={$this->_aliases['civicrm_line_item']}.entity_id"; + + $this->joinAddressFromClause(); + $this->joinPhoneFromClause(); + $this->joinEmailFromClause(); } public function storeWhereHavingClauseArray() { diff --git a/CRM/Report/Form/Event/ParticipantListing.php b/CRM/Report/Form/Event/ParticipantListing.php index a9ded26d422e..64e9a4454fdf 100644 --- a/CRM/Report/Form/Event/ParticipantListing.php +++ b/CRM/Report/Form/Event/ParticipantListing.php @@ -513,16 +513,12 @@ public function from() { LEFT JOIN civicrm_contact {$this->_aliases['civicrm_contact']} ON ({$this->_aliases['civicrm_participant']}.contact_id = {$this->_aliases['civicrm_contact']}.id ) {$this->_aclFrom} - LEFT JOIN civicrm_address {$this->_aliases['civicrm_address']} - ON {$this->_aliases['civicrm_contact']}.id = {$this->_aliases['civicrm_address']}.contact_id AND - {$this->_aliases['civicrm_address']}.is_primary = 1 - LEFT JOIN civicrm_email {$this->_aliases['civicrm_email']} - ON ({$this->_aliases['civicrm_contact']}.id = {$this->_aliases['civicrm_email']}.contact_id AND - {$this->_aliases['civicrm_email']}.is_primary = 1) - LEFT JOIN civicrm_phone {$this->_aliases['civicrm_phone']} - ON {$this->_aliases['civicrm_contact']}.id = {$this->_aliases['civicrm_phone']}.contact_id AND - {$this->_aliases['civicrm_phone']}.is_primary = 1 "; + + $this->joinAddressFromClause(); + $this->joinPhoneFromClause(); + $this->joinEmailFromClause(); + if ($this->_contribField) { $this->_from .= " LEFT JOIN civicrm_participant_payment pp diff --git a/CRM/Report/Form/Grant/Statistics.php b/CRM/Report/Form/Grant/Statistics.php index fa15767cbb3c..8cd45a0bd4ae 100644 --- a/CRM/Report/Form/Grant/Statistics.php +++ b/CRM/Report/Form/Grant/Statistics.php @@ -241,15 +241,11 @@ public function from() { FROM civicrm_grant {$this->_aliases['civicrm_grant']} LEFT JOIN civicrm_contact {$this->_aliases['civicrm_contact']} ON ({$this->_aliases['civicrm_grant']}.contact_id = {$this->_aliases['civicrm_contact']}.id ) "; + + $this->joinAddressFromClause(); + $this->joinCountryFromClause(); if ($this->_addressField) { $this->_from .= " - LEFT JOIN civicrm_address {$this->_aliases['civicrm_address']} - ON {$this->_aliases['civicrm_contact']}.id = - {$this->_aliases['civicrm_address']}.contact_id AND - {$this->_aliases['civicrm_address']}.is_primary = 1\n - LEFT JOIN civicrm_country country - ON {$this->_aliases['civicrm_address']}.country_id = - country.id LEFT JOIN civicrm_worldregion {$this->_aliases['civicrm_world_region']} ON country.region_id = {$this->_aliases['civicrm_world_region']}.id"; diff --git a/CRM/Report/Form/Mailing/Bounce.php b/CRM/Report/Form/Mailing/Bounce.php index 2af42955ea5f..9b65c2bffc31 100644 --- a/CRM/Report/Form/Mailing/Bounce.php +++ b/CRM/Report/Form/Mailing/Bounce.php @@ -337,13 +337,7 @@ public function from() { INNER JOIN civicrm_mailing {$this->_aliases['civicrm_mailing']} ON civicrm_mailing_job.mailing_id = {$this->_aliases['civicrm_mailing']}.id "; - - if ($this->_phoneField) { - $this->_from .= " - LEFT JOIN civicrm_phone {$this->_aliases['civicrm_phone']} - ON {$this->_aliases['civicrm_contact']}.id = {$this->_aliases['civicrm_phone']}.contact_id AND - {$this->_aliases['civicrm_phone']}.is_primary = 1 "; - } + $this->joinPhoneFromClause(); } public function where() { diff --git a/CRM/Report/Form/Mailing/Clicks.php b/CRM/Report/Form/Mailing/Clicks.php index cec0e2d6f609..5e731797c259 100644 --- a/CRM/Report/Form/Mailing/Clicks.php +++ b/CRM/Report/Form/Mailing/Clicks.php @@ -293,14 +293,7 @@ public function from() { ON civicrm_mailing_job.mailing_id = {$this->_aliases['civicrm_mailing']}.id AND civicrm_mailing_job.is_test = 0 "; - - if ($this->_phoneField) { - $this->_from .= " - LEFT JOIN civicrm_phone {$this->_aliases['civicrm_phone']} - ON {$this->_aliases['civicrm_contact']}.id = {$this->_aliases['civicrm_phone']}.contact_id - AND {$this->_aliases['civicrm_phone']}.is_primary = 1 - "; - } + $this->joinPhoneFromClause(); } public function where() { diff --git a/CRM/Report/Form/Mailing/Detail.php b/CRM/Report/Form/Mailing/Detail.php index 371bedd76427..6ff146876983 100644 --- a/CRM/Report/Form/Mailing/Detail.php +++ b/CRM/Report/Form/Mailing/Detail.php @@ -443,12 +443,7 @@ public function from() { ON civicrm_mailing_job.mailing_id = {$this->_aliases['civicrm_mailing']}.id AND civicrm_mailing_job.is_test = 0"; - if ($this->_phoneField) { - $this->_from .= " - LEFT JOIN civicrm_phone {$this->_aliases['civicrm_phone']} - ON {$this->_aliases['civicrm_contact']}.id = {$this->_aliases['civicrm_phone']}.contact_id AND - {$this->_aliases['civicrm_phone']}.is_primary = 1 "; - } + $this->joinPhoneFromClause(); } public function where() { diff --git a/CRM/Report/Form/Mailing/Opened.php b/CRM/Report/Form/Mailing/Opened.php index 62a471db15cf..bf90b04dad2d 100644 --- a/CRM/Report/Form/Mailing/Opened.php +++ b/CRM/Report/Form/Mailing/Opened.php @@ -279,14 +279,7 @@ public function from() { ON civicrm_mailing_job.mailing_id = {$this->_aliases['civicrm_mailing']}.id AND civicrm_mailing_job.is_test = 0 "; - - if ($this->_phoneField) { - $this->_from .= " - LEFT JOIN civicrm_phone {$this->_aliases['civicrm_phone']} - ON {$this->_aliases['civicrm_contact']}.id = {$this->_aliases['civicrm_phone']}.contact_id - AND {$this->_aliases['civicrm_phone']}.is_primary = 1 - "; - } + $this->joinPhoneFromClause(); } public function where() { diff --git a/CRM/Report/Form/Member/ContributionDetail.php b/CRM/Report/Form/Member/ContributionDetail.php index 779521e8ad74..4bf8d703d720 100644 --- a/CRM/Report/Form/Member/ContributionDetail.php +++ b/CRM/Report/Form/Member/ContributionDetail.php @@ -509,12 +509,6 @@ public function from() { } - if (!empty($this->_params['fields']['phone'])) { - $this->_from .= " - LEFT JOIN civicrm_phone {$this->_aliases['civicrm_phone']} - ON ({$this->_aliases['civicrm_contact']}.id = {$this->_aliases['civicrm_phone']}.contact_id AND - {$this->_aliases['civicrm_phone']}.is_primary = 1)"; - } //for contribution batches if (!empty($this->_params['fields']['batch_id']) || !empty($this->_params['bid_value']) @@ -528,22 +522,9 @@ public function from() { AND {$this->_aliases['civicrm_batch']}.entity_table = 'civicrm_financial_trxn')"; } - if ($this->_addressField OR - (!empty($this->_params['state_province_id_value']) OR - !empty($this->_params['country_id_value'])) - ) { - $this->_from .= " - LEFT JOIN civicrm_address {$this->_aliases['civicrm_address']} - ON {$this->_aliases['civicrm_contact']}.id = {$this->_aliases['civicrm_address']}.contact_id AND - {$this->_aliases['civicrm_address']}.is_primary = 1\n"; - } - - if ($this->_emailField) { - $this->_from .= " - LEFT JOIN civicrm_email {$this->_aliases['civicrm_email']} - ON {$this->_aliases['civicrm_contact']}.id = {$this->_aliases['civicrm_email']}.contact_id AND - {$this->_aliases['civicrm_email']}.is_primary = 1\n"; - } + $this->joinAddressFromClause(); + $this->joinPhoneFromClause(); + $this->joinEmailFromClause(); } /** diff --git a/CRM/Report/Form/Member/Detail.php b/CRM/Report/Form/Member/Detail.php index b4a3299e92a7..4f568957d7b7 100644 --- a/CRM/Report/Form/Member/Detail.php +++ b/CRM/Report/Form/Member/Detail.php @@ -284,29 +284,10 @@ public function from() { ON {$this->_aliases['civicrm_membership_status']}.id = {$this->_aliases['civicrm_membership']}.status_id "; - if ($this->isTableSelected('civicrm_address')) { - $this->_from .= " - LEFT JOIN civicrm_address {$this->_aliases['civicrm_address']} - ON {$this->_aliases['civicrm_contact']}.id = - {$this->_aliases['civicrm_address']}.contact_id AND - {$this->_aliases['civicrm_address']}.is_primary = 1\n"; - } + $this->joinAddressFromClause(); + $this->joinPhoneFromClause(); + $this->joinEmailFromClause(); - if ($this->isTableSelected('civicrm_email')) { - $this->_from .= " - LEFT JOIN civicrm_email {$this->_aliases['civicrm_email']} - ON {$this->_aliases['civicrm_contact']}.id = - {$this->_aliases['civicrm_email']}.contact_id AND - {$this->_aliases['civicrm_email']}.is_primary = 1\n"; - } - //used when phone field is selected - if ($this->isTableSelected('civicrm_phone')) { - $this->_from .= " - LEFT JOIN civicrm_phone {$this->_aliases['civicrm_phone']} - ON {$this->_aliases['civicrm_contact']}.id = - {$this->_aliases['civicrm_phone']}.contact_id AND - {$this->_aliases['civicrm_phone']}.is_primary = 1\n"; - } //used when contribution field is selected. if ($this->isTableSelected('civicrm_contribution')) { $this->_from .= " diff --git a/CRM/Report/Form/Member/Lapse.php b/CRM/Report/Form/Member/Lapse.php index 8d271ff5a928..7b1ead77f9f8 100644 --- a/CRM/Report/Form/Member/Lapse.php +++ b/CRM/Report/Form/Member/Lapse.php @@ -248,8 +248,6 @@ public static function formRule($fields, $files, $self) { } public function from() { - $this->_from = NULL; - $this->_from = " FROM civicrm_contact {$this->_aliases['civicrm_contact']} {$this->_aclFrom} INNER JOIN civicrm_membership {$this->_aliases['civicrm_membership']} @@ -262,27 +260,9 @@ public function from() { ON {$this->_aliases['civicrm_membership']}.membership_type_id = {$this->_aliases['civicrm_membership_type']}.id"; - // include address field if address column is to be included - if ($this->_addressField) { - $this->_from .= " - LEFT JOIN civicrm_address {$this->_aliases['civicrm_address']} - ON {$this->_aliases['civicrm_contact']}.id = {$this->_aliases['civicrm_address']}.contact_id AND {$this->_aliases['civicrm_address']}.is_primary = 1\n"; - } - - // include email field if email column is to be included - if ($this->_emailField) { - $this->_from .= " - LEFT JOIN civicrm_email {$this->_aliases['civicrm_email']} - ON {$this->_aliases['civicrm_contact']}.id = {$this->_aliases['civicrm_email']}.contact_id AND {$this->_aliases['civicrm_email']}.is_primary = 1\n"; - } - - // include phone field if phone column is to be included - if ($this->_phoneField) { - $this->_from .= " - LEFT JOIN civicrm_phone {$this->_aliases['civicrm_phone']} - ON {$this->_aliases['civicrm_contact']}.id = {$this->_aliases['civicrm_phone']}.contact_id - AND {$this->_aliases['civicrm_phone']}.is_primary = 1\n"; - } + $this->joinAddressFromClause(); + $this->joinPhoneFromClause(); + $this->joinEmailFromClause(); } public function where() { diff --git a/CRM/Report/Form/Pledge/Detail.php b/CRM/Report/Form/Pledge/Detail.php index 66423f2643c4..fbbd243bad68 100644 --- a/CRM/Report/Form/Pledge/Detail.php +++ b/CRM/Report/Form/Pledge/Detail.php @@ -286,16 +286,9 @@ public function from() { "; } - $this->addPhoneFromClause(); - $this->addAddressFromClause(); - // include email field if email column is to be included - if ($this->_emailField) { - $this->_from .= " - LEFT JOIN civicrm_email {$this->_aliases['civicrm_email']} - ON ({$this->_aliases['civicrm_contact']}.id = - {$this->_aliases['civicrm_email']}.contact_id) AND - {$this->_aliases['civicrm_email']}.is_primary = 1\n"; - } + $this->joinPhoneFromClause(); + $this->joinAddressFromClause(); + $this->joinEmailFromClause(); } /** diff --git a/CRM/Report/Form/Walklist/Walklist.php b/CRM/Report/Form/Walklist/Walklist.php index 6ac324557125..49cd73da99cd 100644 --- a/CRM/Report/Form/Walklist/Walklist.php +++ b/CRM/Report/Form/Walklist/Walklist.php @@ -183,17 +183,10 @@ public function from() { $this->_from = " FROM civicrm_contact {$this->_aliases['civicrm_contact']} {$this->_aclFrom} "; - if ($this->_addressField) { - $this->_from .= "LEFT JOIN civicrm_address {$this->_aliases['civicrm_address']} ON {$this->_aliases['civicrm_contact']}.id = {$this->_aliases['civicrm_address']}.contact_id AND {$this->_aliases['civicrm_address']}.is_primary = 1\n"; - } - - if ($this->_emailField) { - $this->_from .= "LEFT JOIN civicrm_email {$this->_aliases['civicrm_email']} ON {$this->_aliases['civicrm_contact']}.id = {$this->_aliases['civicrm_email']}.contact_id AND {$this->_aliases['civicrm_email']}.is_primary = 1\n"; - } - if ($this->_phoneField) { - $this->_from .= "LEFT JOIN civicrm_phone {$this->_aliases['civicrm_phone']} ON {$this->_aliases['civicrm_contact']}.id = {$this->_aliases['civicrm_phone']}.contact_id AND {$this->_aliases['civicrm_phone']}.is_primary = 1\n"; - } + $this->joinAddressFromClause(); + $this->joinPhoneFromClause(); + $this->joinEmailFromClause(); } public function where() {