diff --git a/changelog.txt b/changelog.txt index 13acc9a592..b2e8fa8876 100644 --- a/changelog.txt +++ b/changelog.txt @@ -1,6 +1,7 @@ *** Changelog *** = 10.3.0 - xxxx-xx-xx = +* Dev - Deprecates and replaces PRBs classes with ECE equivalents * Dev - Renames all express checkout related frontend hooks * Dev - Removes deprecated legacy checkout settings retrieval methods * Dev - Removes all references to the UPE-enabled feature flag diff --git a/includes/admin/class-wc-stripe-express-checkout-controller.php b/includes/admin/class-wc-stripe-express-checkout-controller.php new file mode 100644 index 0000000000..aae2fd0187 --- /dev/null +++ b/includes/admin/class-wc-stripe-express-checkout-controller.php @@ -0,0 +1,78 @@ + [], + 'version' => WC_STRIPE_VERSION, + ]; + wp_register_script( + 'wc-stripe-express-checkout-settings', + plugins_url( 'build/express-checkout-settings.js', WC_STRIPE_MAIN_FILE ), + $asset_metadata['dependencies'], + $asset_metadata['version'], + true + ); + wp_set_script_translations( + 'wc-stripe-express-checkout-settings', + 'woocommerce-gateway-stripe' + ); + wp_enqueue_script( 'wc-stripe-express-checkout-settings' ); + + $stripe_settings = WC_Stripe_Helper::get_stripe_settings(); + $params = [ + 'key' => WC_Stripe_Mode::is_test() ? $stripe_settings['test_publishable_key'] : $stripe_settings['publishable_key'], + 'locale' => WC_Stripe_Helper::convert_wc_locale_to_stripe_locale( get_locale() ), + 'is_ece_enabled' => WC_Stripe_Feature_Flags::is_stripe_ece_enabled(), + ]; + wp_localize_script( + 'wc-stripe-express-checkout-settings', + 'wc_stripe_express_checkout_settings_params', + $params + ); + + wp_register_style( + 'wc-stripe-express-checkout-settings', + plugins_url( 'build/express-checkout-settings.css', WC_STRIPE_MAIN_FILE ), + [ 'wc-components' ], + $asset_metadata['version'] + ); + wp_enqueue_style( 'wc-stripe-express-checkout-settings' ); + } + + /** + * Prints the admin options for the gateway. + * Remove this action once we're fully migrated to UPE and move the wrapper in the `admin_options` method of the UPE gateway. + */ + public function admin_options() { + global $hide_save_button; + $hide_save_button = true; + $return_url = admin_url( 'admin.php?page=wc-settings&tab=checkout§ion=stripe' ); + $header = __( 'Customize express checkouts', 'woocommerce-gateway-stripe' ); + $return_text = __( 'Return to Stripe', 'woocommerce-gateway-stripe' ); + + WC_Stripe_Helper::render_admin_header( $header, $return_text, $return_url ); + + echo '
'; + } +} diff --git a/includes/admin/class-wc-stripe-payment-requests-controller.php b/includes/admin/class-wc-stripe-payment-requests-controller.php index 8aeb483f9e..339b2bb0b3 100644 --- a/includes/admin/class-wc-stripe-payment-requests-controller.php +++ b/includes/admin/class-wc-stripe-payment-requests-controller.php @@ -7,6 +7,8 @@ * Admin page for UPE Customize Express Checkouts. * * @since 5.4.1 + * + * @deprecated 10.3.0 Moved to includes/admin/class-wc-stripe-express-checkout-controller.php */ class WC_Stripe_Payment_Requests_Controller { public function __construct() { diff --git a/includes/class-wc-stripe.php b/includes/class-wc-stripe.php index 3782c888dc..bae8168aad 100644 --- a/includes/class-wc-stripe.php +++ b/includes/class-wc-stripe.php @@ -236,8 +236,8 @@ public function init() { require_once WC_STRIPE_PLUGIN_PATH . '/includes/admin/class-wc-stripe-settings-controller.php'; if ( isset( $_GET['area'] ) && 'payment_requests' === $_GET['area'] ) { - require_once WC_STRIPE_PLUGIN_PATH . '/includes/admin/class-wc-stripe-payment-requests-controller.php'; - new WC_Stripe_Payment_Requests_Controller(); + require_once WC_STRIPE_PLUGIN_PATH . '/includes/admin/class-wc-stripe-express-checkout-controller.php'; + new WC_Stripe_Express_Checkout_Controller(); } elseif ( isset( $_GET['area'] ) && 'amazon_pay' === $_GET['area'] && WC_Stripe_Feature_Flags::is_amazon_pay_available() ) { require_once WC_STRIPE_PLUGIN_PATH . '/includes/admin/class-wc-stripe-amazon-pay-controller.php'; new WC_Stripe_Amazon_Pay_Controller(); diff --git a/includes/constants/class-wc-stripe-express-checkout-button-states.php b/includes/constants/class-wc-stripe-express-checkout-button-states.php new file mode 100644 index 0000000000..22144ba9c1 --- /dev/null +++ b/includes/constants/class-wc-stripe-express-checkout-button-states.php @@ -0,0 +1,1162 @@ + [], + // Angola. + 'AO' => [], + // Argentina. + 'AR' => [ + 'C' => [ 'Ciudad Autónoma de Buenos Aires', 'Ciudad Autónoma de Buenos Aires', NULL ], + 'B' => [ 'Buenos Aires', 'Buenos Aires', NULL ], + 'K' => [ 'Catamarca', 'Catamarca', NULL ], + 'H' => [ 'Chaco', 'Chaco', NULL ], + 'U' => [ 'Chubut', 'Chubut', NULL ], + 'X' => [ 'Córdoba', 'Córdoba', NULL ], + 'W' => [ 'Corrientes', 'Corrientes', NULL ], + 'E' => [ 'Entre Ríos', 'Entre Ríos', NULL ], + 'P' => [ 'Formosa', 'Formosa', NULL ], + 'Y' => [ 'Jujuy', 'Jujuy', NULL ], + 'L' => [ 'La Pampa', 'La Pampa', NULL ], + 'F' => [ 'La Rioja', 'La Rioja', NULL ], + 'M' => [ 'Mendoza', 'Mendoza', NULL ], + 'N' => [ 'Misiones', 'Misiones', NULL ], + 'Q' => [ 'Neuquén', 'Neuquén', NULL ], + 'R' => [ 'Río Negro', 'Río Negro', NULL ], + 'A' => [ 'Salta', 'Salta', NULL ], + 'J' => [ 'San Juan', 'San Juan', NULL ], + 'D' => [ 'San Luis', 'San Luis', NULL ], + 'Z' => [ 'Santa Cruz', 'Santa Cruz', NULL ], + 'S' => [ 'Santa Fe', 'Santa Fe', NULL ], + 'G' => [ 'Santiago del Estero', 'Santiago del Estero', NULL ], + 'V' => [ 'Tierra del Fuego', 'Tierra del Fuego', NULL ], + 'T' => [ 'Tucumán', 'Tucumán', NULL ], + ], + // Austria. + 'AT' => [], + // Australia. + 'AU' =>[ + 'ACT' => [ 'ACT', 'Australian Capital Territory', NULL ], + 'NSW' => [ 'NSW', 'New South Wales', NULL ], + 'NT' => [ 'NT', 'Northern Territory', NULL ], + 'QLD' => [ 'QLD', 'Queensland', NULL ], + 'SA' => [ 'SA', 'South Australia', NULL ], + 'TAS' => [ 'TAS', 'Tasmania', NULL ], + 'VIC' => [ 'VIC', 'Victoria', NULL ], + 'WA' => [ 'WA', 'Western Australia', NULL ], + // [ 'JBT', 'Jervis Bay Territory', NULL ], + ], + // Aland Islands. + 'AX' => [], + // Bangladesh. + 'BD' => [], + // Belgium. + 'BE' => [], + // Bulgaria. + 'BG' => [], + // Bahrain. + 'BH' => [], + // Burundi. + 'BI' => [], + // Benin. + 'BJ' => [], + // Bolivia. + 'BO' => [], + // Brazil. + 'BR' => [ + 'AC' => [ 'AC', 'Acre', NULL ], + 'AL' => [ 'AL', 'Alagoas', NULL ], + 'AP' => [ 'AP', 'Amapá', NULL ], + 'AM' => [ 'AM', 'Amazonas', NULL ], + 'BA' => [ 'BA', 'Bahia', NULL ], + 'CE' => [ 'CE', 'Ceará', NULL ], + 'DF' => [ 'DF', 'Distrito Federal', NULL ], + 'ES' => [ 'ES', 'Espírito Santo', NULL ], + 'GO' => [ 'GO', 'Goiás', NULL ], + 'MA' => [ 'MA', 'Maranhão', NULL ], + 'MT' => [ 'MT', 'Mato Grosso', NULL ], + 'MS' => [ 'MS', 'Mato Grosso do Sul', NULL ], + 'MG' => [ 'MG', 'Minas Gerais', NULL ], + 'PA' => [ 'PA', 'Pará', NULL ], + 'PB' => [ 'PB', 'Paraíba', NULL ], + 'PR' => [ 'PR', 'Paraná', NULL ], + 'PE' => [ 'PE', 'Pernambuco', NULL ], + 'PI' => [ 'PI', 'Piauí', NULL ], + 'RJ' => [ 'RJ', 'Rio de Janeiro', NULL ], + 'RN' => [ 'RN', 'Rio Grande do Norte', NULL ], + 'RS' => [ 'RS', 'Rio Grande do Sul', NULL ], + 'RO' => [ 'RO', 'Rondônia', NULL ], + 'RR' => [ 'RR', 'Roraima', NULL ], + 'SC' => [ 'SC', 'Santa Catarina', NULL ], + 'SP' => [ 'SP', 'São Paulo', NULL ], + 'SE' => [ 'SE', 'Sergipe', NULL ], + 'TO' => [ 'TO', 'Tocantins', NULL ], + ], + // Canada. + 'CA' => [ + 'AB' => [ 'AB', 'Alberta', 'Alberta' ], + 'BC' => [ 'BC', 'British Columbia', 'Colombie-Britannique' ], + 'MB' => [ 'MB', 'Manitoba', 'Manitoba' ], + 'NB' => [ 'NB', 'New Brunswick', 'Nouveau-Brunswick' ], + 'NL' => [ 'NL', 'Newfoundland and Labrador', 'Terre-Neuve-et-Labrador' ], + 'NT' => [ 'NT', 'Northwest Territories', 'Territoires du Nord-Ouest' ], + 'NS' => [ 'NS', 'Nova Scotia', 'Nouvelle-Écosse' ], + 'NU' => [ 'NU', 'Nunavut', 'Nunavut' ], + 'ON' => [ 'ON', 'Ontario', 'Ontario' ], + 'PE' => [ 'PE', 'Prince Edward Island', 'Île-du-Prince-Édouard' ], + 'QC' => [ 'QC', 'Quebec', 'Québec' ], + 'SK' => [ 'SK', 'Saskatchewan', 'Saskatchewan' ], + 'YT' => [ 'YT', 'Yukon', 'Yukon' ], + ], + // Switzerland. + 'CH' => [], + // China. + 'CN' => [ + 'CN1' => [ 'Yunnan Sheng', 'Yunnan Sheng', '云南省' ], + 'CN2' => [ 'Beijing Shi', 'Beijing Shi', '北京市' ], + 'CN3' => [ 'Tianjin Shi', 'Tianjin Shi', '天津市' ], + 'CN4' => [ 'Hebei Sheng', 'Hebei Sheng', '河北省' ], + 'CN5' => [ 'Shanxi Sheng', 'Shanxi Sheng', '山西省' ], + 'CN6' => [ 'Neimenggu Zizhiqu', 'Neimenggu Zizhiqu', '内蒙古' ], + 'CN7' => [ 'Liaoning Sheng', 'Liaoning Sheng', '辽宁省' ], + 'CN8' => [ 'Jilin Sheng', 'Jilin Sheng', '吉林省' ], + 'CN9' => [ 'Heilongjiang Sheng', 'Heilongjiang Sheng', '黑龙江省' ], + 'CN10' => [ 'Shanghai Shi', 'Shanghai Shi', '上海市' ], + 'CN11' => [ 'Jiangsu Sheng', 'Jiangsu Sheng', '江苏省' ], + 'CN12' => [ 'Zhejiang Sheng', 'Zhejiang Sheng', '浙江省' ], + 'CN13' => [ 'Anhui Sheng', 'Anhui Sheng', '安徽省' ], + 'CN14' => [ 'Fujian Sheng', 'Fujian Sheng', '福建省' ], + 'CN15' => [ 'Jiangxi Sheng', 'Jiangxi Sheng', '江西省' ], + 'CN16' => [ 'Shandong Sheng', 'Shandong Sheng', '山东省' ], + 'CN17' => [ 'Henan Sheng', 'Henan Sheng', '河南省' ], + 'CN18' => [ 'Hubei Sheng', 'Hubei Sheng', '湖北省' ], + 'CN19' => [ 'Hunan Sheng', 'Hunan Sheng', '湖南省' ], + 'CN20' => [ 'Guangdong Sheng', 'Guangdong Sheng', '广东省' ], + 'CN21' => [ 'Guangxi Zhuangzuzizhiqu', 'Guangxi Zhuangzuzizhiqu', '广西' ], + 'CN22' => [ 'Hainan Sheng', 'Hainan Sheng', '海南省' ], + 'CN23' => [ 'Chongqing Shi', 'Chongqing Shi', '重庆市' ], + 'CN24' => [ 'Sichuan Sheng', 'Sichuan Sheng', '四川省' ], + 'CN25' => [ 'Guizhou Sheng', 'Guizhou Sheng', '贵州省' ], + 'CN26' => [ 'Shaanxi Sheng', 'Shaanxi Sheng', '陕西省' ], + 'CN27' => [ 'Gansu Sheng', 'Gansu Sheng', '甘肃省' ], + 'CN28' => [ 'Qinghai Sheng', 'Qinghai Sheng', '青海省' ], + 'CN29' => [ 'Ningxia Huizuzizhiqu', 'Ningxia Huizuzizhiqu', '宁夏' ], + 'CN30' => [ 'Macau', 'Macau', '澳门' ], + 'CN31' => [ 'Xizang Zizhiqu', 'Xizang Zizhiqu', '西藏' ], + 'CN32' => [ 'Xinjiang Weiwuerzizhiqu', 'Xinjiang Weiwuerzizhiqu', '新疆' ], + // [ 'Taiwan', 'Taiwan', '台湾' ], + // [ 'Hong Kong', 'Hong Kong', '香港' ], + ], + // Czech Republic. + 'CZ' => [], + // Germany. + 'DE' => [], + // Denmark. + 'DK' => [], + // Dominican Republic. + 'DO' => [], + // Algeria. + 'DZ' => [], + // Estonia. + 'EE' => [], + // Egypt. + 'EG' => [ + 'EGALX' => [ 'Alexandria Governorate', 'Alexandria Governorate', 'الإسكندرية' ], + 'EGASN' => [ 'Aswan Governorate', 'Aswan Governorate', 'أسوان' ], + 'EGAST' => [ 'Asyut Governorate', 'Asyut Governorate', 'أسيوط' ], + 'EGBA' => [ 'Red Sea Governorate', 'Red Sea Governorate', 'البحر الأحمر' ], + 'EGBH' => [ 'El Beheira Governorate', 'El Beheira Governorate', 'البحيرة' ], + 'EGBNS' => [ 'Beni Suef Governorate', 'Beni Suef Governorate', 'بني سويف' ], + 'EGC' => [ 'Cairo Governorate', 'Cairo Governorate', 'القاهرة' ], + 'EGDK' => [ 'Dakahlia Governorate', 'Dakahlia Governorate', 'الدقهلية' ], + 'EGDT' => [ 'Damietta Governorate', 'Damietta Governorate', 'دمياط' ], + 'EGFYM' => [ 'Faiyum Governorate', 'Faiyum Governorate', 'الفيوم' ], + 'EGGH' => [ 'Gharbia Governorate', 'Gharbia Governorate', 'الغربية' ], + 'EGGZ' => [ 'Giza Governorate', 'Giza Governorate', 'الجيزة' ], + 'EGIS' => [ 'Ismailia Governorate', 'Ismailia Governorate', 'الإسماعيلية' ], + 'EGJS' => [ 'South Sinai Governorate', 'South Sinai Governorate', 'جنوب سيناء' ], + 'EGKB' => [ 'Qalyubia Governorate', 'Qalyubia Governorate', 'القليوبية' ], + 'EGKFS' => [ 'Kafr El Sheikh Governorate', 'Kafr El Sheikh Governorate', 'كفر الشيخ' ], + 'EGKN' => [ 'Qena Governorate', 'Qena Governorate', 'قنا' ], + 'EGLX' => [ 'Luxor Governorate', 'Luxor Governorate', 'الأقصر' ], + 'EGMN' => [ 'Menia Governorate', 'Menia Governorate', 'المنيا' ], + 'EGMNF' => [ 'Menofia Governorate', 'Menofia Governorate', 'المنوفية' ], + 'EGMT' => [ 'Matrouh Governorate', 'Matrouh Governorate', 'مطروح' ], + 'EGPTS' => [ 'Port Said Governorate', 'Port Said Governorate', 'بورسعيد' ], + 'EGSHG' => [ 'Sohag Governorate', 'Sohag Governorate', 'سوهاج' ], + 'EGSHR' => [ 'Ash Sharqia Governorate', 'Ash Sharqia Governorate', 'الشرقية' ], + 'EGSIN' => [ 'North Sinai Governorate', 'North Sinai Governorate', 'شمال سيناء' ], + 'EGSUZ' => [ 'Suez Governorate', 'Suez Governorate', 'السويس' ], + 'EGWAD' => [ 'New Valley Governorate', 'New Valley Governorate', 'الوادي الجديد' ], + ], + // Spain. + 'ES' => [ + 'C' => [ 'A Coruña', 'A Coruña', NULL ], + 'VI' => [ 'Álava', 'Álava', NULL ], + 'AB' => [ 'Albacete', 'Albacete', NULL ], + 'A' => [ 'Alicante', 'Alicante', NULL ], + 'AL' => [ 'Almería', 'Almería', NULL ], + 'O' => [ 'Asturias', 'Asturias', NULL ], + 'AV' => [ 'Ávila', 'Ávila', NULL ], + 'BA' => [ 'Badajoz', 'Badajoz', NULL ], + 'PM' => [ 'Balears', 'Balears', NULL ], + 'B' => [ 'Barcelona', 'Barcelona', NULL ], + 'BU' => [ 'Burgos', 'Burgos', NULL ], + 'CC' => [ 'Cáceres', 'Cáceres', NULL ], + 'CA' => [ 'Cádiz', 'Cádiz', NULL ], + 'S' => [ 'Cantabria', 'Cantabria', NULL ], + 'CS' => [ 'Castellón', 'Castellón', NULL ], + 'CE' => [ 'Ceuta', 'Ceuta', NULL ], + 'CR' => [ 'Ciudad Real', 'Ciudad Real', NULL ], + 'CO' => [ 'Córdoba', 'Córdoba', NULL ], + 'CU' => [ 'Cuenca', 'Cuenca', NULL ], + 'GI' => [ 'Girona', 'Girona', NULL ], + 'GR' => [ 'Granada', 'Granada', NULL ], + 'GU' => [ 'Guadalajara', 'Guadalajara', NULL ], + 'SS' => [ 'Guipúzcoa', 'Guipúzcoa', NULL ], + 'H' => [ 'Huelva', 'Huelva', NULL ], + 'HU' => [ 'Huesca', 'Huesca', NULL ], + 'J' => [ 'Jaén', 'Jaén', NULL ], + 'LO' => [ 'La Rioja', 'La Rioja', NULL ], + 'GC' => [ 'Las Palmas', 'Las Palmas', NULL ], + 'LE' => [ 'León', 'León', NULL ], + 'L' => [ 'Lleida', 'Lleida', NULL ], + 'LU' => [ 'Lugo', 'Lugo', NULL ], + 'M' => [ 'Madrid', 'Madrid', NULL ], + 'MA' => [ 'Málaga', 'Málaga', NULL ], + 'ML' => [ 'Melilla', 'Melilla', NULL ], + 'MU' => [ 'Murcia', 'Murcia', NULL ], + 'NA' => [ 'Navarra', 'Navarra', NULL ], + 'OR' => [ 'Ourense', 'Ourense', NULL ], + 'P' => [ 'Palencia', 'Palencia', NULL ], + 'PO' => [ 'Pontevedra', 'Pontevedra', NULL ], + 'SA' => [ 'Salamanca', 'Salamanca', NULL ], + 'TF' => [ 'Santa Cruz de Tenerife', 'Santa Cruz de Tenerife', NULL ], + 'SG' => [ 'Segovia', 'Segovia', NULL ], + 'SE' => [ 'Sevilla', 'Sevilla', NULL ], + 'SO' => [ 'Soria', 'Soria', NULL ], + 'T' => [ 'Tarragona', 'Tarragona', NULL ], + 'TE' => [ 'Teruel', 'Teruel', NULL ], + 'TO' => [ 'Toledo', 'Toledo', NULL ], + 'V' => [ 'Valencia', 'Valencia', NULL ], + 'VA' => [ 'Valladolid', 'Valladolid', NULL ], + 'BI' => [ 'Vizcaya', 'Vizcaya', NULL ], + 'ZA' => [ 'Zamora', 'Zamora', NULL ], + 'Z' => [ 'Zaragoza', 'Zaragoza', NULL ], + ], + // Finland. + 'FI' => [], + // France. + 'FR' => [], + // French Guiana. + 'GF' => [], + // Ghana. + 'GH' => [], + // Guadeloupe. + 'GP' => [], + // Greece. + 'GR' => [], + // Guatemala. + 'GT' => [], + // Hong Kong. + 'HK' => [ + 'HONG KONG' => [ 'Hong Kong Island', 'Hong Kong Island', '香港島' ], + 'KOWLOON' => [ 'Kowloon', 'Kowloon', '九龍' ], + 'NEW TERRITORIES' => [ 'New Territories', 'New Territories', '新界' ], + ], + // Hungary. + 'HU' => [], + // Indonesia. + 'ID' => [ + 'AC' => [ 'Aceh', 'Aceh', NULL ], + 'SU' => [ 'Sumatera Utara', 'Sumatera Utara', NULL ], + 'SB' => [ 'Sumatera Barat', 'Sumatera Barat', NULL ], + 'RI' => [ 'Riau', 'Riau', NULL ], + 'KR' => [ 'Kepulauan Riau', 'Kepulauan Riau', NULL ], + 'JA' => [ 'Jambi', 'Jambi', NULL ], + 'SS' => [ 'Sumatera Selatan', 'Sumatera Selatan', NULL ], + 'BB' => [ 'Kepulauan Bangka Belitung', 'Kepulauan Bangka Belitung', NULL ], + 'BE' => [ 'Bengkulu', 'Bengkulu', NULL ], + 'LA' => [ 'Lampung', 'Lampung', NULL ], + 'JK' => [ 'DKI Jakarta', 'DKI Jakarta', NULL ], + 'JB' => [ 'Jawa Barat', 'Jawa Barat', NULL ], + 'BT' => [ 'Banten', 'Banten', NULL ], + 'JT' => [ 'Jawa Tengah', 'Jawa Tengah', NULL ], + 'JI' => [ 'Jawa Timur', 'Jawa Timur', NULL ], + 'YO' => [ 'Daerah Istimewa Yogyakarta', 'Daerah Istimewa Yogyakarta', NULL ], + 'BA' => [ 'Bali', 'Bali', NULL ], + 'NB' => [ 'Nusa Tenggara Barat', 'Nusa Tenggara Barat', NULL ], + 'NT' => [ 'Nusa Tenggara Timur', 'Nusa Tenggara Timur', NULL ], + 'KB' => [ 'Kalimantan Barat', 'Kalimantan Barat', NULL ], + 'KT' => [ 'Kalimantan Tengah', 'Kalimantan Tengah', NULL ], + 'KI' => [ 'Kalimantan Timur', 'Kalimantan Timur', NULL ], + 'KS' => [ 'Kalimantan Selatan', 'Kalimantan Selatan', NULL ], + 'KU' => [ 'Kalimantan Utara', 'Kalimantan Utara', NULL ], + 'SA' => [ 'Sulawesi Utara', 'Sulawesi Utara', NULL ], + 'ST' => [ 'Sulawesi Tengah', 'Sulawesi Tengah', NULL ], + 'SG' => [ 'Sulawesi Tenggara', 'Sulawesi Tenggara', NULL ], + 'SR' => [ 'Sulawesi Barat', 'Sulawesi Barat', NULL ], + 'SN' => [ 'Sulawesi Selatan', 'Sulawesi Selatan', NULL ], + 'GO' => [ 'Gorontalo', 'Gorontalo', NULL ], + 'MA' => [ 'Maluku', 'Maluku', NULL ], + 'MU' => [ 'Maluku Utara', 'Maluku Utara', NULL ], + 'PA' => [ 'Papua', 'Papua', NULL ], + 'PB' => [ 'Papua Barat', 'Papua Barat', NULL ], + // [ 'Kalimantan Tengah', 'Kalimantan Tengah', NULL ], + // [ 'Kalimantan Timur', 'Kalimantan Timur', NULL ], + ], + // Ireland. + 'IE' => [ + 'CW' => [ 'Co. Carlow', 'Co. Carlow', NULL ], + 'CN' => [ 'Co. Cavan', 'Co. Cavan', NULL ], + 'CE' => [ 'Co. Clare', 'Co. Clare', NULL ], + 'CO' => [ 'Co. Cork', 'Co. Cork', NULL ], + 'DL' => [ 'Co. Donegal', 'Co. Donegal', NULL ], + 'D' => [ 'Co. Dublin', 'Co. Dublin', NULL ], + 'G' => [ 'Co. Galway', 'Co. Galway', NULL ], + 'KY' => [ 'Co. Kerry', 'Co. Kerry', NULL ], + 'KE' => [ 'Co. Kildare', 'Co. Kildare', NULL ], + 'KK' => [ 'Co. Kilkenny', 'Co. Kilkenny', NULL ], + 'LS' => [ 'Co. Laois', 'Co. Laois', NULL ], + 'LM' => [ 'Co. Leitrim', 'Co. Leitrim', NULL ], + 'LK' => [ 'Co. Limerick', 'Co. Limerick', NULL ], + 'LD' => [ 'Co. Longford', 'Co. Longford', NULL ], + 'LH' => [ 'Co. Louth', 'Co. Louth', NULL ], + 'MO' => [ 'Co. Mayo', 'Co. Mayo', NULL ], + 'MH' => [ 'Co. Meath', 'Co. Meath', NULL ], + 'MN' => [ 'Co. Monaghan', 'Co. Monaghan', NULL ], + 'OY' => [ 'Co. Offaly', 'Co. Offaly', NULL ], + 'RN' => [ 'Co. Roscommon', 'Co. Roscommon', NULL ], + 'SO' => [ 'Co. Sligo', 'Co. Sligo', NULL ], + 'TA' => [ 'Co. Tipperary', 'Co. Tipperary', NULL ], + 'WD' => [ 'Co. Waterford', 'Co. Waterford', NULL ], + 'WH' => [ 'Co. Westmeath', 'Co. Westmeath', NULL ], + 'WX' => [ 'Co. Wexford', 'Co. Wexford', NULL ], + 'WW' => [ 'Co. Wicklow', 'Co. Wicklow', NULL ], + ], + // Israel. + 'IL' => [], + // Isle of Man. + 'IM' => [], + // India. + 'IN' => [ + 'AP' => [ 'Andhra Pradesh', 'Andhra Pradesh', NULL ], + 'AR' => [ 'Arunachal Pradesh', 'Arunachal Pradesh', NULL ], + 'AS' => [ 'Assam', 'Assam', NULL ], + 'BR' => [ 'Bihar', 'Bihar', NULL ], + 'CT' => [ 'Chhattisgarh', 'Chhattisgarh', NULL ], + 'GA' => [ 'Goa', 'Goa', NULL ], + 'GJ' => [ 'Gujarat', 'Gujarat', NULL ], + 'HR' => [ 'Haryana', 'Haryana', NULL ], + 'HP' => [ 'Himachal Pradesh', 'Himachal Pradesh', NULL ], + 'JK' => [ 'Jammu and Kashmir', 'Jammu & Kashmir', NULL ], + 'JH' => [ 'Jharkhand', 'Jharkhand', NULL ], + 'KA' => [ 'Karnataka', 'Karnataka', NULL ], + 'KL' => [ 'Kerala', 'Kerala', NULL ], + // 'LA' => __( 'Ladakh', 'woocommerce' ), + 'MP' => [ 'Madhya Pradesh', 'Madhya Pradesh', NULL ], + 'MH' => [ 'Maharashtra', 'Maharashtra', NULL ], + 'MN' => [ 'Manipur', 'Manipur', NULL ], + 'ML' => [ 'Meghalaya', 'Meghalaya', NULL ], + 'MZ' => [ 'Mizoram', 'Mizoram', NULL ], + 'NL' => [ 'Nagaland', 'Nagaland', NULL ], + 'OR' => [ 'Odisha', 'Odisha', NULL ], + 'PB' => [ 'Punjab', 'Punjab', NULL ], + 'RJ' => [ 'Rajasthan', 'Rajasthan', NULL ], + 'SK' => [ 'Sikkim', 'Sikkim', NULL ], + 'TN' => [ 'Tamil Nadu', 'Tamil Nadu', NULL ], + 'TS' => [ 'Telangana', 'Telangana', NULL ], + 'TR' => [ 'Tripura', 'Tripura', NULL ], + 'UK' => [ 'Uttarakhand', 'Uttarakhand', NULL ], + 'UP' => [ 'Uttar Pradesh', 'Uttar Pradesh', NULL ], + 'WB' => [ 'West Bengal', 'West Bengal', NULL ], + 'AN' => [ 'Andaman and Nicobar Islands', 'Andaman & Nicobar', NULL ], + 'CH' => [ 'Chandigarh', 'Chandigarh', NULL ], + 'DN' => [ 'Dadra and Nagar Haveli', 'Dadra & Nagar Haveli', NULL ], + 'DD' => [ 'Daman and Diu', 'Daman & Diu', NULL ], + 'DL' => [ 'Delhi', 'Delhi', NULL ], + 'LD' => [ 'Lakshadweep', 'Lakshadweep', NULL ], + 'PY' => [ 'Puducherry', 'Puducherry', NULL ], + ], + // Iran. + 'IR' => [ + 'KHZ' => [ 'Khuzestan Province', 'Khuzestan Province', 'استان خوزستان' ], + 'THR' => [ 'Tehran Province', 'Tehran Province', 'استان تهران' ], + 'ILM' => [ 'Ilam Province', 'Ilam Province', 'استان ایلام' ], + 'BHR' => [ 'Bushehr Province', 'Bushehr Province', 'استان بوشهر' ], + 'ADL' => [ 'Ardabil Province', 'Ardabil Province', 'استان اردبیل' ], + 'ESF' => [ 'Isfahan Province', 'Isfahan Province', 'استان اصفهان' ], + 'YZD' => [ 'Yazd Province', 'Yazd Province', 'استان یزد' ], + 'KRH' => [ 'Kermanshah Province', 'Kermanshah Province', 'استان کرمانشاه' ], + 'KRN' => [ 'Kerman Province', 'Kerman Province', 'استان کرمان' ], + 'HDN' => [ 'Hamadan Province', 'Hamadan Province', 'استان همدان' ], + 'GZN' => [ 'Qazvin Province', 'Qazvin Province', 'استان قزوین' ], + 'ZJN' => [ 'Zanjan Province', 'Zanjan Province', 'استان زنجان' ], + 'LRS' => [ 'Lorestan Province', 'Lorestan Province', 'استان لرستان' ], + 'ABZ' => [ 'Alborz Province', 'Alborz Province', 'استان البرز' ], + 'EAZ' => [ 'East Azerbaijan Province', 'East Azerbaijan Province', 'استان آذربایجان شرقی' ], + 'WAZ' => [ 'West Azerbaijan Province', 'West Azerbaijan Province', 'استان آذربایجان غربی' ], + 'CHB' => [ 'Chaharmahal and Bakhtiari Province', 'Chaharmahal and Bakhtiari Province', 'استان چهارمحال و بختیاری' ], + 'SKH' => [ 'South Khorasan Province', 'South Khorasan Province', 'استان خراسان جنوبی' ], + 'RKH' => [ 'Razavi Khorasan Province', 'Razavi Khorasan Province', 'استان خراسان رضوی' ], + 'NKH' => [ 'North Khorasan Province', 'North Khorasan Province', 'استان خراسان شمالی' ], + 'SMN' => [ 'Semnan Province', 'Semnan Province', 'استان سمنان' ], + 'FRS' => [ 'Fars Province', 'Fars Province', 'استان فارس' ], + 'QHM' => [ 'Qom Province', 'Qom Province', 'استان قم' ], + 'KRD' => [ 'Kurdistan Province', 'Kurdistan Province', 'استان کردستان' ], + 'KBD' => [ 'Kohgiluyeh and Boyer-Ahmad Province', 'Kohgiluyeh and Boyer-Ahmad Province', 'استان کهگیلویه و بویراحمد' ], + 'GLS' => [ 'Golestan Province', 'Golestan Province', 'استان گلستان' ], + 'GIL' => [ 'Gilan Province', 'Gilan Province', 'استان گیلان' ], + 'MZN' => [ 'Mazandaran Province', 'Mazandaran Province', 'استان مازندران' ], + 'MKZ' => [ 'Markazi Province', 'Markazi Province', 'استان مرکزی' ], + 'HRZ' => [ 'Hormozgan Province', 'Hormozgan Province', 'استان هرمزگان' ], + 'SBN' => [ 'Sistan and Baluchestan Province', 'Sistan and Baluchestan Province', 'استان سیستان و بلوچستان' ], + ], + // Iceland. + 'IS' => [], + // Italy. + 'IT' => [ + 'AG' => [ 'AG', 'Agrigento', NULL ], + 'AL' => [ 'AL', 'Alessandria', NULL ], + 'AN' => [ 'AN', 'Ancona', NULL ], + 'AO' => [ 'AO', 'Aosta', NULL ], + 'AR' => [ 'AR', 'Arezzo', NULL ], + 'AP' => [ 'AP', 'Ascoli Piceno', NULL ], + 'AT' => [ 'AT', 'Asti', NULL ], + 'AV' => [ 'AV', 'Avellino', NULL ], + 'BA' => [ 'BA', 'Bari', NULL ], + 'BT' => [ 'BT', 'Barletta-Andria-Trani', NULL ], + 'BL' => [ 'BL', 'Belluno', NULL ], + 'BN' => [ 'BN', 'Benevento', NULL ], + 'BG' => [ 'BG', 'Bergamo', NULL ], + 'BI' => [ 'BI', 'Biella', NULL ], + 'BO' => [ 'BO', 'Bologna', NULL ], + 'BZ' => [ 'BZ', 'Bolzano', NULL ], + 'BS' => [ 'BS', 'Brescia', NULL ], + 'BR' => [ 'BR', 'Brindisi', NULL ], + 'CA' => [ 'CA', 'Cagliari', NULL ], + 'CL' => [ 'CL', 'Caltanissetta', NULL ], + 'CB' => [ 'CB', 'Campobasso', NULL ], + 'CE' => [ 'CE', 'Caserta', NULL ], + 'CT' => [ 'CT', 'Catania', NULL ], + 'CZ' => [ 'CZ', 'Catanzaro', NULL ], + 'CH' => [ 'CH', 'Chieti', NULL ], + 'CO' => [ 'CO', 'Como', NULL ], + 'CS' => [ 'CS', 'Cosenza', NULL ], + 'CR' => [ 'CR', 'Cremona', NULL ], + 'KR' => [ 'KR', 'Crotone', NULL ], + 'CN' => [ 'CN', 'Cuneo', NULL ], + 'EN' => [ 'EN', 'Enna', NULL ], + 'FM' => [ 'FM', 'Fermo', NULL ], + 'FE' => [ 'FE', 'Ferrara', NULL ], + 'FI' => [ 'FI', 'Firenze', NULL ], + 'FG' => [ 'FG', 'Foggia', NULL ], + 'FC' => [ 'FC', 'Forlì-Cesena', NULL ], + 'FR' => [ 'FR', 'Frosinone', NULL ], + 'GE' => [ 'GE', 'Genova', NULL ], + 'GO' => [ 'GO', 'Gorizia', NULL ], + 'GR' => [ 'GR', 'Grosseto', NULL ], + 'IM' => [ 'IM', 'Imperia', NULL ], + 'IS' => [ 'IS', 'Isernia', NULL ], + 'SP' => [ 'SP', 'La Spezia', NULL ], + 'AQ' => [ 'AQ', "L'Aquila", NULL ], + 'LT' => [ 'LT', 'Latina', NULL ], + 'LE' => [ 'LE', 'Lecce', NULL ], + 'LC' => [ 'LC', 'Lecco', NULL ], + 'LI' => [ 'LI', 'Livorno', NULL ], + 'LO' => [ 'LO', 'Lodi', NULL ], + 'LU' => [ 'LU', 'Lucca', NULL ], + 'MC' => [ 'MC', 'Macerata', NULL ], + 'MN' => [ 'MN', 'Mantova', NULL ], + 'MS' => [ 'MS', 'Massa-Carrara', NULL ], + 'MT' => [ 'MT', 'Matera', NULL ], + 'ME' => [ 'ME', 'Messina', NULL ], + 'MI' => [ 'MI', 'Milano', NULL ], + 'MO' => [ 'MO', 'Modena', NULL ], + 'MB' => [ 'MB', 'Monza e Brianza', NULL ], + 'NA' => [ 'NA', 'Napoli', NULL ], + 'NO' => [ 'NO', 'Novara', NULL ], + 'NU' => [ 'NU', 'Nuoro', NULL ], + 'OR' => [ 'OR', 'Oristano', NULL ], + 'PD' => [ 'PD', 'Padova', NULL ], + 'PA' => [ 'PA', 'Palermo', NULL ], + 'PR' => [ 'PR', 'Parma', NULL ], + 'PV' => [ 'PV', 'Pavia', NULL ], + 'PG' => [ 'PG', 'Perugia', NULL ], + 'PU' => [ 'PU', 'Pesaro e Urbino', NULL ], + 'PE' => [ 'PE', 'Pescara', NULL ], + 'PC' => [ 'PC', 'Piacenza', NULL ], + 'PI' => [ 'PI', 'Pisa', NULL ], + 'PT' => [ 'PT', 'Pistoia', NULL ], + 'PN' => [ 'PN', 'Pordenone', NULL ], + 'PZ' => [ 'PZ', 'Potenza', NULL ], + 'PO' => [ 'PO', 'Prato', NULL ], + 'RG' => [ 'RG', 'Ragusa', NULL ], + 'RA' => [ 'RA', 'Ravenna', NULL ], + 'RC' => [ 'RC', 'Reggio Calabria', NULL ], + 'RE' => [ 'RE', 'Reggio Emilia', NULL ], + 'RI' => [ 'RI', 'Rieti', NULL ], + 'RN' => [ 'RN', 'Rimini', NULL ], + 'RM' => [ 'RM', 'Roma', NULL ], + 'RO' => [ 'RO', 'Rovigo', NULL ], + 'SA' => [ 'SA', 'Salerno', NULL ], + 'SS' => [ 'SS', 'Sassari', NULL ], + 'SV' => [ 'SV', 'Savona', NULL ], + 'SI' => [ 'SI', 'Siena', NULL ], + 'SR' => [ 'SR', 'Siracusa', NULL ], + 'SO' => [ 'SO', 'Sondrio', NULL ], + 'SU' => [ 'SU', 'Sud Sardegna', NULL ], + 'TA' => [ 'TA', 'Taranto', NULL ], + 'TE' => [ 'TE', 'Teramo', NULL ], + 'TR' => [ 'TR', 'Terni', NULL ], + 'TO' => [ 'TO', 'Torino', NULL ], + 'TP' => [ 'TP', 'Trapani', NULL ], + 'TN' => [ 'TN', 'Trento', NULL ], + 'TV' => [ 'TV', 'Treviso', NULL ], + 'TS' => [ 'TS', 'Trieste', NULL ], + 'UD' => [ 'UD', 'Udine', NULL ], + 'VA' => [ 'VA', 'Varese', NULL ], + 'VE' => [ 'VE', 'Venezia', NULL ], + 'VB' => [ 'VB', 'Verbano-Cusio-Ossola', NULL ], + 'VC' => [ 'VC', 'Vercelli', NULL ], + 'VR' => [ 'VR', 'Verona', NULL ], + 'VV' => [ 'VV', 'Vibo Valentia', NULL ], + 'VI' => [ 'VI', 'Vicenza', NULL ], + 'VT' => [ 'VT', 'Viterbo', NULL ], + ], + // Jamaica. + 'JM' => [ + 'JM-01' => [ 'Kingston', 'Kingston', NULL ], + 'JM-02' => [ 'St. Andrew', 'St. Andrew', NULL ], + 'JM-03' => [ 'St. Thomas', 'St. Thomas', NULL ], + 'JM-04' => [ 'Portland', 'Portland', NULL ], + 'JM-05' => [ 'St. Mary', 'St. Mary', NULL ], + 'JM-06' => [ 'St. Ann', 'St. Ann', NULL ], + 'JM-07' => [ 'Trelawny', 'Trelawny', NULL ], + 'JM-08' => [ 'St. James', 'St. James', NULL ], + 'JM-09' => [ 'Hanover', 'Hanover', NULL ], + 'JM-10' => [ 'Westmoreland', 'Westmoreland', NULL ], + 'JM-11' => [ 'St. Elizabeth', 'St. Elizabeth', NULL ], + 'JM-12' => [ 'Manchester', 'Manchester', NULL ], + 'JM-13' => [ 'Clarendon', 'Clarendon', NULL ], + 'JM-14' => [ 'St. Catherine', 'St. Catherine', NULL ], + ], + // Japan. + 'JP' => [ + 'JP01' => [ 'Hokkaido', 'Hokkaido', '北海道' ], + 'JP02' => [ 'Aomori', 'Aomori', '青森県' ], + 'JP03' => [ 'Iwate', 'Iwate', '岩手県' ], + 'JP04' => [ 'Miyagi', 'Miyagi', '宮城県' ], + 'JP05' => [ 'Akita', 'Akita', '秋田県' ], + 'JP06' => [ 'Yamagata', 'Yamagata', '山形県' ], + 'JP07' => [ 'Fukushima', 'Fukushima', '福島県' ], + 'JP08' => [ 'Ibaraki', 'Ibaraki', '茨城県' ], + 'JP09' => [ 'Tochigi', 'Tochigi', '栃木県' ], + 'JP10' => [ 'Gunma', 'Gunma', '群馬県' ], + 'JP11' => [ 'Saitama', 'Saitama', '埼玉県' ], + 'JP12' => [ 'Chiba', 'Chiba', '千葉県' ], + 'JP13' => [ 'Tokyo', 'Tokyo', '東京都' ], + 'JP14' => [ 'Kanagawa', 'Kanagawa', '神奈川県' ], + 'JP15' => [ 'Niigata', 'Niigata', '新潟県' ], + 'JP16' => [ 'Toyama', 'Toyama', '富山県' ], + 'JP17' => [ 'Ishikawa', 'Ishikawa', '石川県' ], + 'JP18' => [ 'Fukui', 'Fukui', '福井県' ], + 'JP19' => [ 'Yamanashi', 'Yamanashi', '山梨県' ], + 'JP20' => [ 'Nagano', 'Nagano', '長野県' ], + 'JP21' => [ 'Gifu', 'Gifu', '岐阜県' ], + 'JP22' => [ 'Shizuoka', 'Shizuoka', '静岡県' ], + 'JP23' => [ 'Aichi', 'Aichi', '愛知県' ], + 'JP24' => [ 'Mie', 'Mie', '三重県' ], + 'JP25' => [ 'Shiga', 'Shiga', '滋賀県' ], + 'JP26' => [ 'Kyoto', 'Kyoto', '京都府' ], + 'JP27' => [ 'Osaka', 'Osaka', '大阪府' ], + 'JP28' => [ 'Hyogo', 'Hyogo', '兵庫県' ], + 'JP29' => [ 'Nara', 'Nara', '奈良県' ], + 'JP30' => [ 'Wakayama', 'Wakayama', '和歌山県' ], + 'JP31' => [ 'Tottori', 'Tottori', '鳥取県' ], + 'JP32' => [ 'Shimane', 'Shimane', '島根県' ], + 'JP33' => [ 'Okayama', 'Okayama', '岡山県' ], + 'JP34' => [ 'Hiroshima', 'Hiroshima', '広島県' ], + 'JP35' => [ 'Yamaguchi', 'Yamaguchi', '山口県' ], + 'JP36' => [ 'Tokushima', 'Tokushima', '徳島県' ], + 'JP37' => [ 'Kagawa', 'Kagawa', '香川県' ], + 'JP38' => [ 'Ehime', 'Ehime', '愛媛県' ], + 'JP39' => [ 'Kochi', 'Kochi', '高知県' ], + 'JP40' => [ 'Fukuoka', 'Fukuoka', '福岡県' ], + 'JP41' => [ 'Saga', 'Saga', '佐賀県' ], + 'JP42' => [ 'Nagasaki', 'Nagasaki', '長崎県' ], + 'JP43' => [ 'Kumamoto', 'Kumamoto', '熊本県' ], + 'JP44' => [ 'Oita', 'Oita', '大分県' ], + 'JP45' => [ 'Miyazaki', 'Miyazaki', '宮崎県' ], + 'JP46' => [ 'Kagoshima', 'Kagoshima', '鹿児島県' ], + 'JP47' => [ 'Okinawa', 'Okinawa', '沖縄県' ], + ], + // Kenya. + 'KE' => [], + // South Korea. + 'KR' => [], + // Kuwait. + 'KW' => [], + // Laos. + 'LA' => [], + // Lebanon. + 'LB' => [], + // Sri Lanka. + 'LK' => [], + // Liberia. + 'LR' => [], + // Lithuania. + 'LT' => [], + // Luxembourg. + 'LU' => [], + // Moldova. + 'MD' => [], + // Martinique. + 'MQ' => [], + // Malta. + 'MT' => [], + // Mexico. + 'MX' => [ + 'DF' => [ 'CDMX', 'Ciudad de México', NULL ], + 'JA' => [ 'Jal.', 'Jalisco', NULL ], + 'NL' => [ 'N.L.', 'Nuevo León', NULL ], + 'AG' => [ 'Ags.', 'Aguascalientes', NULL ], + 'BC' => [ 'B.C.', 'Baja California', NULL ], + 'BS' => [ 'B.C.S.', 'Baja California Sur', NULL ], + 'CM' => [ 'Camp.', 'Campeche', NULL ], + 'CS' => [ 'Chis.', 'Chiapas', NULL ], + 'CH' => [ 'Chih.', 'Chihuahua', NULL ], + 'CO' => [ 'Coah.', 'Coahuila de Zaragoza', NULL ], + 'CL' => [ 'Col.', 'Colima', NULL ], + 'DG' => [ 'Dgo.', 'Durango', NULL ], + 'GT' => [ 'Gto.', 'Guanajuato', NULL ], + 'GR' => [ 'Gro.', 'Guerrero', NULL ], + 'HG' => [ 'Hgo.', 'Hidalgo', NULL ], + 'MX' => [ 'Méx.', 'Estado de México', NULL ], + 'MI' => [ 'Mich.', 'Michoacán', NULL ], + 'MO' => [ 'Mor.', 'Morelos', NULL ], + 'NA' => [ 'Nay.', 'Nayarit', NULL ], + 'OA' => [ 'Oax.', 'Oaxaca', NULL ], + 'PU' => [ 'Pue.', 'Puebla', NULL ], + 'QT' => [ 'Qro.', 'Querétaro', NULL ], + 'QR' => [ 'Q.R.', 'Quintana Roo', NULL ], + 'SL' => [ 'S.L.P.', 'San Luis Potosí', NULL ], + 'SI' => [ 'Sin.', 'Sinaloa', NULL ], + 'SO' => [ 'Son.', 'Sonora', NULL ], + 'TB' => [ 'Tab.', 'Tabasco', NULL ], + 'TM' => [ 'Tamps.', 'Tamaulipas', NULL ], + 'TL' => [ 'Tlax.', 'Tlaxcala', NULL ], + 'VE' => [ 'Ver.', 'Veracruz', NULL ], + 'YU' => [ 'Yuc.', 'Yucatán', NULL ], + 'ZA' => [ 'Zac.', 'Zacatecas', NULL ], + ], + // Malaysia. + 'MY' => [ + 'JHR' => [ 'Johor', 'Johor', NULL ], + 'KDH' => [ 'Kedah', 'Kedah', NULL ], + 'KTN' => [ 'Kelantan', 'Kelantan', NULL ], + 'LBN' => [ 'Labuan', 'Labuan', NULL ], + 'MLK' => [ 'Melaka', 'Melaka', NULL ], + 'NSN' => [ 'Negeri Sembilan', 'Negeri Sembilan', NULL ], + 'PHG' => [ 'Pahang', 'Pahang', NULL ], + 'PNG' => [ 'Pulau Pinang', 'Pulau Pinang', NULL ], + 'PRK' => [ 'Perak', 'Perak', NULL ], + 'PLS' => [ 'Perlis', 'Perlis', NULL ], + 'SBH' => [ 'Sabah', 'Sabah', NULL ], + 'SWK' => [ 'Sarawak', 'Sarawak', NULL ], + 'SGR' => [ 'Selangor', 'Selangor', NULL ], + 'TRG' => [ 'Terengganu', 'Terengganu', NULL ], + 'PJY' => [ 'Putrajaya', 'Putrajaya', NULL ], + 'KUL' => [ 'Kuala Lumpur', 'Kuala Lumpur', NULL ], + ], + // Mozambique. + 'MZ' => [ + 'MZP' => [ 'Cabo Delgado', 'Cabo Delgado', NULL ], + 'MZG' => [ 'Gaza', 'Gaza', NULL ], + 'MZI' => [ 'Inhambane', 'Inhambane', NULL ], + 'MZB' => [ 'Manica', 'Manica', NULL ], + 'MZL' => [ 'Maputo', 'Maputo', NULL ], + 'MZMPM' => [ 'Cidade de Maputo', 'Cidade de Maputo', NULL ], + 'MZN' => [ 'Nampula', 'Nampula', NULL ], + 'MZA' => [ 'Niassa', 'Niassa', NULL ], + 'MZS' => [ 'Sofala', 'Sofala', NULL ], + 'MZT' => [ 'Tete', 'Tete', NULL ], + 'MZQ' => [ 'Zambezia', 'Zambezia', NULL ], + ], + // Namibia. + 'NA' => [], + // Nigeria. + 'NG' => [ + 'AB' => [ 'Abia', 'Abia', NULL ], + 'FC' => [ 'Federal Capital Territory', 'Federal Capital Territory', NULL ], + 'AD' => [ 'Adamawa', 'Adamawa', NULL ], + 'AK' => [ 'Akwa Ibom', 'Akwa Ibom', NULL ], + 'AN' => [ 'Anambra', 'Anambra', NULL ], + 'BA' => [ 'Bauchi', 'Bauchi', NULL ], + 'BY' => [ 'Bayelsa', 'Bayelsa', NULL ], + 'BE' => [ 'Benue', 'Benue', NULL ], + 'BO' => [ 'Borno', 'Borno', NULL ], + 'CR' => [ 'Cross River', 'Cross River', NULL ], + 'DE' => [ 'Delta', 'Delta', NULL ], + 'EB' => [ 'Ebonyi', 'Ebonyi', NULL ], + 'ED' => [ 'Edo', 'Edo', NULL ], + 'EK' => [ 'Ekiti', 'Ekiti', NULL ], + 'EN' => [ 'Enugu', 'Enugu', NULL ], + 'GO' => [ 'Gombe', 'Gombe', NULL ], + 'IM' => [ 'Imo', 'Imo', NULL ], + 'JI' => [ 'Jigawa', 'Jigawa', NULL ], + 'KD' => [ 'Kaduna', 'Kaduna', NULL ], + 'KN' => [ 'Kano', 'Kano', NULL ], + 'KT' => [ 'Katsina', 'Katsina', NULL ], + 'KE' => [ 'Kebbi', 'Kebbi', NULL ], + 'KO' => [ 'Kogi', 'Kogi', NULL ], + 'KW' => [ 'Kwara', 'Kwara', NULL ], + 'LA' => [ 'Lagos', 'Lagos', NULL ], + 'NA' => [ 'Nasarawa', 'Nasarawa', NULL ], + 'NI' => [ 'Niger', 'Niger', NULL ], + 'OG' => [ 'Ogun State', 'Ogun State', NULL ], + 'ON' => [ 'Ondo', 'Ondo', NULL ], + 'OS' => [ 'Osun', 'Osun', NULL ], + 'OY' => [ 'Oyo', 'Oyo', NULL ], + 'PL' => [ 'Plateau', 'Plateau', NULL ], + 'RI' => [ 'Rivers', 'Rivers', NULL ], + 'SO' => [ 'Sokoto', 'Sokoto', NULL ], + 'TA' => [ 'Taraba', 'Taraba', NULL ], + 'YO' => [ 'Yobe', 'Yobe', NULL ], + 'ZA' => [ 'Zamfara', 'Zamfara', NULL ], + ], + // Netherlands. + 'NL' => [], + // Norway. + 'NO' => [], + // Nepal. + 'NP' => [], + // New Zealand. + 'NZ' => [], + // Peru. + 'PE' => [ + 'CAL' => [ 'Callao', 'Callao', NULL ], + 'LMA' => [ 'Municipalidad Metropolitana de Lima', 'Municipalidad Metropolitana de Lima', NULL ], + 'AMA' => [ 'Amazonas', 'Amazonas', NULL ], + 'ANC' => [ 'Áncash', 'Áncash', NULL ], + 'APU' => [ 'Apurímac', 'Apurímac', NULL ], + 'ARE' => [ 'Arequipa', 'Arequipa', NULL ], + 'AYA' => [ 'Ayacucho', 'Ayacucho', NULL ], + 'CAJ' => [ 'Cajamarca', 'Cajamarca', NULL ], + 'CUS' => [ 'Cuzco', 'Cuzco', NULL ], + 'HUV' => [ 'Huancavelica', 'Huancavelica', NULL ], + 'HUC' => [ 'Huánuco', 'Huánuco', NULL ], + 'ICA' => [ 'Ica', 'Ica', NULL ], + 'JUN' => [ 'Junín', 'Junín', NULL ], + 'LAL' => [ 'La Libertad', 'La Libertad', NULL ], + 'LAM' => [ 'Lambayeque', 'Lambayeque', NULL ], + 'LIM' => [ 'Gobierno Regional de Lima', 'Gobierno Regional de Lima', NULL ], + 'LOR' => [ 'Loreto', 'Loreto', NULL ], + 'MDD' => [ 'Madre de Dios', 'Madre de Dios', NULL ], + 'MOQ' => [ 'Moquegua', 'Moquegua', NULL ], + 'PAS' => [ 'Pasco', 'Pasco', NULL ], + 'PIU' => [ 'Piura', 'Piura', NULL ], + 'PUN' => [ 'Puno', 'Puno', NULL ], + 'SAM' => [ 'San Martín', 'San Martín', NULL ], + 'TAC' => [ 'Tacna', 'Tacna', NULL ], + 'TUM' => [ 'Tumbes', 'Tumbes', NULL ], + 'UCA' => [ 'Ucayali', 'Ucayali', NULL ], + ], + // Philippines. + 'PH' => [ + 'ABR' => [ 'Abra', 'Abra', NULL ], + 'AGN' => [ 'Agusan del Norte', 'Agusan del Norte', NULL ], + 'AGS' => [ 'Agusan del Sur', 'Agusan del Sur', NULL ], + 'AKL' => [ 'Aklan', 'Aklan', NULL ], + 'ALB' => [ 'Albay', 'Albay', NULL ], + 'ANT' => [ 'Antique', 'Antique', NULL ], + 'APA' => [ 'Apayao', 'Apayao', NULL ], + 'AUR' => [ 'Aurora', 'Aurora', NULL ], + 'BAS' => [ 'Basilan', 'Basilan', NULL ], + 'BAN' => [ 'Bataan', 'Bataan', NULL ], + 'BTN' => [ 'Batanes', 'Batanes', NULL ], + 'BTG' => [ 'Batangas', 'Batangas', NULL ], + 'BEN' => [ 'Benguet', 'Benguet', NULL ], + 'BIL' => [ 'Biliran', 'Biliran', NULL ], + 'BOH' => [ 'Bohol', 'Bohol', NULL ], + 'BUK' => [ 'Bukidnon', 'Bukidnon', NULL ], + 'BUL' => [ 'Bulacan', 'Bulacan', NULL ], + 'CAG' => [ 'Cagayan', 'Cagayan', NULL ], + 'CAN' => [ 'Camarines Norte', 'Camarines Norte', NULL ], + 'CAS' => [ 'Camarines Sur', 'Camarines Sur', NULL ], + 'CAM' => [ 'Camiguin', 'Camiguin', NULL ], + 'CAP' => [ 'Capiz', 'Capiz', NULL ], + 'CAT' => [ 'Catanduanes', 'Catanduanes', NULL ], + 'CAV' => [ 'Cavite', 'Cavite', NULL ], + 'CEB' => [ 'Cebu', 'Cebu', NULL ], + 'COM' => [ 'Compostela Valley', 'Compostela Valley', NULL ], + 'NCO' => [ 'Cotabato', 'Cotabato', NULL ], + 'DAV' => [ 'Davao del Norte', 'Davao del Norte', NULL ], + 'DAS' => [ 'Davao del Sur', 'Davao del Sur', NULL ], + 'DAC' => [ 'Davao Occidental', 'Davao Occidental', NULL ], + 'DAO' => [ 'Davao Oriental', 'Davao Oriental', NULL ], + 'DIN' => [ 'Dinagat Islands', 'Dinagat Islands', NULL ], + 'EAS' => [ 'Eastern Samar', 'Eastern Samar', NULL ], + 'GUI' => [ 'Guimaras', 'Guimaras', NULL ], + 'IFU' => [ 'Ifugao', 'Ifugao', NULL ], + 'ILN' => [ 'Ilocos Norte', 'Ilocos Norte', NULL ], + 'ILS' => [ 'Ilocos Sur', 'Ilocos Sur', NULL ], + 'ILI' => [ 'Iloilo', 'Iloilo', NULL ], + 'ISA' => [ 'Isabela', 'Isabela', NULL ], + 'KAL' => [ 'Kalinga', 'Kalinga', NULL ], + 'LUN' => [ 'La Union', 'La Union', NULL ], + 'LAG' => [ 'Laguna', 'Laguna', NULL ], + 'LAN' => [ 'Lanao del Norte', 'Lanao del Norte', NULL ], + 'LAS' => [ 'Lanao del Sur', 'Lanao del Sur', NULL ], + 'LEY' => [ 'Leyte', 'Leyte', NULL ], + 'MAG' => [ 'Maguindanao', 'Maguindanao', NULL ], + 'MAD' => [ 'Marinduque', 'Marinduque', NULL ], + 'MAS' => [ 'Masbate', 'Masbate', NULL ], + 'MSC' => [ 'Misamis Occidental', 'Misamis Occidental', NULL ], + 'MSR' => [ 'Misamis Oriental', 'Misamis Oriental', NULL ], + 'MOU' => [ 'Mountain Province', 'Mountain Province', NULL ], + 'NEC' => [ 'Negros Occidental', 'Negros Occidental', NULL ], + 'NER' => [ 'Negros Oriental', 'Negros Oriental', NULL ], + 'NSA' => [ 'Northern Samar', 'Northern Samar', NULL ], + 'NUE' => [ 'Nueva Ecija', 'Nueva Ecija', NULL ], + 'NUV' => [ 'Nueva Vizcaya', 'Nueva Vizcaya', NULL ], + 'MDC' => [ 'Mindoro Occidental', 'Mindoro Occidental', NULL ], + 'MDR' => [ 'Mindoro Oriental', 'Mindoro Oriental', NULL ], + 'PLW' => [ 'Palawan', 'Palawan', NULL ], + 'PAM' => [ 'Pampanga', 'Pampanga', NULL ], + 'PAN' => [ 'Pangasinan', 'Pangasinan', NULL ], + 'QUE' => [ 'Quezon Province', 'Quezon Province', NULL ], + 'QUI' => [ 'Quirino', 'Quirino', NULL ], + 'RIZ' => [ 'Rizal', 'Rizal', NULL ], + 'ROM' => [ 'Romblon', 'Romblon', NULL ], + 'WSA' => [ 'Samar', 'Samar', NULL ], + 'SAR' => [ 'Sarangani', 'Sarangani', NULL ], + 'SIQ' => [ 'Siquijor', 'Siquijor', NULL ], + 'SOR' => [ 'Sorsogon', 'Sorsogon', NULL ], + 'SCO' => [ 'South Cotabato', 'South Cotabato', NULL ], + 'SLE' => [ 'Southern Leyte', 'Southern Leyte', NULL ], + 'SUK' => [ 'Sultan Kudarat', 'Sultan Kudarat', NULL ], + 'SLU' => [ 'Sulu', 'Sulu', NULL ], + 'SUN' => [ 'Surigao del Norte', 'Surigao del Norte', NULL ], + 'SUR' => [ 'Surigao del Sur', 'Surigao del Sur', NULL ], + 'TAR' => [ 'Tarlac', 'Tarlac', NULL ], + 'TAW' => [ 'Tawi-Tawi', 'Tawi-Tawi', NULL ], + 'ZMB' => [ 'Zambales', 'Zambales', NULL ], + 'ZAN' => [ 'Zamboanga del Norte', 'Zamboanga del Norte', NULL ], + 'ZAS' => [ 'Zamboanga del Sur', 'Zamboanga del Sur', NULL ], + 'ZSI' => [ 'Zamboanga Sibuguey', 'Zamboanga Sibuguey', NULL ], + '00' => [ 'Metro Manila', 'Metro Manila', NULL ], + ], + // Pakistan. + 'PK' => [], + // Poland. + 'PL' => [], + // Puerto Rico. + 'PR' => [], + // Portugal. + 'PT' => [], + // Paraguay. + 'PY' => [], + // Reunion. + 'RE' => [], + // Romania. + 'RO' => [], + // Serbia. + 'RS' => [], + // Sweden. + 'SE' => [], + // Singapore. + 'SG' => [], + // Slovenia. + 'SI' => [], + // Slovakia. + 'SK' => [], + // Thailand. + 'TH' => [ + 'TH-37' => [ 'Amnat Charoen', 'Amnat Charoen', 'อำนาจเจริญ' ], + 'TH-15' => [ 'Ang Thong', 'Ang Thong', 'อ่างทอง' ], + 'TH-14' => [ 'Phra Nakhon Si Ayutthaya', 'Phra Nakhon Si Ayutthaya', 'พระนครศรีอยุธยา' ], + 'TH-10' => [ 'Bangkok', 'Bangkok', 'กรุงเทพมหานคร' ], + 'TH-38' => [ 'Bueng Kan', 'Bueng Kan', 'จังหวัด บึงกาฬ' ], + 'TH-31' => [ 'Buri Ram', 'Buri Ram', 'บุรีรัมย์' ], + 'TH-24' => [ 'Chachoengsao', 'Chachoengsao', 'ฉะเชิงเทรา' ], + 'TH-18' => [ 'Chai Nat', 'Chai Nat', 'ชัยนาท' ], + 'TH-36' => [ 'Chaiyaphum', 'Chaiyaphum', 'ชัยภูมิ' ], + 'TH-22' => [ 'Chanthaburi', 'Chanthaburi', 'จันทบุรี' ], + 'TH-50' => [ 'Chiang Rai', 'Chiang Rai', 'เชียงราย' ], + 'TH-57' => [ 'Chiang Mai', 'Chiang Mai', 'เชียงใหม่' ], + 'TH-20' => [ 'Chon Buri', 'Chon Buri', 'ชลบุรี' ], + 'TH-86' => [ 'Chumpon', 'Chumpon', 'ชุมพร' ], + 'TH-46' => [ 'Kalasin', 'Kalasin', 'กาฬสินธุ์' ], + 'TH-62' => [ 'Kamphaeng Phet', 'Kamphaeng Phet', 'กำแพงเพชร' ], + 'TH-71' => [ 'Kanchanaburi', 'Kanchanaburi', 'กาญจนบุรี' ], + 'TH-40' => [ 'Khon Kaen', 'Khon Kaen', 'ขอนแก่น' ], + 'TH-81' => [ 'Krabi', 'Krabi', 'กระบี่' ], + 'TH-52' => [ 'Lampang', 'Lampang', 'ลำปาง' ], + 'TH-51' => [ 'Lamphun', 'Lamphun', 'ลำพูน' ], + 'TH-42' => [ 'Loei', 'Loei', 'เลย' ], + 'TH-16' => [ 'Lop Buri', 'Lop Buri', 'ลพบุรี' ], + 'TH-58' => [ 'Mae Hong Son', 'Mae Hong Son', 'แม่ฮ่องสอน' ], + 'TH-44' => [ 'Maha Sarakham', 'Maha Sarakham', 'มหาสารคาม' ], + 'TH-49' => [ 'Mukdahan', 'Mukdahan', 'มุกดาหาร' ], + 'TH-26' => [ 'Nakhon Nayok', 'Nakhon Nayok', 'นครนายก' ], + 'TH-73' => [ 'Nakhon Pathom', 'Nakhon Pathom', 'นครปฐม' ], + 'TH-48' => [ 'Nakhon Phanom', 'Nakhon Phanom', 'นครพนม' ], + 'TH-30' => [ 'Nakhon Ratchasima', 'Nakhon Ratchasima', 'นครราชสีมา' ], + 'TH-60' => [ 'Nakhon Sawan', 'Nakhon Sawan', 'นครสวรรค์' ], + 'TH-80' => [ 'Nakhon Si Thammarat', 'Nakhon Si Thammarat', 'นครศรีธรรมราช' ], + 'TH-55' => [ 'Nan', 'Nan', 'น่าน' ], + 'TH-96' => [ 'Narathiwat', 'Narathiwat', 'นราธิวาส' ], + 'TH-39' => [ 'Nong Bua Lam Phu', 'Nong Bua Lam Phu', 'หนองบัวลำภู' ], + 'TH-43' => [ 'Nong Khai', 'Nong Khai', 'หนองคาย' ], + 'TH-12' => [ 'Nonthaburi', 'Nonthaburi', 'นนทบุรี' ], + 'TH-13' => [ 'Pathum Thani', 'Pathum Thani', 'ปทุมธานี' ], + 'TH-94' => [ 'Pattani', 'Pattani', 'ปัตตานี' ], + 'TH-82' => [ 'Phang Nga', 'Phang Nga', 'พังงา' ], + 'TH-93' => [ 'Phattalung', 'Phattalung', 'พัทลุง' ], + 'TH-56' => [ 'Phayao', 'Phayao', 'พะเยา' ], + 'TH-67' => [ 'Phetchabun', 'Phetchabun', 'เพชรบูรณ์' ], + 'TH-76' => [ 'Phetchaburi', 'Phetchaburi', 'เพชรบุรี' ], + 'TH-66' => [ 'Phichit', 'Phichit', 'พิจิตร' ], + 'TH-65' => [ 'Phitsanulok', 'Phitsanulok', 'พิษณุโลก' ], + 'TH-54' => [ 'Phrae', 'Phrae', 'แพร่' ], + 'TH-83' => [ 'Phuket', 'Phuket', 'ภูเก็ต' ], + 'TH-25' => [ 'Prachin Buri', 'Prachin Buri', 'ปราจีนบุรี' ], + 'TH-77' => [ 'Prachuap Khiri Khan', 'Prachuap Khiri Khan', 'ประจวบคีรีขันธ์' ], + 'TH-85' => [ 'Ranong', 'Ranong', 'ระนอง' ], + 'TH-70' => [ 'Ratchaburi', 'Ratchaburi', 'ราชบุรี' ], + 'TH-21' => [ 'Rayong', 'Rayong', 'ระยอง' ], + 'TH-45' => [ 'Roi Et', 'Roi Et', 'ร้อยเอ็ด' ], + 'TH-27' => [ 'Sa Kaeo', 'Sa Kaeo', 'สระแก้ว' ], + 'TH-47' => [ 'Sakon Nakhon', 'Sakon Nakhon', 'สกลนคร' ], + 'TH-11' => [ 'Samut Prakan', 'Samut Prakan', 'สมุทรปราการ' ], + 'TH-74' => [ 'Samut Sakhon', 'Samut Sakhon', 'สมุทรสาคร' ], + 'TH-75' => [ 'Samut Songkhram', 'Samut Songkhram', 'สมุทรสงคราม' ], + 'TH-19' => [ 'Saraburi', 'Saraburi', 'สระบุรี' ], + 'TH-91' => [ 'Satun', 'Satun', 'สตูล' ], + 'TH-17' => [ 'Sing Buri', 'Sing Buri', 'สิงห์บุรี' ], + 'TH-33' => [ 'Si Sa Ket', 'Si Sa Ket', 'ศรีสะเกษ' ], + 'TH-90' => [ 'Songkhla', 'Songkhla', 'สงขลา' ], + 'TH-64' => [ 'Sukhothai', 'Sukhothai', 'สุโขทัย' ], + 'TH-72' => [ 'Suphanburi', 'Suphanburi', 'สุพรรณบุรี' ], + 'TH-84' => [ 'Surat Thani', 'Surat Thani', 'สุราษฎร์ธานี' ], + 'TH-32' => [ 'Surin', 'Surin', 'สุรินทร์' ], + 'TH-63' => [ 'Tak', 'Tak', 'ตาก' ], + 'TH-92' => [ 'Trang', 'Trang', 'ตรัง' ], + 'TH-23' => [ 'Trat', 'Trat', 'ตราด' ], + 'TH-34' => [ 'Ubon Ratchathani', 'Ubon Ratchathani', 'อุบลราชธานี' ], + 'TH-41' => [ 'Udon Thani', 'Udon Thani', 'อุดรธานี' ], + 'TH-61' => [ 'Uthai Thani', 'Uthai Thani', 'อุทัยธานี' ], + 'TH-53' => [ 'Uttaradit', 'Uttaradit', 'อุตรดิตถ์' ], + 'TH-95' => [ 'Yala', 'Yala', 'ยะลา' ], + 'TH-35' => [ 'Yasothon', 'Yasothon', 'ยโสธร' ], + ], + // Turkey. + 'TR' => [ + 'TR01' => [ 'Adana', 'Adana', NULL ], + 'TR02' => [ 'Adıyaman', 'Adıyaman', NULL ], + 'TR03' => [ 'Afyon', 'Afyon', NULL ], + 'TR04' => [ 'Ağrı', 'Ağrı', NULL ], + 'TR05' => [ 'Amasya', 'Amasya', NULL ], + 'TR06' => [ 'Ankara', 'Ankara', NULL ], + 'TR07' => [ 'Antalya', 'Antalya', NULL ], + 'TR08' => [ 'Artvin', 'Artvin', NULL ], + 'TR09' => [ 'Aydın', 'Aydın', NULL ], + 'TR10' => [ 'Balıkesir', 'Balıkesir', NULL ], + 'TR11' => [ 'Bilecik', 'Bilecik', NULL ], + 'TR12' => [ 'Bingöl', 'Bingöl', NULL ], + 'TR13' => [ 'Bitlis', 'Bitlis', NULL ], + 'TR14' => [ 'Bolu', 'Bolu', NULL ], + 'TR15' => [ 'Burdur', 'Burdur', NULL ], + 'TR16' => [ 'Bursa', 'Bursa', NULL ], + 'TR17' => [ 'Çanakkale', 'Çanakkale', NULL ], + 'TR18' => [ 'Çankırı', 'Çankırı', NULL ], + 'TR19' => [ 'Çorum', 'Çorum', NULL ], + 'TR20' => [ 'Denizli', 'Denizli', NULL ], + 'TR21' => [ 'Diyarbakır', 'Diyarbakır', NULL ], + 'TR22' => [ 'Edirne', 'Edirne', NULL ], + 'TR23' => [ 'Elazığ', 'Elazığ', NULL ], + 'TR24' => [ 'Erzincan', 'Erzincan', NULL ], + 'TR25' => [ 'Erzurum', 'Erzurum', NULL ], + 'TR26' => [ 'Eskişehir', 'Eskişehir', NULL ], + 'TR27' => [ 'Gaziantep', 'Gaziantep', NULL ], + 'TR28' => [ 'Giresun', 'Giresun', NULL ], + 'TR29' => [ 'Gümüşhane', 'Gümüşhane', NULL ], + 'TR30' => [ 'Hakkari', 'Hakkari', NULL ], + 'TR31' => [ 'Hatay', 'Hatay', NULL ], + 'TR32' => [ 'Isparta', 'Isparta', NULL ], + 'TR33' => [ 'Mersin', 'Mersin', NULL ], + 'TR34' => [ 'İstanbul', 'İstanbul', NULL ], + 'TR35' => [ 'İzmir', 'İzmir', NULL ], + 'TR36' => [ 'Kars', 'Kars', NULL ], + 'TR37' => [ 'Kastamonu', 'Kastamonu', NULL ], + 'TR38' => [ 'Kayseri', 'Kayseri', NULL ], + 'TR39' => [ 'Kırklareli', 'Kırklareli', NULL ], + 'TR40' => [ 'Kırşehir', 'Kırşehir', NULL ], + 'TR41' => [ 'Kocaeli', 'Kocaeli', NULL ], + 'TR42' => [ 'Konya', 'Konya', NULL ], + 'TR43' => [ 'Kütahya', 'Kütahya', NULL ], + 'TR44' => [ 'Malatya', 'Malatya', NULL ], + 'TR45' => [ 'Manisa', 'Manisa', NULL ], + 'TR46' => [ 'Kahramanmaraş', 'Kahramanmaraş', NULL ], + 'TR47' => [ 'Mardin', 'Mardin', NULL ], + 'TR48' => [ 'Muğla', 'Muğla', NULL ], + 'TR49' => [ 'Muş', 'Muş', NULL ], + 'TR50' => [ 'Nevşehir', 'Nevşehir', NULL ], + 'TR51' => [ 'Niğde', 'Niğde', NULL ], + 'TR52' => [ 'Ordu', 'Ordu', NULL ], + 'TR53' => [ 'Rize', 'Rize', NULL ], + 'TR54' => [ 'Sakarya', 'Sakarya', NULL ], + 'TR55' => [ 'Samsun', 'Samsun', NULL ], + 'TR56' => [ 'Siirt', 'Siirt', NULL ], + 'TR57' => [ 'Sinop', 'Sinop', NULL ], + 'TR58' => [ 'Sivas', 'Sivas', NULL ], + 'TR59' => [ 'Tekirdağ', 'Tekirdağ', NULL ], + 'TR60' => [ 'Tokat', 'Tokat', NULL ], + 'TR61' => [ 'Trabzon', 'Trabzon', NULL ], + 'TR62' => [ 'Tunceli', 'Tunceli', NULL ], + 'TR63' => [ 'Şanlıurfa', 'Şanlıurfa', NULL ], + 'TR64' => [ 'Uşak', 'Uşak', NULL ], + 'TR65' => [ 'Van', 'Van', NULL ], + 'TR66' => [ 'Yozgat', 'Yozgat', NULL ], + 'TR67' => [ 'Zonguldak', 'Zonguldak', NULL ], + 'TR68' => [ 'Aksaray', 'Aksaray', NULL ], + 'TR69' => [ 'Bayburt', 'Bayburt', NULL ], + 'TR70' => [ 'Karaman', 'Karaman', NULL ], + 'TR71' => [ 'Kırıkkale', 'Kırıkkale', NULL ], + 'TR72' => [ 'Batman', 'Batman', NULL ], + 'TR73' => [ 'Şırnak', 'Şırnak', NULL ], + 'TR74' => [ 'Bartın', 'Bartın', NULL ], + 'TR75' => [ 'Ardahan', 'Ardahan', NULL ], + 'TR76' => [ 'Iğdır', 'Iğdır', NULL ], + 'TR77' => [ 'Yalova', 'Yalova', NULL ], + 'TR78' => [ 'Karabük', 'Karabük', NULL ], + 'TR79' => [ 'Kilis', 'Kilis', NULL ], + 'TR80' => [ 'Osmaniye', 'Osmaniye', NULL ], + 'TR81' => [ 'Düzce', 'Düzce', NULL ], + ], + // Tanzania. + 'TZ' => [], + // Uganda. + 'UG' => [], + // United States Minor Outlying Islands. + 'UM' => [], + // United States. + 'US' => [ + 'AL' => [ 'AL', 'Alabama', NULL ], + 'AK' => [ 'AK', 'Alaska', NULL ], + 'AZ' => [ 'AZ', 'Arizona', NULL ], + 'AR' => [ 'AR', 'Arkansas', NULL ], + 'CA' => [ 'CA', 'California', NULL ], + 'CO' => [ 'CO', 'Colorado', NULL ], + 'CT' => [ 'CT', 'Connecticut', NULL ], + 'DE' => [ 'DE', 'Delaware', NULL ], + 'DC' => [ 'DC', 'District of Columbia', NULL ], + 'FL' => [ 'FL', 'Florida', NULL ], + 'GA' => [ 'GA', 'Georgia', NULL ], + 'HI' => [ 'HI', 'Hawaii', NULL ], + 'ID' => [ 'ID', 'Idaho', NULL ], + 'IL' => [ 'IL', 'Illinois', NULL ], + 'IN' => [ 'IN', 'Indiana', NULL ], + 'IA' => [ 'IA', 'Iowa', NULL ], + 'KS' => [ 'KS', 'Kansas', NULL ], + 'KY' => [ 'KY', 'Kentucky', NULL ], + 'LA' => [ 'LA', 'Louisiana', NULL ], + 'ME' => [ 'ME', 'Maine', NULL ], + 'MD' => [ 'MD', 'Maryland', NULL ], + 'MA' => [ 'MA', 'Massachusetts', NULL ], + 'MI' => [ 'MI', 'Michigan', NULL ], + 'MN' => [ 'MN', 'Minnesota', NULL ], + 'MS' => [ 'MS', 'Mississippi', NULL ], + 'MO' => [ 'MO', 'Missouri', NULL ], + 'MT' => [ 'MT', 'Montana', NULL ], + 'NE' => [ 'NE', 'Nebraska', NULL ], + 'NV' => [ 'NV', 'Nevada', NULL ], + 'NH' => [ 'NH', 'New Hampshire', NULL ], + 'NJ' => [ 'NJ', 'New Jersey', NULL ], + 'NM' => [ 'NM', 'New Mexico', NULL ], + 'NY' => [ 'NY', 'New York', NULL ], + 'NC' => [ 'NC', 'North Carolina', NULL ], + 'ND' => [ 'ND', 'North Dakota', NULL ], + 'OH' => [ 'OH', 'Ohio', NULL ], + 'OK' => [ 'OK', 'Oklahoma', NULL ], + 'OR' => [ 'OR', 'Oregon', NULL ], + 'PA' => [ 'PA', 'Pennsylvania', NULL ], + 'RI' => [ 'RI', 'Rhode Island', NULL ], + 'SC' => [ 'SC', 'South Carolina', NULL ], + 'SD' => [ 'SD', 'South Dakota', NULL ], + 'TN' => [ 'TN', 'Tennessee', NULL ], + 'TX' => [ 'TX', 'Texas', NULL ], + 'UT' => [ 'UT', 'Utah', NULL ], + 'VT' => [ 'VT', 'Vermont', NULL ], + 'VA' => [ 'VA', 'Virginia', NULL ], + 'WA' => [ 'WA', 'Washington', NULL ], + 'WV' => [ 'WV', 'West Virginia', NULL ], + 'WI' => [ 'WI', 'Wisconsin', NULL ], + 'WY' => [ 'WY', 'Wyoming', NULL ], + 'AA' => [ 'AA', 'Armed Forces (AA)', NULL ], + 'AE' => [ 'AE', 'Armed Forces (AE)', NULL ], + 'AP' => [ 'AP', 'Armed Forces (AP)', NULL ], + //[ 'AS', 'American Samoa', NULL ], + //[ 'GU', 'Guam', NULL ], + //[ 'MH', 'Marshall Islands', NULL ], + //[ 'FM', 'Micronesia', NULL ], + //[ 'MP', 'Northern Mariana Islands', NULL ], + //[ 'PW', 'Palau', NULL ], + //[ 'PR', 'Puerto Rico', NULL ], + //[ 'VI', 'Virgin Islands', NULL ], + ], + // Vietnam. + 'VN' => [], + // Mayotte. + 'YT' => [], + // South Africa. + 'ZA' => [], + // Zambia. + 'ZM' => [], + ]; + // phpcs:enable +} diff --git a/includes/constants/class-wc-stripe-payment-request-button-states.php b/includes/constants/class-wc-stripe-payment-request-button-states.php index 3758d621d8..19304ad8e5 100644 --- a/includes/constants/class-wc-stripe-payment-request-button-states.php +++ b/includes/constants/class-wc-stripe-payment-request-button-states.php @@ -5,8 +5,6 @@ * Provides a map between WC states and Payment Request API states. * The list is based on libaddressinput: https://github.com/google/libaddressinput, * which is used by Chromium based browsers in the native Payment Request address dialog. - * - * @since 5.1.0 */ if ( ! defined( 'ABSPATH' ) ) { @@ -31,6 +29,10 @@ * 5. The following countries are not listed in WC: * AC (Ascension Island), IC (Canary Islands), EA (Ceuta & Melilla), CP (Clipperton Island), DG (Diego Garcia), * TA (Tristan da Cunha), XK (Kosovo). + * + * @since 5.1.0 + * + * @deprecated 10.3.0 Moved to includes/wc-stripe-express-checkout-button-states.php */ class WC_Stripe_Payment_Request_Button_States { /** diff --git a/includes/payment-methods/class-wc-stripe-express-checkout-ajax-handler.php b/includes/payment-methods/class-wc-stripe-express-checkout-ajax-handler.php index 897dd13545..453f0f6bab 100644 --- a/includes/payment-methods/class-wc-stripe-express-checkout-ajax-handler.php +++ b/includes/payment-methods/class-wc-stripe-express-checkout-ajax-handler.php @@ -427,10 +427,10 @@ public function modify_country_locale_for_express_checkout( $locale ) { return $locale; } - include_once WC_STRIPE_PLUGIN_PATH . '/includes/constants/class-wc-stripe-payment-request-button-states.php'; + include_once WC_STRIPE_PLUGIN_PATH . '/includes/constants/class-wc-stripe-express-checkout-button-states.php'; // For countries that don't have state fields, make the state field optional. - foreach ( WC_Stripe_Payment_Request_Button_States::STATES as $country_code => $states ) { + foreach ( WC_Stripe_Express_Checkout_Button_States::STATES as $country_code => $states ) { if ( empty( $states ) ) { $locale[ $country_code ]['state']['required'] = false; } diff --git a/readme.txt b/readme.txt index a5b31bfc36..7846f75d18 100644 --- a/readme.txt +++ b/readme.txt @@ -140,6 +140,7 @@ If you get stuck, you can ask for help in the [Plugin Forum](https://wordpress.o == Changelog == = 10.3.0 - xxxx-xx-xx = +* Dev - Deprecates and replaces PRBs classes with ECE equivalents * Dev - Renames all express checkout related frontend hooks * Dev - Removes deprecated legacy checkout settings retrieval methods * Fix - Error when using Puerto Rico addresses with express checkouts diff --git a/tests/phpunit/Admin/WC_Stripe_Express_Checkout_Controller_Test.php b/tests/phpunit/Admin/WC_Stripe_Express_Checkout_Controller_Test.php new file mode 100644 index 0000000000..ba187bfc24 --- /dev/null +++ b/tests/phpunit/Admin/WC_Stripe_Express_Checkout_Controller_Test.php @@ -0,0 +1,71 @@ +controller = new WC_Stripe_Express_Checkout_Controller(); + } + + /** + * Tests for `admin_scripts` method. + * + * @return void + */ + public function test_admin_scripts(): void { + $this->controller->admin_scripts(); + + $this->assertTrue( wp_script_is( 'wc-stripe-express-checkout-settings', 'registered' ) ); + $this->assertTrue( wp_script_is( 'wc-stripe-express-checkout-settings', 'enqueued' ) ); + $this->assertTrue( wp_style_is( 'wc-stripe-express-checkout-settings', 'registered' ) ); + $this->assertTrue( wp_style_is( 'wc-stripe-express-checkout-settings', 'enqueued' ) ); + } + + /** + * Tests for `admin_options` method. + * + * @return void + */ + public function test_admin_options(): void { + ob_start(); + $this->controller->admin_options(); + $output = ob_get_clean(); + + $this->assertStringContainsString( 'wc-admin-header', $output ); + $this->assertStringContainsString( 'wc-stripe-express-checkout-settings', $output ); + } +}