Fatal error in Activity Details report when Sorting uses Section Header
Steps to reproduce on dmaster:
- Enable debug/backtrace options for better error reporting (this is not required to achieve the relevant fatal error).
- Open the Activity Details report at http://drupal-demo.amp.l/civicrm/report/instance/3?reset=1&output=criteria
- Open the Sort tab and enable the 'Section Header / group by' option for any sort-by column; click Refresh results to reload the report with this configuration change.
- Observe a fatal error page with the following Error Details:
Database Error Code: Table 'dmasterciv_jqcej.Array' doesn't exist, 1146
Additional Details:
Array
(
[callback] => Array
(
[0] => CRM_Core_Error
[1] => handle
)
[code] => -18
[message] => DB Error: no such table
[mode] => 16
[debug_info] => SELECT ANY_VALUE(ifnull(civicrm_activity_activity_date_time_date, '')) as civicrm_activity_activity_date_time_date, ANY_VALUE(ifnull(civicrm_contact_contact_assignee, '')) as civicrm_contact_contact_assignee, ANY_VALUE(ifnull(civicrm_contact_contact_target, '')) as civicrm_contact_contact_target, ANY_VALUE(ifnull(civicrm_contact_contact_source_id, '')) as civicrm_contact_contact_source_id, ANY_VALUE(ifnull(civicrm_contact_contact_assignee_id, '')) as civicrm_contact_contact_assignee_id, ANY_VALUE(ifnull(civicrm_contact_contact_target_id, '')) as civicrm_contact_contact_target_id, ANY_VALUE(ifnull(civicrm_activity_id, '')) as civicrm_activity_id, ANY_VALUE(ifnull(civicrm_activity_source_record_id, '')) as civicrm_activity_source_record_id, ANY_VALUE(ifnull(civicrm_activity_activity_type_id, '')) as civicrm_activity_activity_type_id, ANY_VALUE(ifnull(civicrm_activity_activity_subject, '')) as civicrm_activity_activity_subject, ANY_VALUE(ifnull(civicrm_activity_activity_date_time, '')) as civicrm_activity_activity_date_time, ANY_VALUE(ifnull(civicrm_activity_status_id, '')) as civicrm_activity_status_id , count(DISTINCT civicrm_activity_id) as ct from Array group by civicrm_activity_activity_date_time_date [nativecode=1146 ** Table 'dmasterciv_jqcej.Array' doesn't exist]
[type] => DB_Error
[user_info] => SELECT ANY_VALUE(ifnull(civicrm_activity_activity_date_time_date, '')) as civicrm_activity_activity_date_time_date, ANY_VALUE(ifnull(civicrm_contact_contact_assignee, '')) as civicrm_contact_contact_assignee, ANY_VALUE(ifnull(civicrm_contact_contact_target, '')) as civicrm_contact_contact_target, ANY_VALUE(ifnull(civicrm_contact_contact_source_id, '')) as civicrm_contact_contact_source_id, ANY_VALUE(ifnull(civicrm_contact_contact_assignee_id, '')) as civicrm_contact_contact_assignee_id, ANY_VALUE(ifnull(civicrm_contact_contact_target_id, '')) as civicrm_contact_contact_target_id, ANY_VALUE(ifnull(civicrm_activity_id, '')) as civicrm_activity_id, ANY_VALUE(ifnull(civicrm_activity_source_record_id, '')) as civicrm_activity_source_record_id, ANY_VALUE(ifnull(civicrm_activity_activity_type_id, '')) as civicrm_activity_activity_type_id, ANY_VALUE(ifnull(civicrm_activity_activity_subject, '')) as civicrm_activity_activity_subject, ANY_VALUE(ifnull(civicrm_activity_activity_date_time, '')) as civicrm_activity_activity_date_time, ANY_VALUE(ifnull(civicrm_activity_status_id, '')) as civicrm_activity_status_id , count(DISTINCT civicrm_activity_id) as ct from Array group by civicrm_activity_activity_date_time_date [nativecode=1146 ** Table 'dmasterciv_jqcej.Array' doesn't exist]
[to_string] => [db_error: message="DB Error: no such table" code=-18 mode=callback callback=CRM_Core_Error::handle prefix="" info="SELECT ANY_VALUE(ifnull(civicrm_activity_activity_date_time_date, '')) as civicrm_activity_activity_date_time_date, ANY_VALUE(ifnull(civicrm_contact_contact_assignee, '')) as civicrm_contact_contact_assignee, ANY_VALUE(ifnull(civicrm_contact_contact_target, '')) as civicrm_contact_contact_target, ANY_VALUE(ifnull(civicrm_contact_contact_source_id, '')) as civicrm_contact_contact_source_id, ANY_VALUE(ifnull(civicrm_contact_contact_assignee_id, '')) as civicrm_contact_contact_assignee_id, ANY_VALUE(ifnull(civicrm_contact_contact_target_id, '')) as civicrm_contact_contact_target_id, ANY_VALUE(ifnull(civicrm_activity_id, '')) as civicrm_activity_id, ANY_VALUE(ifnull(civicrm_activity_source_record_id, '')) as civicrm_activity_source_record_id, ANY_VALUE(ifnull(civicrm_activity_activity_type_id, '')) as civicrm_activity_activity_type_id, ANY_VALUE(ifnull(civicrm_activity_activity_subject, '')) as civicrm_activity_activity_subject, ANY_VALUE(ifnull(civicrm_activity_activity_date_time, '')) as civicrm_activity_activity_date_time, ANY_VALUE(ifnull(civicrm_activity_status_id, '')) as civicrm_activity_status_id , count(DISTINCT civicrm_activity_id) as ct from Array group by civicrm_activity_activity_date_time_date [nativecode=1146 ** Table 'dmasterciv_jqcej.Array' doesn't exist]"]
)
- Also observe this PHP Notice:
Array to string conversion in CRM_Report_Form_Activity->sectionTotals() (line 1083 of /srv/buildkit/build/dmaster/sites/all/modules/civicrm/CRM/Report/Form/Activity.php).
Best guess what's going on:
The activity Details report assumes the name of a temporary table is stored in $this->temporaryTables['activity_temp_table']
, but that's really an array. The table name is actually stored in $this->temporaryTables['activity_temp_table']['name']
.