From 6aeaa6386fc70df1e25dd5db29187d3ebfcefdec Mon Sep 17 00:00:00 2001 From: Patrick Figel Date: Mon, 16 Sep 2024 16:15:42 +0200 Subject: [PATCH] GP-44570 Fix and refactor task export --- CRM/Sqltasks/Page/Export.php | 42 ++++++++++++++++++++---------------- 1 file changed, 24 insertions(+), 18 deletions(-) diff --git a/CRM/Sqltasks/Page/Export.php b/CRM/Sqltasks/Page/Export.php index 29ff8e5..9abf926 100644 --- a/CRM/Sqltasks/Page/Export.php +++ b/CRM/Sqltasks/Page/Export.php @@ -28,33 +28,20 @@ public function run() { if ($task_id) { $task = CRM_Sqltasks_BAO_SqlTask::findById($task_id); - - $task_data = $task->exportData([ - 'abort_on_error', - 'config', - 'category', - 'description', - 'input_required', - 'last_modified', - 'parallel_exec', - 'run_permissions', - 'scheduled', - ]); - - $file_name = preg_replace('/[^A-Za-z0-9_\- ]/', '', $task->name) . '.sqltask'; - $file_content = json_encode($task_data, JSON_PRETTY_PRINT); + $file_name = $this->getTaskFileName($task); + $file_content = $this->getTaskFileContent($task); CRM_Utils_System::download($file_name, 'application/json', $file_content); } else { - $tasks = CRM_Sqltasks_Task::getAllTasks(); + $tasks = CRM_Sqltasks_BAO_SqlTask::generator(); if (!empty($tasks)) { $zip = new ZipArchive(); $fileURL = CRM_Core_Config::singleton()->uploadDir . "sqltasks_" . date('Ymd') . ".zip"; if ($zip->open($fileURL, ZIPARCHIVE::CREATE | ZIPARCHIVE::OVERWRITE) === TRUE) { foreach ($tasks as $task) { - $taskFileName = preg_replace('/[^A-Za-z0-9_\- ]/', '', $task->getAttribute('name')) . '.sqltask'; - $zip->addFromString($taskFileName, $task->exportConfiguration()); + $taskFileName = $this->getTaskFileName($task); + $zip->addFromString($taskFileName, $this->getTaskFileContent($task)); } $zip->close(); $null = NULL; @@ -79,4 +66,23 @@ public function run() { } } + private function getTaskFileContent(CRM_Sqltasks_BAO_SqlTask $task) { + $task_data = $task->exportData([ + 'abort_on_error', + 'config', + 'category', + 'description', + 'input_required', + 'last_modified', + 'parallel_exec', + 'run_permissions', + 'scheduled', + ]); + return json_encode($task_data, JSON_PRETTY_PRINT); + } + + private function getTaskFileName(CRM_Sqltasks_BAO_SqlTask $task) { + return preg_replace('/[^A-Za-z0-9_\- ]/', '', $task->name) . '.sqltask'; + } + }