diff --git a/src/app/resource/controllers/ResController.php b/src/app/resource/controllers/ResController.php index bfc3e978442bb13ec245dbcafe54e0d733e0301b..110d6a5c9402a7b2f0dca9f5fa4875f4a892ced2 100755 --- a/src/app/resource/controllers/ResController.php +++ b/src/app/resource/controllers/ResController.php @@ -1410,39 +1410,17 @@ class ResController extends ResourceControlController } } - // Checking if model has a custom field. If yes, the customs are reset in the update, if not, we set it to an empty JSON object - $newModelHasCustomFields = false; - foreach ($newModelFields as $newModelField) { - if (strpos($newModelField, 'indexingCustomField_') !== false) { - $newModelHasCustomFields = true; - break; - } - } - - $oldModelHasCustomFields = false; - foreach ($oldFieldList as $oldModelField) { - if (strpos($oldModelField, 'indexingCustomField_') !== false) { - $oldModelHasCustomFields = true; - break; - } - } - - $postSet = []; - if ($oldModelHasCustomFields && !$newModelHasCustomFields) { - $set['custom_fields'] = '{}'; - } else { - $customFieldsToDelete = array_diff($oldFieldList, $newModelFields); - $customFieldsToDelete = array_filter($customFieldsToDelete, function ($field) { - return strpos($field, 'indexingCustomField_') !== false; - }); - $customFieldsToDelete = array_map(function ($field) { - return explode('_', $field)[1]; - }, $customFieldsToDelete); - - $postSet['custom_fields'] = 'custom_fields '; - foreach ($customFieldsToDelete as $item) { - $postSet['custom_fields'] .= " - '$item'"; - } + $customFieldsToDelete = array_diff($oldFieldList, $newModelFields); + $customFieldsToDelete = array_filter($customFieldsToDelete, function ($field) { + return strpos($field, 'indexingCustomField_') !== false; + }); + $customFieldsToDelete = array_map(function ($field) { + return explode('_', $field)[1]; + }, $customFieldsToDelete); + + $postSet = ['custom_fields' => 'custom_fields ']; + foreach ($customFieldsToDelete as $item) { + $postSet['custom_fields'] .= " - '$item'"; } if (!empty($set) || !empty($postSet)) { diff --git a/src/app/resource/controllers/StoreController.php b/src/app/resource/controllers/StoreController.php index 9e36396ea604912e9890b5296a710dff4bf0e715..9daaf2aff82049408d613c6c9affa9eafd5f00e2 100755 --- a/src/app/resource/controllers/StoreController.php +++ b/src/app/resource/controllers/StoreController.php @@ -268,7 +268,7 @@ class StoreController 'modification_date' => 'CURRENT_TIMESTAMP' ]; - $resource = ResModel::getById(['resId' => $args['resId'], 'select' => ['version', 'alt_identifier', 'external_id', 'category_id', 'type_id', 'destination']]); + $resource = ResModel::getById(['resId' => $args['resId'], 'select' => ['version', 'alt_identifier', 'external_id', 'category_id', 'type_id', 'destination', 'custom_fields']]); if (!empty($args['modelId'])) { $preparedData['model_id'] = $args['modelId']; @@ -362,6 +362,14 @@ class StoreController $args['customFields'][$key] = $value; } } + $customFields = json_decode($resource['custom_fields'], true); + $technicalCustoms = CustomFieldModel::get(['select' => ['id'], 'where' => ['mode = ?'], 'data' => ['technical']]); + $technicalCustoms = array_column($technicalCustoms, 'id'); + foreach ($technicalCustoms as $technicalCustom) { + if (!empty($customFields[$technicalCustom])) { + $args['customFields'][$technicalCustom] = $customFields[$technicalCustom]; + } + } $preparedData['custom_fields'] = json_encode($args['customFields']); }