diff --git a/Civi/DataProcessor/Output/UIOutputHelper.php b/Civi/DataProcessor/Output/UIOutputHelper.php index 836baf6b8d611d4eaf57295d193c7aea1199426a..cdab5ca242e4e78e2503c93e8a9b19bb0e3899ed 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 7c0b50c705c54064cba8fc327a4e11eeab2fedcb..34d16b74d76cdc93392662fe5e606b2c16329a23 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 a9047bd183c07ac2e767a530579b18ee5062c42b..10317fd861f9c9309d9d841e81fb74751ccd8b6a 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 22e6afc07639bac29da791ac3c0ebfd75710fb5a..a8ad730f6a71a6cf2a89493d1aeb52f4bbf77e95 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 ff25aceaaed3ef1e76cfc6ab7f790d69fb7d5cd3..29330b15160d5e2b0f0fe865ab8f1a0b25496371 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 4d93a0449e32d0c4c99a383e10e9e876f3bbe856..133030c9e09135c50facb43d0ecd2926ac4e275b 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); }