# yatra/3.0.5/app/Core/Handlers/AccountPageHandler.php

Yatra – Travel Booking &amp; Tour Operator Software, version 3.0.5. 94 lines.

- Page: https://pluginprobe.com/plugins/yatra/3.0.5/code/app/Core/Handlers/AccountPageHandler.php
- Raw: https://pluginprobe.com/plugins/yatra/3.0.5/raw/app/Core/Handlers/AccountPageHandler.php
- Modified: 2026-05-12T14:25:18+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/yatra/3.0.5/code/app/Core/Handlers/AccountPageHandler.php#L10-L20`.

```php
<?php

declare(strict_types=1);

namespace Yatra\Core\Handlers;

use Yatra\Core\Routing\UrlParser;
use Yatra\Services\SettingsService;

/**
 * Account Page Handler
 *
 * Handles account page requests
 */
class AccountPageHandler extends BasePageHandler
{
    /**
     * Handle account page request
     *
     * @param array $route_data Route data from RouteMatcher
     * @return bool True if handled successfully
     */
    public function handle(array $route_data): bool
    {
        $page = (string) ($route_data['page'] ?? 'dashboard');
        $base = (string) ($route_data['base'] ?? SettingsService::getAccountBase());

        if (!$this->isValidAccountPage($page)) {
            return false;
        }

        $tab = $this->accountPageToReactTab($page);
        $path = UrlParser::getCleanRequestPath();
        if ($path !== $base && str_starts_with($path, $base . '/')) {
            wp_safe_redirect(add_query_arg('tab', $tab, home_url('/' . $base . '/')));
            exit;
        }

        $currentTab = isset($_GET['tab']) ? sanitize_key((string) $_GET['tab']) : '';
        if ($currentTab !== '' && $currentTab !== $tab) {
            wp_safe_redirect(add_query_arg('tab', $tab));
            exit;
        }

        $this->setupPageEnvironment('singular', [
            'title' => __('My Account', 'yatra'),
            'post_type' => 'page',
            'post_name' => $base,
        ]);

        $this->setQueryVars([
            'yatra_account_page' => $page,
        ]);

        $GLOBALS['yatra_loading_react_account_page'] = true;

        return $this->selectTemplate('account-page', null, 'account');
    }

    /**
     * @return list<string>
     */
    private function validAccountPages(): array
    {
        return [
            'dashboard',
            'profile',
            'bookings',
            'payments',
            'documents',
            'saved-trips',
            'wishlist',
            'settings',
        ];
    }

    private function isValidAccountPage(string $page): bool
    {
        return in_array($page, $this->validAccountPages(), true);
    }

    private function accountPageToReactTab(string $page): string
    {
        switch ($page) {
            case 'wishlist':
                return 'saved-trips';
            case 'settings':
                return 'profile';
            default:
                return $page;
        }
    }
}

```
