/** * Returns a list of all taxamo relevant EU countries. * * @since 1.0.0 * @api * * @param string $type [prefix|name|vat] * name .. code => "name" * prefix .. code => "prefix - name" * vat .. vat-prefix => code * @return array */ public static function get_country_codes($type = 'prefix') { if (null === self::$Countries) { $country_names = MS_Gateway::get_country_codes(); // Country names in current language. $list = get_site_transient('ms_taxamo_countries'); $list = false; if (!$list || !is_array($list)) { $resp = self::taxamo()->getCountriesDict('true'); $list = array(); foreach ($resp->dictionary as $item) { $list[$item->code] = array('name' => $item->name, 'vat' => $item->tax_number_country_code); } set_site_transient('ms_taxamo_countries', $list, WEEK_IN_SECONDS); } self::$Countries = array(); self::$Countries_Prefix = array(); self::$Countries_Vat = array(); foreach ($list as $code => $item) { if (isset($country_names[$code])) { $item['name'] = $country_names[$code]; } self::$Countries[$code] = $item['name']; self::$Countries_Prefix[$code] = $code . ' - ' . $item['name']; self::$Countries_Vat[$item['vat']] = $code; } self::$Countries['XX'] = '- ' . __('Outside the EU', 'membership2') . ' -'; self::$Countries_Prefix['XX'] = '- ' . __('Outside the EU', 'membership2') . ' -'; } switch ($type) { case 'prefix': return self::$Countries_Prefix; case 'vat': return self::$Countries_Vat; case 'name': default: return self::$Countries; } }