$value) { if ($key == 'refer_url') { $directValues[$key] = sanitize_url($value); } else { $directValues[$key] = sanitize_text_field($value); } } $allowedKeys = self::allowedUtmParameterKey(); $allowedMetaValues = []; foreach ($metaValues as $key => $value) { if (!in_array($key, $allowedKeys)) { continue; } $allowedMetaValues[$key] = sanitize_text_field($value); } $directValues['meta'] = $allowedMetaValues; $hasValues = array_filter($directValues) || array_filter($allowedMetaValues); $oldOperation = OrderOperation::query()->where('order_id', $orderId)->first(); if (empty($oldOperation)) { OrderOperation::query()->create( array_merge($directValues, ['order_id' => $orderId]) ); } else { $directValues['meta'] = Arr::mergeMissingValues($directValues['meta'], $oldOperation->meta); Arr::mergeMissingValues($directValues, Arr::except($oldOperation->toArray(), 'meta')); $directValues = array_merge($directValues); $oldOperation->update($directValues); } } public static function getUtmDataOfRequest(): array { $requestData = App::request()->all(); $requestUtmData = Arr::get($requestData, 'utm_data', []); $sanitizedUtmData = []; // Sanitize UTM data foreach ($requestUtmData as $utmKey => $utmValue) { $sanitizedKey = sanitize_text_field($utmKey); $sanitizedUtmData[$sanitizedKey] = sanitize_text_field($utmValue); } return $sanitizedUtmData; } }