diff --git a/CRM/Dataprocessor/Utils/Importer.php b/CRM/Dataprocessor/Utils/Importer.php index 6324b9a4eab686fb5592e64f1e49ab08fcb87c53..e82cb254750b8de1661af2d4c1049a6c8af8cd07 100644 --- a/CRM/Dataprocessor/Utils/Importer.php +++ b/CRM/Dataprocessor/Utils/Importer.php @@ -71,41 +71,56 @@ class CRM_Dataprocessor_Utils_Importer { } CRM_Dataprocessor_BAO_DataProcessor::setDataProcessorToImportingState($data['name']); + try { + switch ($status) { + case CRM_Dataprocessor_Status::STATUS_IN_DATABASE: + // Update to overriden + if (!$overWriteInDatabase) { + civicrm_api3('DataProcessor', 'create', [ + 'id' => $data_processor_id, + 'status' => CRM_Dataprocessor_Status::STATUS_OVERRIDDEN, + 'source_file' => $filename, + ]); + $new_id = $data_processor_id; + $new_status = CRM_Dataprocessor_Status::STATUS_OVERRIDDEN; + } + else { + $new_id = self::importDataProcessor($data, $filename, $data_processor_id, CRM_Dataprocessor_Status::STATUS_IN_DATABASE); + $new_status = CRM_Dataprocessor_Status::STATUS_IN_DATABASE; + } + break; + case CRM_Dataprocessor_Status::STATUS_OVERRIDDEN: + if (!$overWriteInDatabase) { + $new_id = $data_processor_id; + $new_status = CRM_Dataprocessor_Status::STATUS_OVERRIDDEN; + } + else { + $new_id = self::importDataProcessor($data, $filename, $data_processor_id, CRM_Dataprocessor_Status::STATUS_OVERRIDDEN); + $new_status = CRM_Dataprocessor_Status::STATUS_OVERRIDDEN; + } + break; + default: + if (!$overWriteInDatabase) { + $new_id = self::importDataProcessor($data, $filename, $data_processor_id, CRM_Dataprocessor_Status::STATUS_IN_CODE); + $new_status = CRM_Dataprocessor_Status::STATUS_IN_CODE; + } + else { + $new_id = self::importDataProcessor($data, $filename, $data_processor_id, CRM_Dataprocessor_Status::STATUS_OVERRIDDEN); + $new_status = CRM_Dataprocessor_Status::STATUS_OVERRIDDEN; + } + break; + } + } catch (\Exception $e) { + $return = array( + 'original_id' => $data_processor_id, + 'new_id' => $new_id, + 'original_status' => $status, + 'new_status' => $new_status, + 'file' => $filename, + 'error' => $e->getMessage(), + ); - switch ($status) { - case CRM_Dataprocessor_Status::STATUS_IN_DATABASE: - // Update to overriden - if (!$overWriteInDatabase) { - civicrm_api3('DataProcessor', 'create', array( - 'id' => $data_processor_id, - 'status' => CRM_Dataprocessor_Status::STATUS_OVERRIDDEN, - 'source_file' => $filename, - )); - $new_id = $data_processor_id; - $new_status = CRM_Dataprocessor_Status::STATUS_OVERRIDDEN; - } else { - $new_id = self::importDataProcessor($data, $filename, $data_processor_id, CRM_Dataprocessor_Status::STATUS_IN_DATABASE); - $new_status = CRM_Dataprocessor_Status::STATUS_IN_DATABASE; - } - break; - case CRM_Dataprocessor_Status::STATUS_OVERRIDDEN: - if (!$overWriteInDatabase) { - $new_id = $data_processor_id; - $new_status = CRM_Dataprocessor_Status::STATUS_OVERRIDDEN; - } else { - $new_id = self::importDataProcessor($data, $filename, $data_processor_id, CRM_Dataprocessor_Status::STATUS_OVERRIDDEN); - $new_status = CRM_Dataprocessor_Status::STATUS_OVERRIDDEN; - } - break; - default: - if (!$overWriteInDatabase) { - $new_id = self::importDataProcessor($data, $filename, $data_processor_id, CRM_Dataprocessor_Status::STATUS_IN_CODE); - $new_status = CRM_Dataprocessor_Status::STATUS_IN_CODE; - } else { - $new_id = self::importDataProcessor($data, $filename, $data_processor_id, CRM_Dataprocessor_Status::STATUS_OVERRIDDEN); - $new_status = CRM_Dataprocessor_Status::STATUS_OVERRIDDEN; - } - break; + return $return; } $return = array( @@ -203,7 +218,7 @@ class CRM_Dataprocessor_Utils_Importer { // Remove all data processors which are in code or overridden but not imported $dao = CRM_Core_DAO::executeQuery("SELECT id, name FROM civicrm_data_processor WHERE id NOT IN (".implode($importedIds, ",").") AND status IN (".CRM_Dataprocessor_Status::STATUS_IN_CODE.", ".CRM_Dataprocessor_Status::STATUS_OVERRIDDEN.")"); while ($dao->fetch()) { - CRM_Dataprocessor_BAO_DataProcessor::deleteWithId($dao->id); + civicrm_api3('DataProcessor', 'delete', array('id' => $dao->id)); $return['deleted data processors'][] = $dao->id.": ".$dao->name; } return $return;