From 2b98b194cbc0d6ad1d849d10cb5adb36599174f7 Mon Sep 17 00:00:00 2001 From: Jaap Jansma <jaap.jansma@civicoop.org> Date: Wed, 12 Feb 2020 18:35:18 +0100 Subject: [PATCH] Fixed caching issues --- Civi/DataProcessor/Output/UIOutputHelper.php | 22 +++++++++++++++----- api/v3/DataProcessor.php | 1 + api/v3/DataProcessorField.php | 1 + api/v3/DataProcessorFilter.php | 1 + api/v3/DataProcessorOutput.php | 1 + api/v3/DataProcessorSource.php | 1 + 6 files changed, 22 insertions(+), 5 deletions(-) diff --git a/Civi/DataProcessor/Output/UIOutputHelper.php b/Civi/DataProcessor/Output/UIOutputHelper.php index 836baf6b..cdab5ca2 100644 --- a/Civi/DataProcessor/Output/UIOutputHelper.php +++ b/Civi/DataProcessor/Output/UIOutputHelper.php @@ -70,12 +70,21 @@ class UIOutputHelper { if (CIVICRM_UF === 'UnitTests') { return; } + $factory = dataprocessor_get_factory(); if ($op == 'delete') { $output = civicrm_api3('DataProcessorOutput', 'getsingle', ['id' => $id]); + $outputClass = $factory->getOutputByName($output['type']); + if ($outputClass instanceof UIOutputInterface) { + self::$rebuildMenu = TRUE; + } self::removeOutputFromNavigation($output['configuration']); } elseif ($op == 'edit') { $output = civicrm_api3('DataProcessorOutput', 'getsingle', ['id' => $id]); + $outputClass = $factory->getOutputByName($output['type']); + if ($outputClass instanceof UIOutputInterface) { + self::$rebuildMenu = TRUE; + } if (!isset($output['configuration']['navigation_id']) && !isset($params['configuration']['navigation_parent_path'])) { return; } @@ -97,11 +106,14 @@ class UIOutputHelper { } } } - elseif ($op == 'create' && isset($params['configuration']['navigation_parent_path'])) { - $dataProcessor = civicrm_api3('DataProcessor', 'getsingle', ['id' => $params['data_processor_id']]); - $configuration = self::createOrUpdateNavigationItem($params, $dataProcessor); - if ($configuration) { - $params['configuration'] = $configuration; + elseif ($op == 'create') { + self::$rebuildMenu = true; + if (isset($params['configuration']['navigation_parent_path'])) { + $dataProcessor = civicrm_api3('DataProcessor', 'getsingle', ['id' => $params['data_processor_id']]); + $configuration = self::createOrUpdateNavigationItem($params, $dataProcessor); + if ($configuration) { + $params['configuration'] = $configuration; + } } } } elseif ($objectName == 'DataProcessor' && $op == 'edit') { diff --git a/api/v3/DataProcessor.php b/api/v3/DataProcessor.php index 7c0b50c7..34d16b74 100644 --- a/api/v3/DataProcessor.php +++ b/api/v3/DataProcessor.php @@ -67,6 +67,7 @@ function civicrm_api3_data_processor_delete($params) { CRM_Dataprocessor_BAO_DataProcessorField::deleteWithDataProcessorId($params['id']); CRM_Dataprocessor_BAO_DataProcessorFilter::deleteWithDataProcessorId($params['id']); CRM_Dataprocessor_BAO_DataProcessorSource::deleteWithDataProcessorId($params['id']); + CRM_Dataprocessor_Utils_Cache::clearAllDataProcessorCaches(); return _civicrm_api3_basic_delete(_civicrm_api3_get_BAO(__FUNCTION__), $params); } diff --git a/api/v3/DataProcessorField.php b/api/v3/DataProcessorField.php index a9047bd1..10317fd8 100644 --- a/api/v3/DataProcessorField.php +++ b/api/v3/DataProcessorField.php @@ -56,6 +56,7 @@ function civicrm_api3_data_processor_field_create($params) { function civicrm_api3_data_processor_field_delete($params) { $dataProcessorId = civicrm_api3('DataProcessorField', 'getvalue', array('id' => $params['id'], 'return' => 'data_processor_id')); CRM_Dataprocessor_BAO_DataProcessor::updateAndChekStatus($dataProcessorId); + CRM_Dataprocessor_Utils_Cache::clearAllDataProcessorCaches(); return _civicrm_api3_basic_delete(_civicrm_api3_get_BAO(__FUNCTION__), $params); } diff --git a/api/v3/DataProcessorFilter.php b/api/v3/DataProcessorFilter.php index 22e6afc0..a8ad730f 100644 --- a/api/v3/DataProcessorFilter.php +++ b/api/v3/DataProcessorFilter.php @@ -56,6 +56,7 @@ function civicrm_api3_data_processor_filter_create($params) { function civicrm_api3_data_processor_filter_delete($params) { $dataProcessorId = civicrm_api3('DataProcessorFilter', 'getvalue', array('id' => $params['id'], 'return' => 'data_processor_id')); CRM_Dataprocessor_BAO_DataProcessor::updateAndChekStatus($dataProcessorId); + CRM_Dataprocessor_Utils_Cache::clearAllDataProcessorCaches(); return _civicrm_api3_basic_delete(_civicrm_api3_get_BAO(__FUNCTION__), $params); } diff --git a/api/v3/DataProcessorOutput.php b/api/v3/DataProcessorOutput.php index ff25acea..29330b15 100644 --- a/api/v3/DataProcessorOutput.php +++ b/api/v3/DataProcessorOutput.php @@ -30,6 +30,7 @@ function civicrm_api3_data_processor_output_create($params) { $return = _civicrm_api3_basic_create(_civicrm_api3_get_BAO(__FUNCTION__), $params); $dataProcessorId = civicrm_api3('DataProcessorOutput', 'getvalue', array('id' => $return['id'], 'return' => 'data_processor_id')); CRM_Dataprocessor_BAO_DataProcessor::updateAndChekStatus($dataProcessorId); + CRM_Dataprocessor_Utils_Cache::clearAllDataProcessorCaches(); return $return; } diff --git a/api/v3/DataProcessorSource.php b/api/v3/DataProcessorSource.php index 4d93a044..133030c9 100644 --- a/api/v3/DataProcessorSource.php +++ b/api/v3/DataProcessorSource.php @@ -56,6 +56,7 @@ function civicrm_api3_data_processor_source_create($params) { function civicrm_api3_data_processor_source_delete($params) { $dataProcessorId = civicrm_api3('DataProcessorSource', 'getvalue', array('id' => $params['id'], 'return' => 'data_processor_id')); CRM_Dataprocessor_BAO_DataProcessor::updateAndChekStatus($dataProcessorId); + CRM_Dataprocessor_Utils_Cache::clearAllDataProcessorCaches(); return _civicrm_api3_basic_delete(_civicrm_api3_get_BAO(__FUNCTION__), $params); } -- GitLab