From b2a674e62cff8dbdcb903fbfd77d4f83ecb28bdf Mon Sep 17 00:00:00 2001 From: Jamie McClelland Date: Mon, 3 Apr 2017 13:44:32 -0400 Subject: [PATCH 1/2] CRM-20376 - ensure questions are labelled Q1, Q2, etc in pdf report. Also, replace deprecated method. --- CRM/Report/Form/Campaign/SurveyDetails.php | 33 +++++++++++++++------- 1 file changed, 23 insertions(+), 10 deletions(-) diff --git a/CRM/Report/Form/Campaign/SurveyDetails.php b/CRM/Report/Form/Campaign/SurveyDetails.php index 235ded902be8..e17839805697 100644 --- a/CRM/Report/Form/Campaign/SurveyDetails.php +++ b/CRM/Report/Form/Campaign/SurveyDetails.php @@ -53,6 +53,10 @@ class CRM_Report_Form_Campaign_SurveyDetails extends CRM_Report_Form { private static $_surveyRespondentStatus; + // Survey Question titles are overridden when in print or pdf mode to + // say Q1, Q2 instead of the full title - to save space. + private $_columnTitleOverrides = array(); + /** */ /** @@ -203,7 +207,7 @@ public function __construct() { ), 'grouping' => 'survey-activity-fields', ), - ) + $this->addAddressFields(); + ) + $this->getAddressColumns(); parent::__construct(); } @@ -239,9 +243,16 @@ public function select() { } $select[] = "{$field['dbAlias']} as {$tableName}_{$fieldName}"; + + // Set default title + $title = CRM_Utils_Array::value('title', $field); + // Check for an override. + if (!empty($this->_columnTitleOverrides["{$tableName}_{$fieldName}"])) { + $title = $this->_columnTitleOverrides["{$tableName}_{$fieldName}"]; + } + $this->_columnHeaders["{$tableName}_{$fieldName}"]['title'] = $title; + $this->_selectAliases[] = "{$tableName}_{$fieldName}"; - $this->_columnHeaders["{$tableName}_{$fieldName}"]['title'] = CRM_Utils_Array::value('title', $field); - $this->_columnHeaders["{$tableName}_{$fieldName}"]['type'] = CRM_Utils_Array::value('type', $field); } } } @@ -754,20 +765,22 @@ private function _addSurveyResponseColumns() { if (!is_array(CRM_Utils_Array::value('fields', $this->_columns[$resTable]))) { $this->_columns[$resTable]['fields'] = array(); } - if (array_key_exists($fieldName, $this->_columns[$resTable]['fields'])) { - $this->_columns[$resTable]['fields'][$fieldName]['required'] = TRUE; - $this->_columns[$resTable]['fields'][$fieldName]['isSurveyResponseField'] = TRUE; - continue; - } - $title = $responseFields[$fieldName]['title']; if (in_array($this->_outputMode, array( 'print', 'pdf', ))) { - $title = 'Q' . $fildCnt++; + $this->_columnTitleOverrides["{$resTable}_{$fieldName}"] = 'Q' . $fildCnt; + $fildCnt++; + } + + if (array_key_exists($fieldName, $this->_columns[$resTable]['fields'])) { + $this->_columns[$resTable]['fields'][$fieldName]['required'] = TRUE; + $this->_columns[$resTable]['fields'][$fieldName]['isSurveyResponseField'] = TRUE; + continue; } + $title = $responseFields[$fieldName]['title']; $fldType = 'CRM_Utils_Type::T_STRING'; if ($response->time_format) { $fldType = CRM_Utils_Type::T_TIMESTAMP; From d06b0fea770d90c57f189d7392ac95d6866b78ae Mon Sep 17 00:00:00 2001 From: Jamie McClelland Date: Wed, 5 Apr 2017 10:49:32 -0400 Subject: [PATCH 2/2] CRM-20376 - fix typo in variable name. --- CRM/Report/Form/Campaign/SurveyDetails.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/CRM/Report/Form/Campaign/SurveyDetails.php b/CRM/Report/Form/Campaign/SurveyDetails.php index e17839805697..d5c7b58e69f2 100644 --- a/CRM/Report/Form/Campaign/SurveyDetails.php +++ b/CRM/Report/Form/Campaign/SurveyDetails.php @@ -748,7 +748,7 @@ private function _addSurveyResponseColumns() { WHERE cf.id IN ( ' . implode(' , ', $responseFieldIds) . ' ) ORDER BY cf.weight'; $response = CRM_Core_DAO::executeQuery($query); - $fildCnt = 1; + $fieldCnt = 1; while ($response->fetch()) { $resTable = $response->table_name; $fieldName = "custom_{$response->cfId}"; @@ -770,8 +770,8 @@ private function _addSurveyResponseColumns() { 'print', 'pdf', ))) { - $this->_columnTitleOverrides["{$resTable}_{$fieldName}"] = 'Q' . $fildCnt; - $fildCnt++; + $this->_columnTitleOverrides["{$resTable}_{$fieldName}"] = 'Q' . $fieldCnt; + $fieldCnt++; } if (array_key_exists($fieldName, $this->_columns[$resTable]['fields'])) {