PluginProbe
Yatra – Travel Booking & Tour Operator Software / 3.0.16
Yatra – Travel Booking & Tour Operator Software v3.0.16
3.0.16 3.0.15 3.0.14 3.0.14.1 3.0.14.2 3.0.12 3.0.13 3.0.11 3.0.10 3.0.9 3.0.8 3.0.7 3.0.6 3.0.5 3.0.5.1 3.0.4 3.0.3 3.0.2.9 3.0.2.7 3.0.2.8 3.0.2.6 trunk 1.0.0 2.0.0 2.0.1 All 84 releases
← All changes | app/Services/SettingsService.php +27 -4 3.0.14.2 → 3.0.16 View file →
@@ -45,8 +45,10 @@
45 45 /** Primary brand color (hex) for trip/booking/listing frontend — see FrontendThemeCss */
46 46 'frontend_primary_color' => '#3b82f6',
47 47 /** Max width for Yatra trip/booking/listing containers (CSS length). Empty = theme.json / content width / filter. */
48 48 'frontend_container_max_width' => '',
49 + /** Trip listing card density: 'standard' | 'compact_mobile' | 'compact_all'. */
50 + 'frontend_listing_card_layout' => 'standard',
49 51
50 52 // Booking
51 53 'booking_base' => 'book',
52 54 'use_booking_page' => false,
@@ -55,8 +57,13 @@
55 57 'privacy_policy_page_id' => 0,
56 58 'enable_guest_booking' => true,
57 59 'booking_confirmation' => true,
58 60 'auto_confirm_bookings' => false,
61 + // Auto-confirm mode: none | online | all. Default 'online' (successful
62 + // online payment => confirmed). Behaviour is resolved via
63 + // yatra_get_auto_confirm_mode(), which uses the stored mode when set and
64 + // otherwise derives from the legacy auto_confirm_bookings boolean.
65 + 'auto_confirm_mode' => 'online',
59 66 'require_login' => false,
60 67 'allow_guest_checkout' => true,
61 68 // Hold guest bookings in `pending_verification` status until
62 69 // the customer clicks a magic link sent to the email they
@@ -74,8 +81,12 @@
74 81 // gracefully by skipping the cancellation paragraph or
75 82 // falling back to the per-trip cancellation_policy.
76 83 'booking_expiry_hours' => 24,
77 84 'booking_reminder_days' => 3,
85 + // Storefront booking horizon in months. 12 is the value that was
86 + // hard-coded before it became configurable, so a site that never
87 + // touches it behaves exactly as before. See yatra_get_availability_horizon_months().
88 + 'availability_horizon_months' => 12,
78 89 'allow_waitlist' => true,
79 90 'waitlist_auto_confirm' => false,
80 91 // Pro: when enabled, the single-trip date_specific mode renders a
81 92 // <select> of available departure dates instead of the flatpickr
@@ -233,8 +244,15 @@
233 244 'trip_category_base' => 'trip-category',
234 245
235 246 // SEO
236 247 'enable_sitemap' => true,
248 + // Which Yatra content types appear in /yatra-sitemap.xml. Defaults to
249 + // every type, so a site that never touches this keeps today's sitemap.
250 + 'sitemap_types' => ['archive', 'trip', 'destination', 'activity', 'category'],
251 + // Opt-in, and deliberately separate from the list above: dropping a type
252 + // from the sitemap is housekeeping, while noindex de-indexes pages that
253 + // may currently rank. That should never happen as a side effect.
254 + 'sitemap_noindex_excluded' => false,
237 255
238 256 // Advanced
239 257 'enable_debug_mode' => false,
240 258 'delete_data_on_uninstall' => false,
@@ -318,12 +336,17 @@
318 336 }
319 337
320 338 /**
321 339 * Get booking form configuration (merged with defaults)
322 - *
340 + *
341 + * @param int|null $tripId Trip being booked. When given, Pro's Dynamic Form
342 + * Field module resolves each section's per-trip
343 + * conditions for that trip (title, description and
344 + * field list); without it the full config is
345 + * returned, conditions included (the Settings editor).
323 346 * @return array
324 347 */
325 - public static function getBookingFormConfig(): array
348 + public static function getBookingFormConfig(?int $tripId = null): array
326 349 {
327 350 $saved_config = self::get('booking_form_config', []);
328 351 $default_config = self::getDefaultBookingFormConfig();
329 352
@@ -328,9 +351,9 @@
328 351 $default_config = self::getDefaultBookingFormConfig();
329 352
330 353 // If no saved config, return defaults (Pro may filter)
331 354 if (empty($saved_config)) {
332 - return apply_filters('yatra_booking_form_config', $default_config);
355 + return apply_filters('yatra_booking_form_config', $default_config, $tripId);
333 356 }
334 357
335 358 // Merge saved over defaults. IMPORTANT: `fields` is a positional list,
336 359 // so a naive array_replace_recursive() merges field-by-INDEX — which
@@ -420,9 +443,9 @@
420 443 $merged[$form_type] = $saved_section;
421 444 }
422 445 }
423 446
424 - return apply_filters('yatra_booking_form_config', $merged);
447 + return apply_filters('yatra_booking_form_config', $merged, $tripId);
425 448 }
426 449
427 450 private static function isEmailIdentityKey(string $key): bool
428 451 {