__('Note: Configure the general settings for this transport here. If you do not want to use any specific feature, you can enable or disable it from Main Configuration → On/Off Sections. Disabling a feature will remove it from the entire site.', 'abp-transport-booking'), 'sale_continue' => __('Note: This switch indicate Transport Ticket sale close/continue . You can sale close/continue by this switch. By default sale will be continue', 'abp-transport-booking'), 'abptb_template' => __('Note: Here You can change your details page template.', 'abp-transport-booking'), 'post_sku' => __('Note: Here you can add an SKU for this post. You can also show or hide it on the frontend by turning the switch On or Off.', 'abp-transport-booking'), 'post_icon' => __('Note: Set a custom icon or emoji for this post. The selected icon/emoji will be displayed alongside the post title wherever the title appears across the website, helping it stand out and improve visual recognition.', 'abp-transport-booking'), 'sub_title' => __('Note: Add a Sub-title to enable the Post sub-tile. Leave this blank if you dont want to show any Sub-title information for this Post.', 'abp-transport-booking'), 'post_description' => __('Note: Add short description about this Transport . Leave this blank if you dont want to show any description for this Transport.', 'abp-transport-booking'), 'display_capacity' => __('Note : Enable this option to display the capacity for this transport on the frontend. This setting only works when the global Transport Capacity Display option is enabled.', 'abp-transport-booking'), 'display_organizer' => __('Note : This switch indicate Transport Organizer . You can also show or hide it on the frontend by turning the switch On or Off.', 'abp-transport-booking'), 'display_brand' => __('Note : This switch indicate Transport Brand name . You can also show or hide it on the frontend by turning the switch On or Off.', 'abp-transport-booking'), 'display_category' => __('Note : This switch indicate Transport Category . You can also show or hide it on the frontend by turning the switch On or Off.', 'abp-transport-booking'), 'related_item' => __('Note: Select related items to display on the details page. Leave this option empty or disabled if you do not want to show related items.', 'abp-transport-booking'), 'post_feature' => __('Note: If you want to add feature for this Transport, you can add Here. These feature will be show with this Transport . You may leave this section empty if you do not want to show frontend. ', 'abp-transport-booking'), 'display_slider' => __('Note: If you want to add an image gallery for this transport, you can upload images below. You may leave this section empty if you do not want to show images. ', 'abp-transport-booking'), //=============================// 'route_config' => __('Note: Configure the transport route by selecting the required stops and their types. You can also add new stops while configuring the route. Boarding stops allow passengers to board only, Dropping stops allow passengers to get off only, and Both stops support both boarding and dropping. The first stop must always be Boarding, the last stop must always be Dropping, and the first stop time must be 0 minutes. All remaining stop times represent the travel time in minutes from the first stop and are applied according to your Transport Time Configuration. Enable Multiple Pickup/Drop-off Points to allow passengers to select from multiple pickup and drop-off locations. The available options are based on the configured route stops: Boarding stops become Pickup Points, Dropping stops become Drop-off Points, and Both stops are available for both. If the return journey uses the same transport, enable Same Transport Return to automatically use the same transport configuration for the return trip. ', 'abp-transport-booking'), 'seat_type' => __('Note: Please select your Transport seat type . Default is Seat Plan', 'abp-transport-booking'), 'ticket_type' => __('Note: You have disabled the Seat Plan System from the Global On/Off Settings, so your ticket types will function as regular tickets only.If you want to use a seat plan, enable Seat Plan System from the Global On/Off Settings. Once enabled, you can turn the Seat Plan feature on or off for each transport individually, allowing you to use either a seat plan or regular tickets as needed.', 'abp-transport-booking'), 'single_ticket_type' => __('Note: If the Global Multiple Ticket System is disabled, you cannot use multiple ticket types for any transport.To enable this feature, turn on Multiple Ticket System from the Global On/Off Settings. Once enabled, you can configure multiple ticket types and prices for each transport. You can also choose to use a single ticket for specific transports whenever needed.', 'abp-transport-booking'), 'display_ticket_type' => __('Note : This switch indicate Transport ticket type. if your all ticket/seat same type then switch will be off. if you want to multiple type please switch on', 'abp-transport-booking'), 'min_qty' => __('Note : Set the minimum quantity customers must select per order. This global setting applies across the entire booking system.', 'abp-transport-booking'), 'max_qty' => __('Note : Set the maximum quantity a customer can select per order. This global setting helps control the maximum number of tickets or seats a customer can book in a single order.', 'abp-transport-booking'), //=============================// //=============================// 'no_category' => __('No Category Found !', 'abp-transport-booking'), 'cat_name' => __('Note: Please enter a category name — the field cannot be empty. ', 'abp-transport-booking'), 'cat_slug' => __('Note: Category slug is optional — leave it blank to auto-generate from the name. ', 'abp-transport-booking'), 'cat_des' => __('Note: Category description is optional — you can add details to better explain this category. ', 'abp-transport-booking'), //=============================// 'no_organizer' => __('No Organizer Found !', 'abp-transport-booking'), 'org_name' => __('Note: Please enter a Organizer name — the field cannot be empty. ', 'abp-transport-booking'), 'org_slug' => __('Note: Organizer slug is optional — leave it blank to auto-generate from the name. ', 'abp-transport-booking'), 'org_des' => __('Note: Organizer description is optional — you can add details to better explain this Organizer. ', 'abp-transport-booking'), //=============================// 'no_location' => __('No Location Found ! ', 'abp-transport-booking'), 'loc_name' => __('Note: Please enter a Location name — the field cannot be empty. ', 'abp-transport-booking'), 'loc_slug' => __('Note: Location slug is optional — leave it blank to auto-generate from the name. ', 'abp-transport-booking'), 'loc_des' => __('Note: Location Address is optional — you can add details to better explain this Location Full Address. ', 'abp-transport-booking'), 'display_pd' => __('You can add multiple pickup/drop-off points for a single location. For each pickup/drop-off point, set the travel time relative to the main location. Use a negative value (in minutes) if the pickup/drop-off point is before the main location, or a positive value (in minutes) if it is after the main location. For example, use -15 for 15 minutes before the main location, or 20 for 20 minutes after it.', 'abp-transport-booking'), //=============================// 'no_brand' => __('No Brand Found ! ', 'abp-transport-booking'), 'brand_name' => __('Note: Please enter a Brand name — the field cannot be empty. ', 'abp-transport-booking'), 'brand_slug' => __('Note: Brand slug is optional — leave it blank to auto-generate from the name. ', 'abp-transport-booking'), 'brand_des' => __('Note: Brand description is optional — you can add details to better explain this Brand. ', 'abp-transport-booking'), //=============================// 'no_feature' => __('No Feature Found ! ', 'abp-transport-booking'), 'feature_value' => __('Note: Please enter a Feature Value — the field optional ', 'abp-transport-booking'), 'feature_icon' => __('Note: You can add an icon, or emoji for this Feature(optional).', 'abp-transport-booking'), 'feature_name' => __('Note: Please enter a Feature Name — the field cannot be empty.', 'abp-transport-booking'), //=============================// 'date_format' => __('Note: If you want to change the Date Format, simply choose a different format. The default date is: ', 'abp-transport-booking') . ' ' . date_i18n('D j M , Y', strtotime($current_date)), 'time_format' => __('Note : If you want to change the Time Format, simply choose a different format. The default Time Format is: ', 'abp-transport-booking') . ' ' . date_i18n(get_option('time_format'), strtotime($current_date)), 'sale_close_before' => __('Note: Enter the time in minutes to close ticket sales before the transport starts. If not specified, it will default to 0 (e.g. 1 hour equals 60 minutes). ', 'abp-transport-booking'), 'advance_date_number' => __('Note: Kindly provide the number of days in advance for booking. By default, the advance booking period is set to 28 days.(optional) ', 'abp-transport-booking'), 'active_global_dates' => __('Note: Keep this switch ON to apply the global date settings.Switch it OFF if you want to set special date rules for this transport.Date configuration options will open when turned OFF. ', 'abp-transport-booking'), 'date_type' => __('Note: Please Select your Transport operational date type. Default operational date will be Periodic', 'abp-transport-booking'), 'specific_dates' => __('Note: Please add your Transport operational Specific Date lists .', 'abp-transport-booking'), 'operation_time' => __('Note: Operation Time is required. If you do not specify any operation time, it will automatically be set to 12:00 AM (00:00). The free version supports a single operation time. With ABP Transport Booking PRO you can add multiple operation times for the same transport within a single day, and configure day-wise and date-wise schedules. However, at least one operation time is required.', 'abp-transport-booking'), 'return_operation_time' => __('Note: Operation Time is required. If you do not specify any operation time, it will automatically be set to 12:00 AM (00:00). The free version supports a single operation time. With ABP Transport Booking PRO you can add multiple operation times for the same transport within a single day, and configure day-wise and date-wise schedules. However, at least one operation time is required.', 'abp-transport-booking'), 'periodic_start_date' => __('Note: Please add your Transport Launching Date otherwise it will be start today ', 'abp-transport-booking'), 'periodic_end_date' => __('Note: Please add your Transport Terminate Date otherwise it will be Continuously running periodically', 'abp-transport-booking'), 'periodic_after' => __('Note: Please add your periodically after days. if your Transport operation day everyday this will be one(1).(optional)', 'abp-transport-booking'), 'date_rule' => __('Note: Enable this checkbox to configure special on/off date settings. This option is optional. If you set a date/time in the special “On” date, that date will remain active even if it falls within an “Off” date range or on weekends.', 'abp-transport-booking'), 'special_on_dates' => __('Note: If you add any date in Special On Dates, it will always remain active—even if that date falls within an off date range or on weekends.', 'abp-transport-booking'), 'weekend' => __('Note: Please select your weekend.Default all days open(optional)', 'abp-transport-booking'), 'day_wise_time' => __('Note:Add Day-wise Time if your transport operates on different schedules throughout the week. You can assign multiple departure times for each day, and only the configured times for the selected day will be available to passengers. ', 'abp-transport-booking'), 'specific_off_dates' => __('Note: please add your specific Operation off dates.(optional)', 'abp-transport-booking'), 'date_wise_time' => __('Note: Set the transport operation time for specific dates. A date will only be saved if it has at least one operation time. If a date is not saved, the regular day-wise schedule or the default operation time will be applied. You can add multiple operation times for the same date.(optional)', 'abp-transport-booking'), 'off_date_range' => __('Note: If you have off days between two dates which can add here.(optional)', 'abp-transport-booking'), //=============================// 'qty_reserve_min_max' => __('Note: Set the total stock quantity available for sale. This field is required to save the transport. You can also set reserve, minimum, and maximum quantity limits for customer bookings. Reserve quantity keeps specific items unavailable, minimum quantity defaults to 1, and maximum quantity will follow the available stock if left empty.', 'abp-transport-booking'), //=============================// '_tax_class' => __('Note: If you want to add any new tax class , Please go to WooCommerce ->configuration->Tax Area', 'abp-transport-booking'), 'enable_tax_msg' => __('Note: Your Woo-commerce Tax setting already disable. If you want to enable tax please enable woo-commerce tax.', 'abp-transport-booking'), //=============================// 'display_additional_services' => __('Note: If you want sale additional product/equipment with this transport then active this button and add additional service. Additional item not depends on operation time.', 'abp-transport-booking'), 'active_global_additional' => __('Note: Keep this switch ON to apply the global additional settings.Switch it OFF if you want to set special additional rules for this transport.additional configuration options will open when turned OFF. ', 'abp-transport-booking'), //=============================// 'attendee_off' => __('Note: Globally, the Attendee Form feature is currently disabled. To add an attendee form for this transport, please enable the feature from the Global Settings, then reload this page.', 'abp-transport-booking'), 'client_form_option' => __('Use comma( , ) to separate option.', 'abp-transport-booking'), 'display_client_form' => __('Note: If you want to get Client information then active this button and add form/import global form or use global form as a client form', 'abp-transport-booking'), 'active_global_form' => __('Note: Keep this switch ON to apply the global Client Form settings.Switch it OFF if you want to set special Client Form rules for this transport. Client Form configuration options will open when turned OFF. ', 'abp-transport-booking'), 'display_single_form' => __('If you want to get single traveller/attendee info for multiple ticket then active this button .Default is on', 'abp-transport-booking'), //=============================// 'display_tc' => __('Use this switch to control whether the Term & Condition is displayed on the frontend. Turn the switch ON to show the Term & Condition, and OFF to hide it. By default, this option is set to ON.', 'abp-transport-booking'), 'active_global_tc' => __('Enable this switch to apply the global Term & Condition to this post. If you want to add custom Term & Condition specifically for this post, turn the switch OFF and add your custom Term & Condition below.You can also use the Import button to bring in global Term & Condition, which you can then edit or delete based on your needs.', 'abp-transport-booking'), //=============================// 'faq_item' => __('Both the Title and Description fields are required. If either field is left empty, this FAQ item will not be displayed on the frontend.', 'abp-transport-booking'), 'display_faq' => __('Use this switch to control whether the FAQ is displayed on the frontend. Turn the switch ON to show the FAQ, and OFF to hide it. By default, this option is set to ON.', 'abp-transport-booking'), 'active_global_faq' => __('Enable this switch to apply the global FAQ to this post. If you want to add custom FAQs specifically for this post, turn the switch OFF and add your custom FAQs below.You can also use the Import button to bring in global FAQs, which you can then edit or delete based on your needs.', 'abp-transport-booking'), //=============================// 'search_get_wrong_data_info' => __('Somethings went Wrong ! Please Try again', 'abp-transport-booking'), 'sale_close_msg' => __('This transport sale close shortly. please try another transport.', 'abp-transport-booking'), 'not_date' => __('No Dates Found !', 'abp-transport-booking'), 'date_expire' => __('Date not Found Or Expire .', 'abp-transport-booking'), 'not_match' => __('No Results Found !', 'abp-transport-booking'), 'not_found' => __('Nothing Found !', 'abp-transport-booking'), 'no_sp' => __('No Seat Plan Found. Click Add New to create one.', 'abp-transport-booking'), 'transport_not_available' => __('The transport is not available for the selected date and time. Please choose a different schedule.', 'abp-transport-booking'), //=============================// 'no_ticket_type' => __('No Ticket Type Found ! Please add Ticket Type to use Multiple Ticket Type', 'abp-transport-booking'), 'no_ticket_config' => __('No ticket configuration is available for this transport. Please contact the administrator.', 'abp-transport-booking'), 'no_sp_config' => __('No Seat Plan configuration is available for this transport. Please contact the administrator.', 'abp-transport-booking'), 'ticket_settings' => __('Configure the ticket or seat type with a name, color, prefix, and optional image, icon, or emoji. These settings will be applied automatically to all assigned seats in the Seat Plan and used throughout the booking process for consistent identification.', 'abp-transport-booking'), //=============================// 'no_decor_item' => __('No Decor Item Found ! Please add Decor item to use Multiple Decor item', 'abp-transport-booking'), 'decor_setting' => __('Note: Choose an image, icon, or emoji to represent this decoration item within the Seat Plan layout. Enter a name to identify the item while designing the layout. Decoration items are used only for creating and organizing the Seat Plan and are not considered bookable seats, so they do not affect pricing, availability, or the booking process. The item name will not be displayed to customers, but you can add custom text, change the font size, or modify individual items directly from the Seat Plan editor by double-clicking on them. You can also choose a background color to make different layout elements easier to identify while designing the seat arrangement. Once configured, the selected settings will automatically be applied wherever this decoration item is used.', 'abp-transport-booking'), //=============================// 'must_wc' => __('Transport Booking is entirely dependent on the WooCommerce plugin. Please install and activate the WooCommerce plugin otherwise the plugin will not work. Installing this tool may take some time', 'abp-transport-booking'), //=============================// 'abptb_ticket' => __('Here you can create and manage dynamic ticket types that can be used across all transports. Examples include Economy, Business Class, VIP, Sleeper, Cabin, and more. Each ticket type can have its own price, capacity, color, icon, image, and other configurations. If a seat plan is enabled, you can create seats based on the selected ticket type, and every seat will automatically inherit the corresponding ticket settings. Every ticket type also has a unique ID . You can edit or delete ticket types at any time, but removing a ticket type that is already assigned to a transport may affect the existing configuration.', 'abp-transport-booking'), 'abptb_decor' => __('Note : Here you can create and manage decorative items for the seat plan layout. These items are used only for designing and organizing the seating arrangement and are not considered actual seats. Therefore, they cannot be booked, reserved, or sold. Examples include doors, exits, driver areas, engines, restrooms, food storage, baggage storage, waiting areas, lobbies, walkways, stairs, tables, partitions, and other decorative elements. If needed, you can also add custom text, icons, images, or emojis to create a more realistic seat layout. Every decoration item has its own unique ID and can be reused across multiple seat plans.', 'abp-transport-booking'), 'abptb_sp' => __('Note : Here you can create and manage reusable seat plans that can be assigned to any transport multiple times. Instead of designing the same layout repeatedly, you can create a seat plan once and reuse it whenever needed. The system will automatically calculate the total number of available seats and detect all assigned ticket types from the selected seat plan. If the transport is configured to use a single ticket type, all seats in the selected seat plan will automatically be converted into that ticket type, even if the original layout contains multiple ticket types. You can also use decoration items such as doors, walkways, engines, exits, luggage storage areas, tables, and other custom elements to create a more realistic layout. Every seat plan has a unique ID', 'abp-transport-booking'), 'abptb_sp_design' => __('Note : Here you can design and customize the entire seat layout according to your requirements. You can define the overall layout structure by setting the number of rows and columns, adjusting the background image or background color, and configuring the width, height, and spacing of individual cells. Each cell can occupy one or multiple positions, allowing you to create more complex layouts such as walkways, cabins, tables, lounges, storage areas, and other custom sections.You can select a ticket type and simply click on any cell to automatically assign the selected ticket type along with the corresponding seat number. Likewise, you can select a decoration item and place it anywhere in the layout. Both seat items and decoration items support drag-and-drop functionality, allowing you to move, duplicate, or clone them easily.Every cell can have its own custom text, icon, image, emoji, color, and font size. Double-clicking on a cell allows you to modify its content and appearance individually. You can also resize cells by defining custom width and height values.Advanced selection tools are also available to speed up the design process. Use Ctrl + Click to select individual items and Shift + Click to select multiple cells within a range. Once selected, you can apply changes to all selected items simultaneously.This powerful visual editor makes it easy to create simple or highly detailed layouts for buses, trains, ferries, aircraft, theaters, stadiums, conference halls, and many other seating arrangements. ', 'abp-transport-booking'), 'abptb_dates' => __('Note: Set a global date configuration for your Transport that can be reused across all posts, with options to import and customize anytime.', 'abp-transport-booking'), 'abptb_additional' => __('Note: Add extra services for products/equipment with your transport—import or set per Post (also usable globally); stock applies per Post, empty quantity = unlimited, empty max qty = no limit, empty/Zero price = free.', 'abp-transport-booking'), 'abptb_form' => __('Note: This is a flexibility global form system. Once you design the structure here, it serves as a global form. You can effortlessly import this form into any transport or use this setting at any transport,', 'abp-transport-booking'), 'abptb_faq' => __('Note: You can set all transport-related FAQs here and use them globally across all transports. You can also import these FAQs into any individual transport and customize them as needed.', 'abp-transport-booking'), 'abptb_tc' => __('Note: You can set all transport-related Term & Condition here and use them globally across all transport. You can also import these Term & Condition into any individual transport and customize them as needed.', 'abp-transport-booking'), 'abptb_location' => __('Note: Here, you can add all of your transport stops, which can then be used across any transport post. You can edit or delete them at any time. However, please note that deleting a stop that is already assigned to a transport may affect the existing configuration. If a stop is not currently assigned anywhere, deleting it will not cause any issues.', 'abp-transport-booking'), 'abptb_category' => __('Note : Here you can create and manage all transport types or categories, such as Bus, Train, Ferry, Shuttle, Taxi, AC, Non Ac, Sleeper and more. You can assign one categories to each transport while creating or editing a post. Every category has a unique ID, which can also be used in shortcodes to display specific transport types anywhere on your website. You can edit or delete categories at any time, but removing a category that is already assigned to a transport may affect its existing configuration.', 'abp-transport-booking'), 'abptb_organizer' => __('Note: Here you can create and manage transport organizers, operators, or companies. You can assign one organizers to each transport while creating or editing a post. Every organizer has a unique ID that can be used in shortcodes to display transports from a specific organizer anywhere on your website. You can edit or delete organizers at any time, but deleting an organizer that is already assigned to a transport may affect the existing configuration.', 'abp-transport-booking'), 'abptb_brand' => __('Note : Here you can create and manage transport brands, manufacturers, or service providers. You can assign one brand to each transport while creating or editing a post. Every brand has a unique ID that can be used in shortcodes to display transports from a specific brand anywhere on your website. You can edit or delete brands at any time, but deleting a brand that is already assigned to a transport may affect the existing configuration.', 'abp-transport-booking'), 'abptb_feature' => __('Note : Here you can create and manage transport features that help passengers understand the facilities and services available with each transport. Examples include Wi-Fi, air conditioning, charging ports, refreshments, entertainment systems, restrooms, and more. You can assign one or multiple features to each transport while creating or editing a post. You can edit or delete features at any time, but removing a feature that is already assigned to a transport may affect the existing configuration.', 'abp-transport-booking'), //=============================// 'sign_up_msg' => __('Please Login your account to Download/View ticket !', 'abp-transport-booking'), 'no_permit_msg' => __('You are not permitted to Download/View this ticket !', 'abp-transport-booking'), 'wrong_msg_id' => __('We see, this id are not valid !', 'abp-transport-booking'), 'no_order_found' => __('Sorry ! We can not find any Order in your criteria.', 'abp-transport-booking'), //'' => __( '', 'abp-transport-booking' ), ); $des = apply_filters('abptb_info_array_filter', $des); return $des[$key] ?? ''; } public static function svg($key): void { $des = [ 'user_group_1' => '', 'user_group_2' => ' ', 'plus' => '', 'minus_1' => '', 'minus_2' => '', 'minus_3' => '', 'minus_4' => '', 'save' => '', 'edit' => '', 'drag' => '', 'order' => ' ', 'seat' => '', 'globe' => '', 'setting' => '', 'status' => '', 'category' => ' ', 'category_1' => ' ', 'brand_1' => ' ', 'brand_2' => '', 'organizer_1' => ' ', 'organizer_2' => '', 'date_1' => ' ', 'date_2' => ' ', 'clone_1' => '', 'clone_2' => ' ', 'close_1' => '', 'close_2' => '', 'view_1' => '', 'view_2' => '', 'view_3' => '', 'pdf_1' => '', 'pdf_2' => ' PDF', 'pdf_3' => ' PDF', 'pdf_4' => ' PDF', 'property' => ' ', 'check_1' => '', 'check_2' => '', 'check_3' => '', 'check_4' => ' ', 'box_1' => ' ', 'box_2' => ' ', 'csv_1' => ' CSV', 'csv_2' => ' CSV', 'csv_3' => ' CSV', '' => '', ]; $allowed_svg_tags = [ 'svg' => ['class' => true, 'aria-hidden' => true, 'aria-labelledby' => true, 'role' => true, 'xmlns' => true, 'width' => true, 'height' => true, 'viewbox' => true, 'fill' => true, 'stroke' => true, 'stroke-width' => true,], 'g' => ['fill' => true,], 'title' => ['title' => true,], 'path' => ['d' => true, 'fill' => true, 'stroke' => true, 'stroke-width' => true, 'stroke-linecap' => true, 'stroke-linejoin' => true,], 'rect' => ['x' => true, 'y' => true, 'width' => true, 'height' => true, 'rx' => true, 'ry' => true, 'fill' => true, 'stroke' => true,], 'circle' => ['cx' => true, 'cy' => true, 'r' => true, 'fill' => true, 'stroke' => true,], 'line' => ['x1' => true, 'y1' => true, 'x2' => true, 'y2' => true, 'stroke' => true, 'stroke-width' => true,], 'polyline' => ['points' => true, 'fill' => true, 'stroke' => true,], ]; $icons = $des[$key] ?? ''; echo !empty($icons) ? wp_kses($icons, $allowed_svg_tags) : ''; } //=================// public static function static_additional(): array { return [ 'as_1' => ['icon' => 'fas fa-suitcase-rolling', 'name' => 'Free Luggage', 'qty' => 50, 'max_qty' => 1, 'price' => 0, 'description' => '5 kg · 20×10×10 cm (Maximum one)', 'returnable' => 'no',], 'as_2' => ['icon' => 'fas fa-suitcase-rolling', 'name' => 'Additional luggage', 'qty' => 50, 'max_qty' => 2, 'price' => 4.99, 'description' => '20 kg · 80×50×30 cm', 'returnable' => 'no',], 'as_3' => ['icon' => 'fas fa-suitcase', 'name' => 'Bulky baggage', 'qty' => 30, 'max_qty' => 3, 'price' => 7.99, 'description' => '50 kg · 80×50×30 cm', 'returnable' => 'yes',], 'as_4' => ['icon' => 'fas fa-coffee', 'name' => 'Coffee', 'qty' => 100, 'price' => 2.00, 'description' => 'Price for a cup of coffee', 'returnable' => 'no',] ]; } public static function static_form($key = ''): array { $form['pass_name'] = ['type' => 'text', 'required' => 'on', 'label' => __('First Name', 'abp-transport-booking')]; $form['pass_name_2'] = ['type' => 'text', 'required' => 'on', 'label' => __('Last Name', 'abp-transport-booking')]; $form['pass_email'] = ['type' => 'email', 'required' => 'on', 'label' => __('E-Mail', 'abp-transport-booking')]; $form['pass_phone'] = ['type' => 'text', 'required' => 'on', 'label' => __('Phone', 'abp-transport-booking')]; $form['pass_gender'] = ['type' => 'select', 'required' => 'off', 'label' => __('Gender', 'abp-transport-booking'), 'option' => 'male,female']; $form['pass_date'] = ['type' => 'date', 'required' => 'off', 'label' => __('Date of Birth', 'abp-transport-booking')]; if (!is_string($key) && !is_int($key)) { return $form; } if ($key === '') { return $form; } return is_array($form[$key] ?? null) ? $form[$key] : []; } } new ABPTB_Static(); }