DBCountry::getCountryName()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 1
c 0
b 0
f 0
nc 1
nop 0
dl 0
loc 3
rs 10
1
<?php
2
3
namespace LeKoala\GeoTools\FieldType;
4
5
use LeKoala\GeoTools\CountriesList;
6
use SilverStripe\ORM\FieldType\DBVarchar;
7
use LeKoala\GeoTools\Fields\CountryDropdownField;
8
9
/**
10
 * A country field
11
 */
12
class DBCountry extends DBVarchar
13
{
14
    /**
15
     * @link http://country.io/phone.json
16
     * @var array<string,string>
17
     */
18
    protected static $prefixes = [
19
        "BD" => "880",
20
        "BE" => "32",
21
        "BF" => "226",
22
        "BG" => "359",
23
        "BA" => "387",
24
        "BB" => "1-246",
25
        "WF" => "681",
26
        "BL" => "590",
27
        "BM" => "1-441",
28
        "BN" => "673",
29
        "BO" => "591",
30
        "BH" => "973",
31
        "BI" => "257",
32
        "BJ" => "229",
33
        "BT" => "975",
34
        "JM" => "1-876",
35
        "BV" => "",
36
        "BW" => "267",
37
        "WS" => "685",
38
        "BQ" => "599",
39
        "BR" => "55",
40
        "BS" => "1-242",
41
        "JE" => "44-1534",
42
        "BY" => "375",
43
        "BZ" => "501",
44
        "RU" => "7",
45
        "RW" => "250",
46
        "RS" => "381",
47
        "TL" => "670",
48
        "RE" => "262",
49
        "TM" => "993",
50
        "TJ" => "992",
51
        "RO" => "40",
52
        "TK" => "690",
53
        "GW" => "245",
54
        "GU" => "1-671",
55
        "GT" => "502",
56
        "GS" => "",
57
        "GR" => "30",
58
        "GQ" => "240",
59
        "GP" => "590",
60
        "JP" => "81",
61
        "GY" => "592",
62
        "GG" => "44-1481",
63
        "GF" => "594",
64
        "GE" => "995",
65
        "GD" => "1-473",
66
        "GB" => "44",
67
        "GA" => "241",
68
        "SV" => "503",
69
        "GN" => "224",
70
        "GM" => "220",
71
        "GL" => "299",
72
        "GI" => "350",
73
        "GH" => "233",
74
        "OM" => "968",
75
        "TN" => "216",
76
        "JO" => "962",
77
        "HR" => "385",
78
        "HT" => "509",
79
        "HU" => "36",
80
        "HK" => "852",
81
        "HN" => "504",
82
        "HM" => "",
83
        "VE" => "58",
84
        "PR" => "1-787",
85
        "PS" => "970",
86
        "PW" => "680",
87
        "PT" => "351",
88
        "SJ" => "47",
89
        "PY" => "595",
90
        "IQ" => "964",
91
        "PA" => "507",
92
        "PF" => "689",
93
        "PG" => "675",
94
        "PE" => "51",
95
        "PK" => "92",
96
        "PH" => "63",
97
        "PN" => "870",
98
        "PL" => "48",
99
        "PM" => "508",
100
        "ZM" => "260",
101
        "EH" => "212",
102
        "EE" => "372",
103
        "EG" => "20",
104
        "ZA" => "27",
105
        "EC" => "593",
106
        "IT" => "39",
107
        "VN" => "84",
108
        "SB" => "677",
109
        "ET" => "251",
110
        "SO" => "252",
111
        "ZW" => "263",
112
        "SA" => "966",
113
        "ES" => "34",
114
        "ER" => "291",
115
        "ME" => "382",
116
        "MD" => "373",
117
        "MG" => "261",
118
        "MF" => "590",
119
        "MA" => "212",
120
        "MC" => "377",
121
        "UZ" => "998",
122
        "MM" => "95",
123
        "ML" => "223",
124
        "MO" => "853",
125
        "MN" => "976",
126
        "MH" => "692",
127
        "MK" => "389",
128
        "MU" => "230",
129
        "MT" => "356",
130
        "MW" => "265",
131
        "MV" => "960",
132
        "MQ" => "596",
133
        "MP" => "1-670",
134
        "MS" => "1-664",
135
        "MR" => "222",
136
        "IM" => "44-1624",
137
        "UG" => "256",
138
        "TZ" => "255",
139
        "MY" => "60",
140
        "MX" => "52",
141
        "IL" => "972",
142
        "FR" => "33",
143
        "IO" => "246",
144
        "SH" => "290",
145
        "FI" => "358",
146
        "FJ" => "679",
147
        "FK" => "500",
148
        "FM" => "691",
149
        "FO" => "298",
150
        "NI" => "505",
151
        "NL" => "31",
152
        "NO" => "47",
153
        "NA" => "264",
154
        "VU" => "678",
155
        "NC" => "687",
156
        "NE" => "227",
157
        "NF" => "672",
158
        "NG" => "234",
159
        "NZ" => "64",
160
        "NP" => "977",
161
        "NR" => "674",
162
        "NU" => "683",
163
        "CK" => "682",
164
        "XK" => "",
165
        "CI" => "225",
166
        "CH" => "41",
167
        "CO" => "57",
168
        "CN" => "86",
169
        "CM" => "237",
170
        "CL" => "56",
171
        "CC" => "61",
172
        "CA" => "1",
173
        "CG" => "242",
174
        "CF" => "236",
175
        "CD" => "243",
176
        "CZ" => "420",
177
        "CY" => "357",
178
        "CX" => "61",
179
        "CR" => "506",
180
        "CW" => "599",
181
        "CV" => "238",
182
        "CU" => "53",
183
        "SZ" => "268",
184
        "SY" => "963",
185
        "SX" => "599",
186
        "KG" => "996",
187
        "KE" => "254",
188
        "SS" => "211",
189
        "SR" => "597",
190
        "KI" => "686",
191
        "KH" => "855",
192
        "KN" => "1-869",
193
        "KM" => "269",
194
        "ST" => "239",
195
        "SK" => "421",
196
        "KR" => "82",
197
        "SI" => "386",
198
        "KP" => "850",
199
        "KW" => "965",
200
        "SN" => "221",
201
        "SM" => "378",
202
        "SL" => "232",
203
        "SC" => "248",
204
        "KZ" => "7",
205
        "KY" => "1-345",
206
        "SG" => "65",
207
        "SE" => "46",
208
        "SD" => "249",
209
        "DO" => "1-809",
210
        "DM" => "1-767",
211
        "DJ" => "253",
212
        "DK" => "45",
213
        "VG" => "1-284",
214
        "DE" => "49",
215
        "YE" => "967",
216
        "DZ" => "213",
217
        "US" => "1",
218
        "UY" => "598",
219
        "YT" => "262",
220
        "UM" => "1",
221
        "LB" => "961",
222
        "LC" => "1-758",
223
        "LA" => "856",
224
        "TV" => "688",
225
        "TW" => "886",
226
        "TT" => "1-868",
227
        "TR" => "90",
228
        "LK" => "94",
229
        "LI" => "423",
230
        "LV" => "371",
231
        "TO" => "676",
232
        "LT" => "370",
233
        "LU" => "352",
234
        "LR" => "231",
235
        "LS" => "266",
236
        "TH" => "66",
237
        "TF" => "",
238
        "TG" => "228",
239
        "TD" => "235",
240
        "TC" => "1-649",
241
        "LY" => "218",
242
        "VA" => "379",
243
        "VC" => "1-784",
244
        "AE" => "971",
245
        "AD" => "376",
246
        "AG" => "1-268",
247
        "AF" => "93",
248
        "AI" => "1-264",
249
        "VI" => "1-340",
250
        "IS" => "354",
251
        "IR" => "98",
252
        "AM" => "374",
253
        "AL" => "355",
254
        "AO" => "244",
255
        "AQ" => "",
256
        "AS" => "1-684",
257
        "AR" => "54",
258
        "AU" => "61",
259
        "AT" => "43",
260
        "AW" => "297",
261
        "IN" => "91",
262
        "AX" => "358-18",
263
        "AZ" => "994",
264
        "IE" => "353",
265
        "ID" => "62",
266
        "UA" => "380",
267
        "QA" => "974",
268
        "MZ" => "258"
269
    ];
270
271
    /**
272
     * @param string $name
273
     * @param array<mixed> $options
274
     */
275
    public function __construct($name = null, $options = [])
276
    {
277
        parent::__construct($name, 2, $options);
278
    }
279
280
    /**
281
     * @param string $title
282
     * @param array<mixed> $params
283
     * @return CountryDropdownField
284
     */
285
    public function scaffoldFormField($title = null, $params = null)
286
    {
287
        $field = CountryDropdownField::create($this->name, $title);
288
        return $field;
289
    }
290
291
    /**
292
     * @return string
293
     */
294
    public function getCountryName()
295
    {
296
        return CountriesList::getNameFromCode($this->value);
297
    }
298
299
    /**
300
     * @return string the prefix, without +
301
     */
302
    public function getCountryPhonePrefix()
303
    {
304
        if (isset(self::$prefixes[$this->value])) {
305
            return self::$prefixes[$this->value];
306
        }
307
        return '';
308
    }
309
}
310