diff --git a/erv_platform b/erv_platform index 6b1979c9..b06fdb73 160000 --- a/erv_platform +++ b/erv_platform @@ -1 +1 @@ -Subproject commit 6b1979c93fce164c4dfa36571919064daf0ddd48 +Subproject commit b06fdb731c5cd2290c82895e4d57e9bacb0e7af4 diff --git a/include/Webservices/CreateWebProject.php b/include/Webservices/CreateWebProject.php index 44080578..40a698f6 100644 --- a/include/Webservices/CreateWebProject.php +++ b/include/Webservices/CreateWebProject.php @@ -26,17 +26,22 @@ vimport ('includes.runtime.LanguageHandler'); */ function vtws_createwebproject($policy_number, $contact_id, $period_start = '', $period_end = '', $user = false) { + // ✅ Очищаем буфер вывода и подавляем warnings + ob_start(); + $logstring = date("Y-m-d H:i:s").' '.json_encode($_REQUEST); file_put_contents('logs/CreateWebProject.log', $logstring.PHP_EOL, FILE_APPEND); // Проверка обязательных полей if(empty($policy_number)){ + ob_end_clean(); // Очищаем буфер перед exception $logstring = date("Y-m-d H:i:s").' Не указано обязательное поле: policy_number (cf_1885)'; file_put_contents('logs/CreateWebProject.log', $logstring.PHP_EOL, FILE_APPEND); throw new WebServiceException(WebServiceErrorCode::$INVALIDID, "Не указан номер полиса"); } if(empty($contact_id)){ + ob_end_clean(); // Очищаем буфер перед exception $logstring = date("Y-m-d H:i:s").' Не указано обязательное поле: contact_id'; file_put_contents('logs/CreateWebProject.log', $logstring.PHP_EOL, FILE_APPEND); throw new WebServiceException(WebServiceErrorCode::$INVALIDID, "Не указан ID контакта"); @@ -101,13 +106,14 @@ function vtws_createwebproject($policy_number, $contact_id, $period_start = '', $logstring = date('Y-m-d H:i:s').' ✅ Создан новый Web Проект с id '.$output.PHP_EOL; file_put_contents('logs/CreateWebProject.log', $logstring, FILE_APPEND); } catch (WebServiceException $ex) { + ob_end_clean(); // Очищаем буфер перед exception $logstring = date('Y-m-d H:i:s').' ❌ Ошибка создания: '.$ex->getMessage().PHP_EOL; file_put_contents('logs/CreateWebProject.log', $logstring, FILE_APPEND); throw $ex; } } - // Возвращаем JSON с флагом is_new + // Возвращаем массив с флагом is_new (vTiger сам сделает json_encode!) $result = array( 'project_id' => $output, 'is_new' => $isNew @@ -116,7 +122,8 @@ function vtws_createwebproject($policy_number, $contact_id, $period_start = '', $logstring = date('Y-m-d H:i:s').' Return: '.json_encode($result).PHP_EOL; file_put_contents('logs/CreateWebProject.log', $logstring, FILE_APPEND); - return json_encode($result); -} -?> - + // ✅ Очищаем буфер (удаляем все warnings/notices) + ob_end_clean(); + + return $result; // ← Массив, НЕ json_encode! +} \ No newline at end of file diff --git a/webservice.php b/webservice.php index a43326a6..75c8b4a1 100644 --- a/webservice.php +++ b/webservice.php @@ -81,6 +81,7 @@ $state->result = $data; unset($state->error); $output = $operationManager->encode($state); + echo $output; } @@ -88,6 +89,9 @@ $logstring = date('Y-m-d H:i:s').' '.json_encode($_REQUEST).PHP_EOL; file_put_contents('logs/webservice.log', $logstring, FILE_APPEND); + // ✅ Очищаем буфер от BOM, который мог появиться при загрузке include файлов + ob_clean(); + $operation = vtws_getParameter($_REQUEST, "operation"); $operation = strtolower($operation); $format = vtws_getParameter($_REQUEST, "format","json");