From dd86c8251972f7ca4fdba0cdb1dd2c257ed8ec77 Mon Sep 17 00:00:00 2001 From: Jaap Jansma <jaap.jansma@civicoop.org> Date: Tue, 29 Oct 2019 08:01:39 +0100 Subject: [PATCH] #19 added case id field on the activity source --- CHANGELOG.md | 1 + .../DataProcessor/DataSpecification/Utils.php | 4 ++-- .../Source/Activity/ActivitySource.php | 23 +++++++++++++++---- 3 files changed, 22 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2773a6c9..d684c62d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,6 +18,7 @@ * Added option to expand criteria forms on search forms. * Added a Date field. * Added function to clone a data processor. +* Added Case ID field on the activity source. # Version 1.0.7 diff --git a/Civi/DataProcessor/DataSpecification/Utils.php b/Civi/DataProcessor/DataSpecification/Utils.php index 343b200d..8258012a 100644 --- a/Civi/DataProcessor/DataSpecification/Utils.php +++ b/Civi/DataProcessor/DataSpecification/Utils.php @@ -93,7 +93,7 @@ class Utils { continue; } foreach ($customGroup['fields'] as $field) { - if (!$onlySearchAbleFields || $field['is_searchable']) { + if (!$onlySearchAbleFields || (isset($field['is_searchable']) && $field['is_searchable'])) { $alias = $aliasPrefix . $customGroup['name'] . '_' . $field['name']; $customFieldSpec = new CustomFieldSpecification( $customGroup['name'], $customGroup['table_name'], $customGroup['title'], @@ -106,4 +106,4 @@ class Utils { } } -} \ No newline at end of file +} diff --git a/Civi/DataProcessor/Source/Activity/ActivitySource.php b/Civi/DataProcessor/Source/Activity/ActivitySource.php index 766524d1..ff174b49 100644 --- a/Civi/DataProcessor/Source/Activity/ActivitySource.php +++ b/Civi/DataProcessor/Source/Activity/ActivitySource.php @@ -28,6 +28,11 @@ class ActivitySource extends AbstractCivicrmEntitySource { */ protected $activityContactDataFlow; + /** + * @var SqlTableDataFlow + */ + protected $activityCaseDataFlow; + public function __construct() { parent::__construct(); @@ -38,6 +43,10 @@ class ActivitySource extends AbstractCivicrmEntitySource { // Create the activity contact data flow and data flow description $this->activityContactDataFlow = new SqlTableDataFlow('civicrm_activity_contact', $this->getSourceName().'_activity_contact'); DataSpecificationUtils::addDAOFieldsToDataSpecification('CRM_Activity_DAO_ActivityContact', $this->activityContactDataFlow->getDataSpecification(), array('id'), '', 'activity_contact_', E::ts('Activity Contact :: ')); + + // Create the activity contact data flow and data flow description + $this->activityCaseDataFlow = new SqlTableDataFlow('civicrm_case_activity', $this->getSourceName().'_activity_case'); + DataSpecificationUtils::addDAOFieldsToDataSpecification('CRM_Case_DAO_CaseActivity', $this->activityCaseDataFlow->getDataSpecification(), array('id', 'activity_id'), '', 'activity_case_', E::ts('Case :: ')); } /** @@ -93,14 +102,19 @@ class ActivitySource extends AbstractCivicrmEntitySource { protected function getEntityDataFlow() { $activityDataDescription = new DataFlowDescription($this->activityDataFlow); - $join = new SimpleJoin($this->activityDataFlow->getTableAlias(), 'id', $this->activityContactDataFlow->getTableAlias(), 'activity_id'); - $join->setDataProcessor($this->dataProcessor); - $activityContactDataDescription = new DataFlowDescription($this->activityContactDataFlow, $join); + $contactJJoin = new SimpleJoin($this->activityDataFlow->getTableAlias(), 'id', $this->activityContactDataFlow->getTableAlias(), 'activity_id'); + $contactJJoin->setDataProcessor($this->dataProcessor); + $activityContactDataDescription = new DataFlowDescription($this->activityContactDataFlow, $contactJJoin); + + $caseJoin = new SimpleJoin($this->activityDataFlow->getTableAlias(), 'id', $this->activityCaseDataFlow->getTableAlias(), 'activity_id', 'LEFT'); + $caseJoin->setDataProcessor($this->dataProcessor); + $activityCaseDataDescription = new DataFlowDescription($this->activityCaseDataFlow, $caseJoin); // Create the subquery data flow $entityDataFlow = new SubqueryDataFlow($this->getSourceName(), $this->getTable(), $this->getSourceName()); $entityDataFlow->addSourceDataFlow($activityDataDescription); $entityDataFlow->addSourceDataFlow($activityContactDataDescription); + $entityDataFlow->addSourceDataFlow($activityCaseDataDescription); return $entityDataFlow; } @@ -143,6 +157,7 @@ class ActivitySource extends AbstractCivicrmEntitySource { DataSpecificationUtils::addDAOFieldsToDataSpecification($daoClass, $dataSpecification, $fieldsToSkip, '', $aliasPrefix); DataSpecificationUtils::addDAOFieldsToDataSpecification('CRM_Activity_DAO_ActivityContact', $dataSpecification, array('id', 'activity_id'), 'activity_contact_', $aliasPrefix, E::ts('Activity contact :: ')); + DataSpecificationUtils::addDAOFieldsToDataSpecification('CRM_Case_DAO_CaseActivity', $dataSpecification, array('id', 'activity_id'), 'activity_case_', $aliasPrefix); } -} \ No newline at end of file +} -- GitLab