From 15d9e60488082449341e2d9bbf11e6d77f14b66d Mon Sep 17 00:00:00 2001 From: eileen Date: Tue, 2 Jan 2018 10:34:53 +1300 Subject: [PATCH] CRM-21616 ensure sql metadata is available from api --- CRM/Report/Form.php | 2 +- api/v3/ReportTemplate.php | 1 + tests/phpunit/api/v3/ReportTemplateTest.php | 9 +++++++++ 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/CRM/Report/Form.php b/CRM/Report/Form.php index 75a614c836..6b83d4ff0d 100644 --- a/CRM/Report/Form.php +++ b/CRM/Report/Form.php @@ -1313,7 +1313,7 @@ class CRM_Report_Form extends CRM_Core_Form { * * @param string $sql */ - protected function addToDeveloperTab($sql) { + public function addToDeveloperTab($sql) { if (!CRM_Core_Permission::check('view report sql')) { return; } diff --git a/api/v3/ReportTemplate.php b/api/v3/ReportTemplate.php index f226ce2ac6..69c250a7cd 100644 --- a/api/v3/ReportTemplate.php +++ b/api/v3/ReportTemplate.php @@ -152,6 +152,7 @@ function _civicrm_api3_report_template_getrows($params) { $reportInstance->setOffsetValue($options['offset']); $reportInstance->beginPostProcessCommon(); $sql = $reportInstance->buildQuery(); + $reportInstance->addToDeveloperTab($sql); $rows = $metadata = $requiredMetadata = array(); $reportInstance->buildRows($sql, $rows); $reportInstance->formatDisplay($rows); diff --git a/tests/phpunit/api/v3/ReportTemplateTest.php b/tests/phpunit/api/v3/ReportTemplateTest.php index cf05f97a92..e6a55c4cc4 100644 --- a/tests/phpunit/api/v3/ReportTemplateTest.php +++ b/tests/phpunit/api/v3/ReportTemplateTest.php @@ -303,6 +303,15 @@ class api_v3_ReportTemplateTest extends CiviUnitTestCase { )); $this->assertEquals(2, $rows['count'], "Report failed - the sql used to generate the results was " . print_r($rows['metadata']['sql'], TRUE)); + + $this->assertContains('DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci + SELECT SQL_CALC_FOUND_ROWS contact_civireport.id as cid FROM civicrm_contact contact_civireport INNER JOIN civicrm_contribution contribution_civireport USE index (received_date) ON contribution_civireport.contact_id = contact_civireport.id + AND contribution_civireport.is_test = 0 + AND contribution_civireport.receive_date BETWEEN \'20140701000000\' AND \'20150630235959\' + + LEFT JOIN civicrm_contribution cont_exclude ON cont_exclude.contact_id = contact_civireport.id + AND cont_exclude.receive_date BETWEEN \'2015-7-1\' AND \'20160630235959\' WHERE cont_exclude.id IS NULL AND 1 AND ( contribution_civireport.contribution_status_id IN (1) ) + GROUP BY contact_civireport.id', $rows['metadata']['sql'][0]); } /** -- 2.25.1