*/ public static function buildEntryData(int $formId): array { return [ 'formId' => $formId, 'userId' => get_current_user_id() ?: null, 'status' => Entry::DEFAULT_STATUS, 'ipAddress' => self::getClientIpAddress(), 'userAgent' => self::getUserAgent(), 'sourceURL' => self::getSourceURL(), ]; } /** * Get the value of a parent subfield. * * @param int $fieldId * @param int|null $parentId * @param array $submissionData * @param array $parentSubfieldKeys * @return mixed|null */ public static function getParentSubfieldValue( int $fieldId, ?int $parentId, array $submissionData, array $parentSubfieldKeys ) { if ($parentId && isset($parentSubfieldKeys[$fieldId])) { $subKey = $parentSubfieldKeys[$fieldId]; if (isset($submissionData[$parentId][$subKey])) { return $submissionData[$parentId][$subKey]; } } return null; } /** * Get the compound field value by combining child field values. * * @param int $fieldId * @param array> $parentChildrenMap * @param array $parentSubfieldKeys * @param array $submissionData * @return string */ public static function getCompoundFieldValue( int $fieldId, array $parentChildrenMap, array $parentSubfieldKeys, array $submissionData ): string { $childValues = []; if (!empty($parentChildrenMap[$fieldId])) { foreach ($parentChildrenMap[$fieldId] as $childId) { $subKey = $parentSubfieldKeys[$childId] ?? null; if ($subKey && isset($submissionData[$fieldId][$subKey])) { $val = $submissionData[$fieldId][$subKey]; if ($val !== '') { $childValues[] = $val; } } } } return implode(' ', $childValues); } /** * Get the default field value from submission data. * * @param int $fieldId * @param array $submissionData * @return mixed|string */ public static function getDefaultFieldValue(int $fieldId, array $submissionData) { return $submissionData[$fieldId] ?? ''; } /** * Build parent-children map from form fields. * * @param array $formFields * @return array> */ public static function buildParentChildrenMap(array $formFields): array { $parentChildrenMap = []; foreach ($formFields as $field) { $parentId = method_exists($field, 'getParentId') ? $field->getParentId() : null; if ($parentId && $parentId > 0) { $parentChildrenMap[$parentId][] = $field->getId(); } } return $parentChildrenMap; } /** * Build subfield key map for each parent. * * @param array> $parentChildrenMap * @param array $submissionData * @return array */ public static function buildParentSubfieldKeys(array $parentChildrenMap, array $submissionData): array { $parentSubfieldKeys = []; foreach ($parentChildrenMap as $parentId => $childIds) { $parentValue = $submissionData[$parentId] ?? []; $keys = array_keys($parentValue); foreach ($childIds as $i => $childId) { $parentSubfieldKeys[$childId] = $keys[$i] ?? null; } } return $parentSubfieldKeys; } }