self::sanitize_mode( $decoded['toc'] ?? null ), 'faq' => self::sanitize_mode( $decoded['faq'] ?? null ), 'topicExpansion' => self::sanitize_mode( $decoded['topicExpansion'] ?? null ), ); } /** * Decode a JSON string or array payload. * * @param mixed $value Raw payload. * * @return array */ private static function decode( $value ): array { if ( is_array( $value ) ) { return $value; } if ( is_string( $value ) && '' !== trim( $value ) ) { $decoded = json_decode( $value, true ); if ( is_array( $decoded ) ) { return $decoded; } } return array(); } /** * Sanitize one mode string. * * @param mixed $value Raw value. * * @return string */ private static function sanitize_mode( $value ): string { if ( ! is_scalar( $value ) ) { return 'auto'; } $mode = strtolower( (string) $value ); return in_array( $mode, array( 'auto', 'manual', 'disabled' ), true ) ? $mode : 'auto'; } }