Projet

Général

Profil

Paste
Télécharger (20,1 ko) Statistiques
| Branche: | Révision:

root / drupal7 / sites / all / modules / addressfield / addressfield.address_formats.inc @ 5136ce55

1
<?php
2

    
3
/**
4
 * Contains the predefined address formats.
5
 *
6
 * Derived from Google's dataset: https://i18napis.appspot.com/address.
7
 */
8

    
9
/**
10
 * Returns the address format for the given country code.
11
 *
12
 * @param $country_code
13
 *   The country code for which the address format should be returned.
14
 *
15
 * @return
16
 *   The address format array with the following keys:
17
 *   - used_fields: An array of fields used by this format. Possible values:
18
 *     'dependent_locality', 'locality', 'administrative_area', 'postal_code'.
19
 *   - required_fields: An array of required fields. See "used_fields".
20
 *   - dependent_locality_label: The label for the dependent locality field.
21
 *   - locality_label: The label for the locality field.
22
 *   - administrative_area_label: The label for the administrative area field.
23
 *   - postal_code_label: The label for the postal code field.
24
 *   - render_administrative_area_value: True if the value should be rendered
25
 *     instead of the ISO code. US example: California instead of CA.
26
 *     Only relevant for countries with predefined administrative areas.
27
 */
28
function addressfield_get_address_format($country_code) {
29
  $default_values = array(
30
    'used_fields' => array('locality'),
31
    'required_fields' => array('locality'),
32
    'dependent_locality_label' => t('Suburb'),
33
    'locality_label' => t('City'),
34
    'administrative_area_label' => t('Province'),
35
    'postal_code_label' => t('Postal code'),
36
    'render_administrative_area_value' => FALSE,
37
  );
38

    
39
  $address_formats = array();
40
  // These formats differ from the default only by the presence of the
41
  // postal code in 'used_fields'.
42
  $countries_with_optional_postal_code = array(
43
    'AC', 'AD', 'AL', 'AZ', 'BA', 'BB', 'BD', 'BG', 'BH', 'BM', 'BN', 'BT',
44
    'CR', 'CY', 'DO', 'DZ', 'EC', 'EH', 'ET', 'FO', 'GE', 'GN', 'GT',
45
    'GW', 'HR', 'HT', 'IL', 'IS', 'JO', 'KE', 'KG', 'KH', 'KW', 'LA',
46
    'LA', 'LB', 'LK', 'LR', 'LS',  'MA', 'MC', 'MD', 'ME', 'MG', 'MK', 'MM',
47
    'MT', 'MU', 'MV', 'NE', 'NP', 'OM', 'PK', 'PY', 'RO', 'RS', 'SA', 'SI',
48
    'SN', 'SZ', 'TA', 'TJ', 'TM', 'TN', 'VA', 'VC', 'VG', 'XK', 'ZM',
49
  );
50
  foreach ($countries_with_optional_postal_code as $code) {
51
    $address_formats[$code] = array(
52
      'used_fields' => array('locality', 'postal_code'),
53
    );
54
  }
55

    
56
  // These formats differ from the default only by the presence of the
57
  // postal code in 'used_fields' and 'required_fields'.
58
  $countries_with_required_postal_code = array(
59
    'AT', 'AX', 'BE', 'BL', 'CH', 'CZ', 'DE', 'DK', 'FI', 'FK', 'FR', 'GF', 'GG',
60
    'GL', 'GP', 'GR', 'GS', 'HU', 'IM', 'IO', 'JE', 'LI', 'LU', 'MF', 'MQ', 'NC',
61
    'NL', 'NO', 'PL', 'PM', 'PN', 'PT', 'RE', 'SE', 'SH', 'SJ', 'SK', 'TC', 'WF',
62
    'YT',
63
  );
64
  foreach ($countries_with_required_postal_code as $code) {
65
    $address_formats[$code] = array(
66
      'used_fields' => array('locality', 'postal_code'),
67
      'required_fields' => array('locality', 'postal_code'),
68
    );
69
  }
70

    
71
  $address_formats['AE'] = array(
72
    'used_fields' => array('administrative_area'),
73
    'administrative_area_label' => t('Emirate'),
74
  );
75
  $address_formats['AM'] = array(
76
    'used_fields' => array('locality', 'administrative_area', 'postal_code'),
77
  );
78
  $address_formats['AR'] = array(
79
    'used_fields' => array('locality', 'administrative_area', 'postal_code'),
80
    'administrative_area_label' => t('State', array(), array('context' => 'Territory of a country')),
81
    'render_administrative_area_value' => TRUE,
82
  );
83
  $address_formats['AS'] = array(
84
    'used_fields' => array('locality', 'administrative_area', 'postal_code'),
85
    'required_fields' => array('locality', 'administrative_area', 'postal_code'),
86
    'administrative_area_label' => t('State', array(), array('context' => 'Territory of a country')),
87
    'postal_code_label' => t('ZIP code'),
88
  );
89
  $address_formats['AU'] = array(
90
    'used_fields' => array('locality', 'administrative_area', 'postal_code'),
91
    'required_fields' => array('locality', 'administrative_area', 'postal_code'),
92
    'locality_label' => t('City/Suburb'),
93
    'administrative_area_label' => t('State', array(), array('context' => 'Territory of a country')),
94
    'postal_code_label' => t('Postcode'),
95
  );
96
  $address_formats['BR'] = array(
97
    'used_fields' => array('dependent_locality', 'locality', 'administrative_area', 'postal_code'),
98
    'required_fields' => array('locality', 'administrative_area', 'postal_code'),
99
    'dependent_locality_label' => t('Neighborhood'),
100
    'administrative_area_label' => t('State', array(), array('context' => 'Territory of a country')),
101
  );
102
  $address_formats['BS'] = array(
103
    'used_fields' => array('locality', 'administrative_area'),
104
    'administrative_area_label' => t('Island'),
105
  );
106
  $address_formats['BY'] = array(
107
    'used_fields' => array('locality', 'administrative_area', 'postal_code'),
108
  );
109
  $address_formats['CA'] = array(
110
    'used_fields' => array('locality', 'administrative_area', 'postal_code'),
111
    'required_fields' => array('locality', 'administrative_area', 'postal_code'),
112
  );
113
  $address_formats['CC'] = array(
114
    'used_fields' => array('locality', 'administrative_area', 'postal_code'),
115
  );
116
  $address_formats['CL'] = array(
117
    'used_fields' => array('dependent_locality', 'locality', 'administrative_area', 'postal_code'),
118
    'administrative_area_label' => t('State', array(), array('context' => 'Territory of a country')),
119
    'render_administrative_area_value' => TRUE,
120
  );
121
  $address_formats['CN'] = array(
122
    'used_fields' => array('dependent_locality', 'locality', 'administrative_area', 'postal_code'),
123
    'required_fields' => array('locality', 'administrative_area'),
124
    'dependent_locality_label' => t('District'),
125
  );
126
  $address_formats['CO'] = array(
127
    'used_fields' => array('locality', 'administrative_area', 'postal_code'),
128
    'administrative_area_label' => t('Department', array(), array('context' => 'Territory of a country')),
129
  );
130
  $address_formats['CV'] = array(
131
    'used_fields' => array('locality', 'administrative_area', 'postal_code'),
132
    'administrative_area_label' => t('Island'),
133
  );
134
  $address_formats['CX'] = array(
135
    'used_fields' => array('locality', 'administrative_area', 'postal_code'),
136
  );
137
  $address_formats['EG'] = array(
138
    'used_fields' => array('locality', 'administrative_area', 'postal_code'),
139
    'administrative_area_label' => t('Governorate'),
140
  );
141
  $address_formats['EE'] = array(
142
    'used_fields' => array('locality', 'administrative_area', 'postal_code'),
143
    'required_fields' => array('locality', 'postal_code'),
144
    'administrative_area_label' => t('County'),
145
  );
146
  $address_formats['ES'] = array(
147
    'used_fields' => array('locality', 'administrative_area', 'postal_code'),
148
    'required_fields' => array('locality', 'administrative_area', 'postal_code'),
149
    'render_administrative_area_value' => TRUE,
150
  );
151
  $address_formats['FM'] = array(
152
    'used_fields' => array('locality', 'administrative_area', 'postal_code'),
153
    'required_fields' => array('locality', 'administrative_area', 'postal_code'),
154
    'administrative_area_label' => t('State', array(), array('context' => 'Territory of a country')),
155
    'postal_code_label' => t('ZIP code'),
156
  );
157
  $address_formats['GB'] = array(
158
    'used_fields' => array('locality', 'administrative_area', 'postal_code'),
159
    'required_fields' => array('locality', 'postal_code'),
160
    'locality_label' => t('Town/City'),
161
    'administrative_area_label' => t('County'),
162
    'postal_code_label' => t('Postcode'),
163
  );
164
  $address_formats['GI'] = array(
165
    'used_fields' => array('postal_code'),
166
  );
167
  $address_formats['GU'] = array(
168
    'used_fields' => array('locality', 'administrative_area', 'postal_code'),
169
    'required_fields' => array('locality', 'administrative_area', 'postal_code'),
170
    'administrative_area_label' => t('State', array(), array('context' => 'Territory of a country')),
171
    'postal_code_label' => t('ZIP code'),
172
  );
173
  $address_formats['HK'] = array(
174
    'used_fields' => array('locality', 'administrative_area'),
175
    'required_fields' => array('administrative_area'),
176
    'locality_label' => t('District'),
177
    'administrative_area_label' => t('Area', array(), array('context' => 'Territory of a country')),
178
  );
179
  $address_formats['HN'] = array(
180
    'used_fields' => array('locality', 'administrative_area', 'postal_code'),
181
    'required_fields' => array('locality', 'administrative_area'),
182
  );
183
  $address_formats['ID'] = array(
184
    'used_fields' => array('locality', 'administrative_area', 'postal_code'),
185
    'locality_label' => t('City/Regency'),
186
    'render_administrative_area_value' => TRUE,
187
  );
188
  $address_formats['IE'] = array(
189
    'used_fields' => array('locality', 'administrative_area'),
190
    'locality_label' => t('Town/City'),
191
    'administrative_area_label' => t('County'),
192
    'render_administrative_area_value' => TRUE,
193
  );
194
  $address_formats['IN'] = array(
195
    'used_fields' => array('locality', 'administrative_area', 'postal_code'),
196
    'required_fields' => array('locality', 'administrative_area', 'postal_code'),
197
    'administrative_area_label' => t('State', array(), array('context' => 'Territory of a country')),
198
    'postal_code_label' => t('PIN code'),
199
    'render_administrative_area_value' => TRUE,
200
  );
201
  $address_formats['IQ'] = array(
202
    'used_fields' => array('locality', 'administrative_area', 'postal_code'),
203
    'required_fields' => array('locality', 'administrative_area'),
204
  );
205
  $address_formats['IR'] = array(
206
    'used_fields' => array('dependent_locality', 'locality', 'administrative_area', 'postal_code'),
207
    'dependent_locality_label' => t('Neighborhood'),
208
  );
209
  $address_formats['IT'] = array(
210
    'used_fields' => array('locality', 'administrative_area', 'postal_code'),
211
    'required_fields' => array('locality', 'administrative_area', 'postal_code'),
212
  );
213
  $address_formats['JM'] = array(
214
    'used_fields' => array('locality', 'administrative_area'),
215
    'required_fields' => array('locality', 'administrative_area'),
216
    'administrative_area_label' => t('Parish', array(), array('context' => 'Territory of a country')),
217
    'render_administrative_area_value' => TRUE,
218
  );
219
  $address_formats['JP'] = array(
220
    'used_fields' => array('locality', 'administrative_area', 'postal_code'),
221
    'required_fields' => array('locality', 'administrative_area', 'postal_code'),
222
    'administrative_area_label' => t('Prefecture'),
223
    'render_administrative_area_value' => TRUE,
224
  );
225
  $address_formats['KI'] = array(
226
    'used_fields' => array('locality', 'administrative_area'),
227
    'administrative_area_label' => t('Island'),
228
  );
229
  $address_formats['KN'] = array(
230
    'used_fields' => array('locality', 'administrative_area'),
231
    'required_fields' => array('locality', 'administrative_area'),
232
    'administrative_area_label' => t('Island'),
233
  );
234
  $address_formats['KR'] = array(
235
    'used_fields' => array('dependent_locality', 'locality', 'administrative_area', 'postal_code'),
236
    'required_fields' => array('locality', 'administrative_area', 'postal_code'),
237
    'dependent_locality_label' => t('District'),
238
    'render_administrative_area_value' => TRUE,
239
  );
240
  $address_formats['KY'] = array(
241
    'used_fields' => array('administrative_area', 'postal_code'),
242
    'required_fields' => array('administrative_area'),
243
    'administrative_area_label' => t('Island'),
244
  );
245
  $address_formats['KZ'] = array(
246
    'used_fields' => array('locality', 'administrative_area', 'postal_code'),
247
    'required_fields' => array('locality', 'administrative_area', 'postal_code'),
248
    'administrative_area_label' => t('Region', array(), array('context' => 'Territory of a country')),
249
    'render_administrative_area_value' => TRUE,
250
  );
251
  $address_formats['LT'] = array(
252
    'used_fields' => array('locality', 'administrative_area', 'postal_code'),
253
    'required_fields' => array('locality', 'postal_code'),
254
    'administrative_area_label' => t('County'),
255
  );
256
  $address_formats['LV'] = array(
257
    'used_fields' => array('locality', 'administrative_area', 'postal_code'),
258
    'required_fields' => array('locality', 'postal_code'),
259
    'administrative_area_label' => t('Municipality'),
260
  );
261
  $address_formats['MH'] = array(
262
    'used_fields' => array('locality', 'administrative_area', 'postal_code'),
263
    'required_fields' => array('locality', 'administrative_area', 'postal_code'),
264
    'administrative_area_label' => t('State', array(), array('context' => 'Territory of a country')),
265
    'postal_code_label' => t('ZIP code'),
266
  );
267
  $address_formats['MN'] = array(
268
    'used_fields' => array('locality', 'administrative_area', 'postal_code'),
269
  );
270
  $address_formats['MP'] = array(
271
    'used_fields' => array('locality', 'administrative_area', 'postal_code'),
272
    'required_fields' => array('locality', 'administrative_area', 'postal_code'),
273
    'administrative_area_label' => t('State', array(), array('context' => 'Territory of a country')),
274
    'postal_code_label' => t('ZIP code'),
275
  );
276
  $address_formats['MX'] = array(
277
    'used_fields' => array('dependent_locality', 'locality', 'administrative_area', 'postal_code'),
278
    'required_fields' => array('locality', 'postal_code'),
279
    'dependent_locality_label' => t('Neighborhood'),
280
    'administrative_area_label' => t('State', array(), array('context' => 'Territory of a country')),
281
  );
282
  $address_formats['MY'] = array(
283
    'used_fields' => array('dependent_locality', 'locality', 'administrative_area', 'postal_code'),
284
    'required_fields' => array('locality', 'postal_code'),
285
    'dependent_locality_label' => t('Village / Township'),
286
    'administrative_area_label' => t('State', array(), array('context' => 'Territory of a country')),
287
    'render_administrative_area_value' => TRUE,
288
  );
289
  $address_formats['MZ'] = array(
290
    'used_fields' => array('locality', 'administrative_area', 'postal_code'),
291
  );
292
  $address_formats['NF'] = array(
293
    'used_fields' => array('locality', 'administrative_area', 'postal_code'),
294
  );
295
  $address_formats['NG'] = array(
296
    'used_fields' => array('locality', 'administrative_area', 'postal_code'),
297
    'administrative_area_label' => t('State', array(), array('context' => 'Territory of a country')),
298
  );
299
  $address_formats['NI'] = array(
300
    'used_fields' => array('locality', 'administrative_area', 'postal_code'),
301
    'administrative_area_label' => t('Department', array(), array('context' => 'Territory of a country')),
302
  );
303
  $address_formats['NR'] = array(
304
    'used_fields' => array('administrative_area'),
305
    'required_fields' => array('administrative_area'),
306
    'administrative_area_label' => t('District'),
307
  );
308
  $address_formats['NZ'] = array(
309
    'used_fields' => array('dependent_locality', 'locality', 'postal_code'),
310
    'required_fields' => array('locality', 'postal_code'),
311
    'locality_label' => t('Town/City'),
312
    'postal_code_label' => t('Postcode'),
313
  );
314
  $address_formats['PA'] = array(
315
    'used_fields' => array('locality', 'administrative_area'),
316
  );
317
  $address_formats['PE'] = array(
318
    'used_fields' => array('locality', 'administrative_area', 'postal_code'),
319
    'locality_label' => t('District'),
320
    'administrative_area_label' => t('Department', array(), array('context' => 'Territory of a country')),
321
  );
322
  $address_formats['PF'] = array(
323
    'used_fields' => array('locality', 'administrative_area', 'postal_code'),
324
    'required_fields' => array('locality', 'administrative_area', 'postal_code'),
325
    'administrative_area_label' => t('Island'),
326
  );
327
  $address_formats['PG'] = array(
328
    'used_fields' => array('locality', 'administrative_area', 'postal_code'),
329
    'required_fields' => array('locality', 'administrative_area'),
330
  );
331
  $address_formats['PH'] = array(
332
    'used_fields' => array('dependent_locality', 'locality', 'administrative_area', 'postal_code'),
333
  );
334
  $address_formats['PR'] = array(
335
    'used_fields' => array('locality', 'postal_code'),
336
    'required_fields' => array('locality', 'postal_code'),
337
    'postal_code_label' => t('ZIP code'),
338
  );
339
  $address_formats['PW'] = array(
340
    'used_fields' => array('locality', 'administrative_area', 'postal_code'),
341
    'required_fields' => array('locality', 'administrative_area', 'postal_code'),
342
    'administrative_area_label' => t('State', array(), array('context' => 'Territory of a country')),
343
    'postal_code_label' => t('ZIP code'),
344
  );
345
  $address_formats['RU'] = array(
346
    'used_fields' => array('locality', 'administrative_area', 'postal_code'),
347
    'required_fields' => array('locality', 'postal_code'),
348
    'render_administrative_area_value' => TRUE,
349
  );
350
  $address_formats['SC'] = array(
351
    'used_fields' => array('locality', 'administrative_area'),
352
    'administrative_area_label' => t('Island'),
353
  );
354
  $address_formats['SG'] = array(
355
    'used_fields' => array('postal_code'),
356
    'required_fields' => array('postal_code'),
357
  );
358
  $address_formats['SM'] = array(
359
    'used_fields' => array('locality', 'postal_code'),
360
    'required_fields' => array('postal_code'),
361
  );
362
  $address_formats['SO'] = array(
363
    'used_fields' => array('locality', 'administrative_area', 'postal_code'),
364
    'required_fields' => array('locality', 'administrative_area'),
365
  );
366
  $address_formats['SR'] = array(
367
    'used_fields' => array('locality', 'administrative_area'),
368
  );
369
  $address_formats['SV'] = array(
370
    'used_fields' => array('locality', 'administrative_area', 'postal_code'),
371
    'required_fields' => array('locality', 'administrative_area'),
372
  );
373
  $address_formats['TH'] = array(
374
    'used_fields' => array('dependent_locality', 'locality', 'administrative_area', 'postal_code'),
375
  );
376
  $address_formats['TR'] = array(
377
    'used_fields' => array('locality', 'administrative_area', 'postal_code'),
378
    'required_fields' => array('locality', 'postal_code'),
379
    'locality_label' => t('District'),
380
    'render_administrative_area_value' => TRUE,
381
  );
382
  $address_formats['TV'] = array(
383
    'used_fields' => array('locality', 'administrative_area'),
384
    'administrative_area_label' => t('Island'),
385
  );
386
  $address_formats['TW'] = array(
387
    'used_fields' => array('locality', 'administrative_area', 'postal_code'),
388
    'required_fields' => array('locality', 'administrative_area', 'postal_code'),
389
  );
390
  $address_formats['UA'] = array(
391
    'used_fields' => array('locality', 'administrative_area', 'postal_code'),
392
    'required_fields' => array('locality', 'postal_code'),
393
    'administrative_area_label' => t('Region', array(), array('context' => 'Territory of a country')),
394
  );
395
  $address_formats['UM'] = array(
396
    'used_fields' => array('locality', 'administrative_area', 'postal_code'),
397
    'required_fields' => array('locality', 'administrative_area'),
398
    'administrative_area_label' => t('State', array(), array('context' => 'Territory of a country')),
399
    'postal_code_label' => t('ZIP code'),
400
  );
401
  $address_formats['US'] = array(
402
    'used_fields' => array('locality', 'administrative_area', 'postal_code'),
403
    'required_fields' => array('locality', 'administrative_area', 'postal_code'),
404
    'administrative_area_label' => t('State', array(), array('context' => 'Territory of a country')),
405
    'postal_code_label' => t('ZIP code'),
406
  );
407
  $address_formats['UY'] = array(
408
    'used_fields' => array('locality', 'administrative_area', 'postal_code'),
409
  );
410
  $address_formats['UZ'] = array(
411
    'used_fields' => array('locality', 'administrative_area', 'postal_code'),
412
  );
413
  $address_formats['VE'] = array(
414
    'used_fields' => array('locality', 'administrative_area', 'postal_code'),
415
    'required_fields' => array('locality', 'administrative_area'),
416
    'render_administrative_area_value' => TRUE,
417
  );
418
  $address_formats['VI'] = array(
419
    'used_fields' => array('locality', 'administrative_area', 'postal_code'),
420
    'required_fields' => array('locality', 'administrative_area', 'postal_code'),
421
    'administrative_area_label' => t('State', array(), array('context' => 'Territory of a country')),
422
    'postal_code_label' => t('ZIP code'),
423
  );
424
  $address_formats['VN'] = array(
425
    'used_fields' => array('locality', 'administrative_area', 'postal_code'),
426
  );
427
  $address_formats['ZA'] = array(
428
    'used_fields' => array('dependent_locality', 'locality', 'postal_code'),
429
    'required_fields' => array('locality', 'postal_code'),
430
  );
431

    
432
  // Allow other modules to alter the formats.
433
  drupal_alter('addressfield_address_formats', $address_formats);
434

    
435
  if (isset($address_formats[$country_code])) {
436
    $format = $address_formats[$country_code] + $default_values;
437
  }
438
  else {
439
    // There is no predefined address format for the requested country,
440
    // but the defaults should work fine.
441
    $format = $default_values;
442
  }
443

    
444
  return $format;
445
}