| 1 |
<?php |
| 2 |
|
| 3 |
declare(strict_types=1); |
| 4 |
|
| 5 |
/** |
| 6 |
* REST API Routes Registry |
| 7 |
* |
| 8 |
* All API routes are registered under the 'yatra/v1' namespace. |
| 9 |
* Each controller defines its own routes in register_routes() method. |
| 10 |
* |
| 11 |
* This file provides a central registry of all API controllers. |
| 12 |
* |
| 13 |
* @package Yatra |
| 14 |
*/ |
| 15 |
|
| 16 |
// Ensure we're in WordPress context |
| 17 |
if (!defined('ABSPATH')) { |
| 18 |
exit; |
| 19 |
} |
| 20 |
|
| 21 |
/** |
| 22 |
* API Controllers Registry |
| 23 |
* |
| 24 |
* Organized by domain/module for easy navigation. |
| 25 |
* Comment out a controller to disable its endpoints. |
| 26 |
*/ |
| 27 |
$controllers = [ |
| 28 |
|
| 29 |
// ============================================= |
| 30 |
// CORE RESOURCES |
| 31 |
// ============================================= |
| 32 |
\Yatra\Controllers\TripController::class, |
| 33 |
\Yatra\Controllers\ActivityController::class, |
| 34 |
\Yatra\Controllers\DestinationController::class, |
| 35 |
|
| 36 |
// ============================================= |
| 37 |
// TAXONOMY & CLASSIFICATION |
| 38 |
// ============================================= |
| 39 |
\Yatra\Controllers\TripCategoryController::class, |
| 40 |
\Yatra\Controllers\DifficultyLevelController::class, |
| 41 |
\Yatra\Controllers\TravelerCategoryController::class, |
| 42 |
|
| 43 |
// ============================================= |
| 44 |
// ITEMS & INVENTORY |
| 45 |
// ============================================= |
| 46 |
\Yatra\Controllers\ItemTypeController::class, |
| 47 |
\Yatra\Controllers\ItemController::class, |
| 48 |
|
| 49 |
// ============================================= |
| 50 |
// TRIP DETAILS |
| 51 |
// ============================================= |
| 52 |
\Yatra\Controllers\AvailabilityController::class, |
| 53 |
\Yatra\Controllers\RecurringAvailabilityController::class, |
| 54 |
\Yatra\Controllers\TripAvailabilityController::class, // Departures System (FREE) |
| 55 |
\Yatra\Controllers\TripDownloadController::class, // Downloads System (FREE) |
| 56 |
\Yatra\Controllers\AttributeController::class, // Attributes System (FREE) |
| 57 |
\Yatra\Controllers\ItineraryController::class, |
| 58 |
\Yatra\Controllers\DiscountController::class, |
| 59 |
|
| 60 |
// ============================================= |
| 61 |
// BOOKING & PAYMENTS |
| 62 |
// ============================================= |
| 63 |
\Yatra\Controllers\BookingsController::class, |
| 64 |
\Yatra\Controllers\PaymentController::class, // Payment records management |
| 65 |
\Yatra\Controllers\BookingSessionController::class, |
| 66 |
\Yatra\Controllers\PaymentGatewayController::class, // Payment gateway operations |
| 67 |
|
| 68 |
// ============================================= |
| 69 |
// CUSTOMERS & CRM |
| 70 |
// ============================================= |
| 71 |
\Yatra\Controllers\CustomerController::class, |
| 72 |
\Yatra\Controllers\ReviewController::class, |
| 73 |
\Yatra\Controllers\EnquiryController::class, |
| 74 |
\Yatra\Controllers\SavedTripController::class, |
| 75 |
|
| 76 |
// ============================================= |
| 77 |
// AUTHENTICATION |
| 78 |
// ============================================= |
| 79 |
\Yatra\Controllers\AuthController::class, |
| 80 |
|
| 81 |
// ============================================= |
| 82 |
// ADMIN & SETTINGS |
| 83 |
// ============================================= |
| 84 |
\Yatra\Controllers\SettingsController::class, |
| 85 |
\Yatra\Controllers\ModuleController::class, |
| 86 |
// White Label routes live in yatra-pro/app/Modules/WhiteLabel/Controllers/ |
| 87 |
// and are registered by Pro's WhiteLabelModule::boot() at rest_api_init. |
| 88 |
\Yatra\Controllers\ReportsController::class, |
| 89 |
\Yatra\Controllers\ToolsController::class, |
| 90 |
\Yatra\Controllers\SampleDataController::class, |
| 91 |
\Yatra\Controllers\UsageTrackingController::class, |
| 92 |
\Yatra\Controllers\NoticeController::class, |
| 93 |
\Yatra\Controllers\NotificationCountsController::class, // Sidebar "new since last seen" badges |
| 94 |
|
| 95 |
]; |
| 96 |
|
| 97 |
// Debug: Check if BookingsController is in the array |
| 98 |
if (defined('WP_DEBUG') && WP_DEBUG) { |
| 99 |
} |
| 100 |
|
| 101 |
/** |
| 102 |
* Register all controller routes |
| 103 |
* |
| 104 |
* Each controller's register_routes() method is called to register |
| 105 |
* its endpoints with WordPress REST API. |
| 106 |
*/ |
| 107 |
foreach ($controllers as $controllerClass) { |
| 108 |
if (!class_exists($controllerClass)) { |
| 109 |
continue; |
| 110 |
} |
| 111 |
|
| 112 |
try { |
| 113 |
$controller = new $controllerClass(); |
| 114 |
|
| 115 |
if (method_exists($controller, 'register_routes')) { |
| 116 |
$controller->register_routes(); |
| 117 |
} |
| 118 |
} catch (\Throwable $e) { |
| 119 |
continue; |
| 120 |
} |
| 121 |
} |
| 122 |
|
| 123 |
try { |
| 124 |
(new \Yatra\Controllers\BlockEditorChoicesController())->register_routes(); |
| 125 |
} catch (\Throwable $e) { |
| 126 |
} |
| 127 |
|