[ 'title' => 'Yatra Services', 'description' => 'Add extra services which can be free or paid into your tour package', 'icon' => 'dashicons-admin-tools', 'benefits' => [ 'Add unlimited extra services to tours', 'Configure free or paid services', 'Service selection during booking', 'Flexible pricing options', 'Enhanced customer experience' ] ], 'availability_conditions' => [ 'title' => 'Availability Conditions', 'description' => 'Enable/disable tour packages on specific date conditions with advanced availability management', 'icon' => 'dashicons-calendar-alt', 'benefits' => [ 'Date-specific availability rules', 'Advanced booking conditions', 'Flexible tour scheduling', 'Seasonal availability control', 'Automated availability management' ] ], 'downloads' => [ 'title' => 'Yatra Downloads', 'description' => 'Add downloadable files like PDF, DOC, images, ZIP into your tour packages', 'icon' => 'dashicons-download', 'benefits' => [ 'Multiple file format support', 'Easy file management', 'Customer download access', 'Tour documentation sharing', 'Enhanced tour information' ] ], 'partial_payment' => [ 'title' => 'Yatra Partial Payment', 'description' => 'Enable deposit payment feature for tour bookings with flexible payment options', 'icon' => 'dashicons-money-alt', 'benefits' => [ 'Deposit payment system', 'Flexible payment schedules', 'Improved booking conversion', 'Customer payment flexibility', 'Better cash flow management' ] ], 'reviews_rating' => [ 'title' => 'Review and Rating', 'description' => 'Enable review and rating feature on tour packages to build trust and credibility', 'icon' => 'dashicons-star-filled', 'benefits' => [ 'Customer review system', 'Star rating display', 'Trust building features', 'Social proof elements', 'Enhanced tour credibility' ] ], 'payment_gateways' => [ 'title' => 'Premium Payment Gateways', 'description' => 'Multiple premium payment options including Stripe, Authorize.Net, Square, and Razorpay', 'icon' => 'dashicons-money', 'benefits' => [ 'Stripe payment integration', 'Authorize.Net support', 'Square payment gateway', 'Razorpay integration', 'Secure payment processing' ] ], 'downloads' => [ 'title' => 'Yatra Downloads', 'description' => 'Add downloadable files like PDF, DOC, images, ZIP into your tour packages', 'icon' => 'dashicons-download', 'benefits' => [ 'Multiple file format support', 'Easy file management', 'Customer download access', 'Tour documentation sharing', 'Enhanced tour information' ] ], 'google_calendar' => [ 'title' => 'Google Calendar Integration', 'description' => 'Sync tour schedules with Google Calendar for seamless booking management', 'icon' => 'dashicons-calendar-alt', 'benefits' => [ 'Automatic calendar sync', 'Real-time availability updates', 'Google Calendar API integration', 'Seamless booking workflow', 'Enhanced scheduling management' ] ] ]; /** * Initialize premium features */ public static function init() { add_action('admin_menu', [__CLASS__, 'add_premium_menus'], 100); add_action('add_meta_boxes', [__CLASS__, 'add_premium_metaboxes']); add_action('admin_enqueue_scripts', [__CLASS__, 'enqueue_premium_assets']); add_action('wp_ajax_yatra_premium_redirect', [__CLASS__, 'handle_premium_redirect']); add_filter('yatra_settings_tabs_array', [__CLASS__, 'add_premium_settings_tabs'], 999); } /** * Add premium submenus under Tours */ public static function add_premium_menus() { // Services submenu add_submenu_page( 'edit.php?post_type=tour', __('Services', 'yatra'), __('Services', 'yatra'), 'manage_options', 'yatra-services', [__CLASS__, 'render_services_page'] ); // Availability Conditions submenu add_submenu_page( 'edit.php?post_type=tour', __('Availability Conditions', 'yatra'), __('Availability Conditions', 'yatra'), 'manage_options', 'yatra-availability-conditions', [__CLASS__, 'render_availability_conditions_page'] ); } /** * Render Services premium page */ public static function render_services_page() { self::render_premium_page('services'); } /** * Render Availability Conditions premium page */ public static function render_availability_conditions_page() { self::render_premium_page('availability_conditions'); } /** * Render premium upgrade page */ private static function render_premium_page($feature) { $feature_data = self::$premium_features[$feature] ?? null; if (!$feature_data) { return; } ?>
self::UPGRADE_URL, 'nonce' => wp_create_nonce('yatra_premium_nonce'), 'strings' => [ 'upgrading' => __('Redirecting to upgrade...', 'yatra'), 'error' => __('Something went wrong. Please try again.', 'yatra') ] ]); } /** * Check if premium assets should be loaded */ private static function should_load_premium_assets($hook) { global $post_type; // Tour edit screens if ($post_type === 'tour' && in_array($hook, ['post.php', 'post-new.php'])) { return true; } // Yatra settings page if (isset($_GET['page']) && $_GET['page'] === 'yatra-settings') { return true; } // Premium feature pages if (isset($_GET['page']) && in_array($_GET['page'], ['yatra-services', 'yatra-availability-conditions'])) { return true; } return false; } /** * Handle premium redirect AJAX */ public static function handle_premium_redirect() { check_ajax_referer('yatra_premium_nonce', 'nonce'); wp_send_json_success([ 'redirect_url' => self::UPGRADE_URL ]); } /** * Get premium features */ public static function get_premium_features() { return self::$premium_features; } /** * Check if feature is premium */ public static function is_premium_feature($feature) { return array_key_exists($feature, self::$premium_features); } /** * Get upgrade URL */ public static function get_upgrade_url() { return self::UPGRADE_URL; } /** * Add premium settings tabs */ public static function add_premium_settings_tabs($tabs) { // Add Downloads premium tab $tabs['downloads'] = array( 'label' => __('Downloads', 'yatra'), 'description' => __('Manage downloadable files and tour resources', 'yatra'), 'icon' => '', 'premium' => true, 'redirect_url' => 'https://wpyatra.com/pricing/' ); // Add Google premium tab $tabs['google'] = array( 'label' => __('Google', 'yatra'), 'description' => __('Configure Google Calendar integration and API settings', 'yatra'), 'icon' => '', 'premium' => true, 'redirect_url' => 'https://wpyatra.com/pricing/' ); return $tabs; } /** * Handle premium settings page output */ public static function output_premium_settings_page($tab) { if ($tab === 'downloads' || $tab === 'google') { self::render_premium_settings_page($tab); } } /** * Render premium settings page */ private static function render_premium_settings_page($feature) { $feature_data = self::$premium_features[$feature] ?? null; if (!$feature_data) { return; } ?>