__  __    __   __  _____      _            _          _____ _          _ _ 
 |  \/  |   \ \ / / |  __ \    (_)          | |        / ____| |        | | |
 | \  / |_ __\ V /  | |__) | __ ___   ____ _| |_ ___  | (___ | |__   ___| | |
 | |\/| | '__|> <   |  ___/ '__| \ \ / / _` | __/ _ \  \___ \| '_ \ / _ \ | |
 | |  | | |_ / . \  | |   | |  | |\ V / (_| | ||  __/  ____) | | | |  __/ | |
 |_|  |_|_(_)_/ \_\ |_|   |_|  |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1
 if you need WebShell for Seo everyday contact me on Telegram
 Telegram Address : @jackleet
        
        
For_More_Tools: Telegram: @jackleet | Bulk Smtp support mail sender | Business Mail Collector | Mail Bouncer All Mail | Bulk Office Mail Validator | Html Letter private



Upload:

Command:

[email protected]: ~ $
<?php

declare(strict_types=1);

namespace MPBC;

use MPBC\Data\Notification;
use MPBC\Helper\Umpirsky_Helper;

if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

class Bundles {
	/**
	 * @var array <code>[ Language/locale => [ Country code => Country name ] ]</code>
	 */
	private static array $countries = array();

	/**
	 * @var array <code>[
	 *     Language/locale => [
	 *         Currency code => [
	 *             label  => string,
	 *             symbol => string,
	 *         ]
	 *     ]
	 * ]</code>
	 */
	private static array $currencies = array();

	/**
	 * @var array <code>[ Currency code => Currency symbol ]</code>
	 */
	private static array $used_currency_symbols = array(); // "Cached" values

	/**
	 * @var array <code>[ WordPress locale => Flatpickr locale ]</code>
	 */
	private static array $used_flatpickr_locales = array(); // "Cached" values

	/**
	 * @param string|null $language Current language by default.
	 * @return array <code>[ Country code => Country name ]</code>
	 */
	public static function get_countries( ?string $language = null ): array {
		if ( empty( $language ) ) {
			$language = Settings::get_current_language();
		}

		if ( ! isset( static::$countries[ $language ] ) ) {
			static::$countries[ $language ] = Umpirsky_Helper::get_country_list( $language );
		}

		return static::$countries[ $language ];
	}

	public static function get_country_label( string $country_code ): string {
		$countries = static::get_countries();

		return $countries[ $country_code ] ?? $country_code;
	}

	/**
	 * @param string|null $language Current language by default.
	 * @return array <code>[ Currency code => [ label, symbol ] ]</code>
	 */
	public static function get_currencies( ?string $language = null ): array {
		if ( empty( $language ) ) {
			$language = Settings::get_current_language();
		}

		if ( ! isset( static::$currencies[ $language ] ) ) {
			$currency_list = Umpirsky_Helper::get_currency_list( $language );
			$currency_symbols = static::get_currency_symbols();

			$currencies = array(
				// Prioritize EUR, USD and GBP currencies:
				//     [EUR, USD, GBP, ... all other currencies]
				'EUR' => array(
					'label'  => 'Euro',
					'symbol' => $currency_symbols['EUR'],
				),
				'USD' => array(
					'label'  => 'US Dollar',
					'symbol' => $currency_symbols['USD'],
				),
				'GBP' => array(
					'label'  => 'British Pound',
					'symbol' => $currency_symbols['GBP'],
				),
			);

			foreach ( $currency_list as $code => $label ) {
				if ( array_key_exists( $code, $currency_symbols ) ) {
					$currencies[ $code ] = array(
						'label'  => $label,
						'symbol' => $currency_symbols[ $code ],
					);
				}
			}

			/**
			 * @param array $currencies <code>[ Currency code => [ label, symbol ] ]</code>
			 * @param string $language Current language.
			 */
			static::$currencies[ $language ] = apply_filters( 'mpbc_currencies', $currencies, $language );
		}

		return static::$currencies[ $language ];
	}

	public static function get_currency_symbol( string $currency ): string {
		$symbol = static::$used_currency_symbols[ $currency ] ?? '';

		if ( ! $symbol ) {
			$symbol = static::get_currencies()[ $currency ]['symbol'] ?? '';

			static::$used_currency_symbols[ $currency ] = $symbol;
		}

		return $symbol;
	}

	public static function get_flatpickr_locale( string $wp_locale ): string {
		if ( isset( static::$used_flatpickr_locales[ $wp_locale ] ) ) {
			return static::$used_flatpickr_locales[ $wp_locale ];
		}

		$flatpickr_locale = 'default';
		$available_locales = static::get_flatpickr_locales();

		if ( in_array( $wp_locale, $available_locales ) ) {
			$flatpickr_locale = $wp_locale;

		} else {
			// Try to guess the replacement
			$primary_language_tag = substr( $wp_locale, 0, 2 ); // "es_ES" -> "es"

			$wp2fp_locales = array(
				// Excluding pairs representing the same primary tag/language:
				//     "<primary tag>_<subtags>" => "<primary tag>"
				'bel'   => 'be',
				'ca'    => 'cat',
				'de_AT' => 'at',
				'el'    => 'gr',
				'kk'    => 'kz',
				'nb_NO' => 'no',
				'vi'    => 'vn',
				'zh_TW' => 'zh_tw',
			);

			if ( array_key_exists( $wp_locale, $wp2fp_locales ) ) {
				$flatpickr_locale = $wp2fp_locales[ $wp_locale ];

			} elseif ( in_array( $primary_language_tag, $available_locales ) ) {
				$flatpickr_locale = $primary_language_tag;
			}
		}

		static::$used_flatpickr_locales[ $wp_locale ] = $flatpickr_locale;

		return $flatpickr_locale;
	}

	/**
	 * @return array Array of: <code>[
	 *     label      => string,
	 *     recipients => ?string[],
	 *     subject    => ?string,
	 *     header     => ?string,
	 *     message    => ?string,
	 *     template   => ?string,
	 * ]</code>
	 */
	public static function get_email_templates(): array {
		return array(
			'none' => array(
				'label' => __( '— Select —', 'motopress-booking-calendar' ),
			),
			'admin_new_booking' => array(
				'label'      => __( 'New booking (admin)', 'motopress-booking-calendar' ),
				'recipients' => array( Notification::RECIPIENT_ADMIN ),
				'subject'    => __( '{site_title} - New Booking #{booking_id}', 'motopress-booking-calendar' ),
				'header'     => __( 'New Booking #{booking_id}', 'motopress-booking-calendar' ),
				'template'   => 'email/template/admin-new-booking-template.php',
			),
			'customer_new_booking' => array(
				'label'      => __( 'New booking (customer)', 'motopress-booking-calendar' ),
				'recipients' => array( Notification::RECIPIENT_CUSTOMER ),
				'subject'    => __( '{site_title} - Booking #{booking_id}', 'motopress-booking-calendar' ),
				'header'     => __( 'Booking #{booking_id}', 'motopress-booking-calendar' ),
				'template'   => 'email/template/customer-new-booking-template.php',
			),
			'admin_cancelled_booking' => array(
				'label'         => __( 'Cancelled booking (admin)', 'motopress-booking-calendar' ),
				'trigger_event' => Notification::TRIGGER_EVENT_BOOKING_CANCELLED,
				'recipients'    => array( Notification::RECIPIENT_ADMIN ),
				'subject'       => __( '{site_title} - Booking #{booking_id}', 'motopress-booking-calendar' ),
				'header'        => __( 'Booking #{booking_id} is cancelled', 'motopress-booking-calendar' ),
				'template'      => 'email/template/admin-cancelled-booking-template.php',
			),
			'customer_cancelled_booking' => array(
				'label'         => __( 'Cancelled booking (customer)', 'motopress-booking-calendar' ),
				'trigger_event' => Notification::TRIGGER_EVENT_BOOKING_CANCELLED,
				'recipients'    => array( Notification::RECIPIENT_CUSTOMER ),
				'subject'       => __( '{site_title} - Booking #{booking_id}', 'motopress-booking-calendar' ),
				'header'        => __( 'Booking #{booking_id} is cancelled', 'motopress-booking-calendar' ),
				'template'      => 'email/template/customer-cancelled-booking-template.php',
			),
		);
	}

	/**
	 * @return string[]
	 */
	public static function get_currency_positions(): array {
		return array(
			'before'       => __( 'Before', 'motopress-booking-calendar' ),
			'after'        => __( 'After', 'motopress-booking-calendar' ),
			'before-space' => __( 'Before with space', 'motopress-booking-calendar' ),
			'after-space'  => __( 'After with space', 'motopress-booking-calendar' ),
		);
	}

	private static function get_currency_symbols(): array {
		return array(
			'AED' => '&#x62f;.&#x625;',
			'AFN' => '&#x60b;',
			'ALL' => 'L',
			'AMD' => 'AMD',
			'ANG' => '&fnof;',
			'AOA' => 'Kz',
			'ARS' => '&#36;',
			'AUD' => '&#36;',
			'AWG' => 'Afl.',
			'AZN' => 'AZN',
			'BAM' => 'KM',
			'BBD' => '&#36;',
			'BDT' => '&#2547;&nbsp;',
			'BGN' => '&#1083;&#1074;.',
			'BHD' => '.&#x62f;.&#x628;',
			'BIF' => 'Fr',
			'BMD' => '&#36;',
			'BND' => '&#36;',
			'BOB' => 'Bs.',
			'BRL' => '&#82;&#36;',
			'BSD' => '&#36;',
			'BTC' => '&#3647;',
			'BTN' => 'Nu.',
			'BWP' => 'P',
			'BYN' => 'Br',
			'BYR' => 'Br',
			'BZD' => '&#36;',
			'CAD' => '&#36;',
			'CDF' => 'Fr',
			'CHF' => '&#67;&#72;&#70;',
			'CLP' => '&#36;',
			'CNY' => '&yen;',
			'COP' => '&#36;',
			'CRC' => '&#x20a1;',
			'CUC' => '&#36;',
			'CUP' => '&#36;',
			'CVE' => '&#36;',
			'CZK' => '&#75;&#269;',
			'DJF' => 'Fr',
			'DKK' => 'DKK',
			'DOP' => 'RD&#36;',
			'DZD' => '&#x62f;.&#x62c;',
			'EGP' => 'EGP',
			'ERN' => 'Nfk',
			'ETB' => 'Br',
			'EUR' => '&euro;',
			'FJD' => '&#36;',
			'FKP' => '&pound;',
			'GBP' => '&pound;',
			'GEL' => '&#x20be;',
			'GGP' => '&pound;',
			'GHS' => '&#x20b5;',
			'GIP' => '&pound;',
			'GMD' => 'D',
			'GNF' => 'Fr',
			'GTQ' => 'Q',
			'GYD' => '&#36;',
			'HKD' => '&#36;',
			'HNL' => 'L',
			'HRK' => 'Kn',
			'HTG' => 'G',
			'HUF' => '&#70;&#116;',
			'IDR' => 'Rp',
			'ILS' => '&#8362;',
			'IMP' => '&pound;',
			'INR' => '&#8377;',
			'IQD' => '&#x639;.&#x62f;',
			'IRR' => '&#xfdfc;',
			'IRT' => '&#x062A;&#x0648;&#x0645;&#x0627;&#x0646;',
			'ISK' => 'kr.',
			'JEP' => '&pound;',
			'JMD' => '&#36;',
			'JOD' => '&#x62f;.&#x627;',
			'JPY' => '&yen;',
			'KES' => 'KSh',
			'KGS' => '&#x441;&#x43e;&#x43c;',
			'KHR' => '&#x17db;',
			'KMF' => 'Fr',
			'KPW' => '&#x20a9;',
			'KRW' => '&#8361;',
			'KWD' => '&#x62f;.&#x643;',
			'KYD' => '&#36;',
			'KZT' => 'KZT',
			'LAK' => '&#8365;',
			'LBP' => '&#x644;.&#x644;',
			'LKR' => '&#xdbb;&#xdd4;',
			'LRD' => '&#36;',
			'LSL' => 'L',
			'LYD' => '&#x644;.&#x62f;',
			'MAD' => '&#x62f;.&#x645;.',
			'MDL' => 'MDL',
			'MGA' => 'Ar',
			'MKD' => '&#x434;&#x435;&#x43d;',
			'MMK' => 'Ks',
			'MNT' => '&#x20ae;',
			'MOP' => 'P',
			'MRO' => 'UM',
			'MUR' => '&#x20a8;',
			'MVR' => '.&#x783;',
			'MWK' => 'MK',
			'MXN' => '&#36;',
			'MYR' => '&#82;&#77;',
			'MZN' => 'MT',
			'NAD' => '&#36;',
			'NGN' => '&#8358;',
			'NIO' => 'C&#36;',
			'NOK' => '&#107;&#114;',
			'NPR' => '&#8360;',
			'NZD' => '&#36;',
			'OMR' => '&#x631;.&#x639;.',
			'PAB' => 'B/.',
			'PEN' => 'S/.',
			'PGK' => 'K',
			'PHP' => '&#8369;',
			'PKR' => '&#8360;',
			'PLN' => '&#122;&#322;',
			'PRB' => '&#x440;.',
			'PYG' => '&#8370;',
			'QAR' => '&#x631;.&#x642;',
			'RON' => 'lei',
			'RSD' => '&#x434;&#x438;&#x43d;.',
			'RUB' => '&#8381;',
			'RWF' => 'Fr',
			'SAR' => '&#x631;.&#x633;',
			'SBD' => '&#36;',
			'SCR' => '&#x20a8;',
			'SDG' => '&#x62c;.&#x633;.',
			'SEK' => '&#107;&#114;',
			'SGD' => '&#36;',
			'SHP' => '&pound;',
			'SLL' => 'Le',
			'SOS' => 'Sh',
			'SRD' => '&#36;',
			'SSP' => '&pound;',
			'STD' => 'Db',
			'SYP' => '&#x644;.&#x633;',
			'SZL' => 'L',
			'THB' => '&#3647;',
			'TJS' => '&#x405;&#x41c;',
			'TMT' => 'm',
			'TND' => '&#x62f;.&#x62a;',
			'TOP' => 'T&#36;',
			'TRY' => '&#8378;',
			'TTD' => '&#36;',
			'TWD' => '&#78;&#84;&#36;',
			'TZS' => 'Sh',
			'UAH' => '&#8372;',
			'UGX' => 'UGX',
			'USD' => '&#36;',
			'UYU' => '&#36;',
			'UZS' => 'UZS',
			'VEF' => 'Bs F',
			'VES' => 'Bs.S',
			'VND' => '&#8363;',
			'VUV' => 'Vt',
			'WST' => 'T',
			'XAF' => 'CFA',
			'XCD' => '&#36;',
			'XOF' => 'CFA',
			'XPF' => 'Fr',
			'YER' => '&#xfdfc;',
			'ZAR' => '&#82;',
			'ZMW' => 'ZK',
		);
	}

	private static function get_flatpickr_locales(): array {
		return array(
			'ar',
			'ar-dz',
			'at',
			'az',
			'be',
			'bg',
			'bn',
			'bs',
			'cat',
			'ckb',
			'cs',
			'cy',
			'da',
			'de',
			'eo',
			'es',
			'et',
			'fa',
			'fi',
			'fo',
			'fr',
			'ga',
			'gr',
			'he',
			'hi',
			'hr',
			'hu',
			'hy',
			'id',
			'is',
			'it',
			'ja',
			'ka',
			'km',
			'ko',
			'kz',
			'lt',
			'lv',
			'mk',
			'mn',
			'ms',
			'my',
			'nl',
			'nn',
			'no',
			'pa',
			'pl',
			'pt',
			'ro',
			'ru',
			'si',
			'sk',
			'sl',
			'sq',
			'sr',
			'sr-cyr',
			'sv',
			'th',
			'tr',
			'uk',
			'uz',
			'uz_latn',
			'vn',
			'zh',
			'zh_tw',
			'zh-tw',
		);
	}
}

Filemanager

Name Type Size Permission Actions
action Folder 0750
admin Folder 0750
data Folder 0750
email Folder 0750
exception Folder 0750
field Folder 0750
helper Folder 0750
library Folder 0750
post-type Folder 0750
rest Folder 0750
shortcode Folder 0750
structure Folder 0750
assets.php File 9.4 KB 0640
autoloader.php File 1.88 KB 0640
blocks.php File 4.4 KB 0640
bundles.php File 11.43 KB 0640
database.php File 2.01 KB 0640
functions.php File 6.72 KB 0640
i18n.php File 415 B 0640
plugin.php File 6.22 KB 0640
roles-and-capabilities.php File 4.68 KB 0640
settings.php File 6.84 KB 0640
template-functions.php File 5.7 KB 0640
Filemanager