depage-forms v1.4.1
html forms made easy
Loading...
Searching...
No Matches
State.php
Go to the documentation of this file.
1<?php
2
9
10namespace Depage\HtmlForm\Elements;
11
36class State extends Single
37{
41 protected $list = [];
42
48 public static function getStates(?array $iso = null): array
49 {
50 $country_states = [
51 // http://en.wikipedia.org/wiki/ISO_3166-2:DE
52 'de' => [
53 'de-bw' => _("Baden-Württemberg"),
54 'de-by' => _("Bayern"),
55 'de-be' => _("Berlin"),
56 'de-bb' => _("Brandenburg"),
57 'de-hb' => _("Bremen"),
58 'de-hh' => _("Hamburg"),
59 'de-he' => _("Hessen"),
60 'de-mv' => _("Mecklenburg-Vorpommern"),
61 'de-ni' => _("Niedersachsen"),
62 'de-nw' => _("Nordrhein-Westfalen"),
63 'de-rp' => _("Rheinland-Pfalz"),
64 'de-sl' => _("Saarland"),
65 'de-sn' => _("Sachsen"),
66 'de-st' => _("Sachsen-Anhalt"),
67 'de-sh' => _("Schleswig-Holstein"),
68 'de-th' => _("Thüringen"),
69 ],
70 // http://en.wikipedia.org/wiki/ISO_3166-2:US
71 'us' => [
72 'us-al' => _("Alabama"),
73 'us-ak' => _("Alaska"),
74 'us-az' => _("Arizona"),
75 'us-ar' => _("Arkansas"),
76 'us-ca' => _("California"),
77 'us-co' => _("Colorado"),
78 'us-ct' => _("Connecticut"),
79 'us-de' => _("Delaware"),
80 'us-fl' => _("Florida"),
81 'us-ga' => _("Georgia"),
82 'us-hi' => _("Hawaii"),
83 'us-id' => _("Idaho"),
84 'us-il' => _("Illinois"),
85 'us-in' => _("Indiana"),
86 'us-ia' => _("Iowa"),
87 'us-ks' => _("Kansas"),
88 'us-ky' => _("Kentucky"),
89 'us-la' => _("Louisiana"),
90 'us-me' => _("Maine"),
91 'us-md' => _("Maryland"),
92 'us-ma' => _("Massachusetts"),
93 'us-mi' => _("Michigan"),
94 'us-mn' => _("Minnesota"),
95 'us-ms' => _("Mississippi"),
96 'us-mo' => _("Missouri"),
97 'us-mt' => _("Montana"),
98 'us-ne' => _("Nebraska"),
99 'us-nv' => _("Nevada"),
100 'us-nh' => _("New Hampshire"),
101 'us-nj' => _("New Jersey"),
102 'us-nm' => _("New Mexico"),
103 'us-ny' => _("New York"),
104 'us-nc' => _("North Carolina"),
105 'us-nd' => _("North Dakota"),
106 'us-oh' => _("Ohio"),
107 'us-ok' => _("Oklahoma"),
108 'us-or' => _("Oregon"),
109 'us-pa' => _("Pennsylvania"),
110 'us-ri' => _("Rhode Island"),
111 'us-sc' => _("South Carolina"),
112 'us-sd' => _("South Dakota"),
113 'us-tn' => _("Tennessee"),
114 'us-tx' => _("Texas"),
115 'us-ut' => _("Utah"),
116 'us-vt' => _("Vermont"),
117 'us-va' => _("Virginia"),
118 'us-wa' => _("Washington"),
119 'us-wv' => _("West Virginia"),
120 'us-wi' => _("Wisconsin"),
121 'us-wy' => _("Wyoming"),
122 'us-dc' => _("District of Columbia"),
123 'us-as' => _("American Samoa"),
124 'us-gu' => _("Guam"),
125 'us-mp' => _("Northern Mariana Islands"),
126 'us-pr' => _("Puerto Rico"),
127 'us-um' => _("United States Minor Outlying Islands"),
128 'us-vi' => _("Virgin Islands, U.S.)"),
129 ],
130 'ca' => [
131 'ca-ab' => _("Alberta"),
132 'ca-bc' => _("British Columbia"),
133 'ca-mb' => _("Manitoba"),
134 'ca-nb' => _("New Brunswick"),
135 'ca-nl' => _("Newfoundland and Labrador"),
136 'ca-nt' => _("Northwest Territories"),
137 'ca-ns' => _("Nova Scotia"),
138 'ca-nu' => _("Nunavut"),
139 'ca-on' => _("Ontario"),
140 'ca-pe' => _("Prince Edward Island"),
141 'ca-qc' => _("Quebec"),
142 'ca-sk' => _("Saskatchewan"),
143 'ca-yt' => _("Yukon"),
144 ],
145 'it' => [
146 'it-ag' => _("Agrigento"),
147 'it-al' => _("Alessandria"),
148 'it-an' => _("Ancona"),
149 'it-ao' => _("Aosta"),
150 'it-ar' => _("Arezzo"),
151 'it-ap' => _("Ascoli Piceno"),
152 'it-at' => _("Asti"),
153 'it-av' => _("Avellino"),
154 'it-ba' => _("Bari"),
155 'it-bt' => _("Barletta-Andria-Trani"),
156 'it-bl' => _("Belluno"),
157 'it-bn' => _("Benevento"),
158 'it-bg' => _("Bergamo"),
159 'it-bi' => _("Biella"),
160 'it-bo' => _("Bologna"),
161 'it-bz' => _("Bolzano"),
162 'it-bs' => _("Brescia"),
163 'it-br' => _("Brindisi"),
164 'it-ca' => _("Cagliari"),
165 'it-cl' => _("Caltanissetta"),
166 'it-cb' => _("Campobasso"),
167 'it-ci' => _("Carbonia-Iglesias"),
168 'it-ce' => _("Caserta"),
169 'it-ct' => _("Catania"),
170 'it-cz' => _("Catanzaro"),
171 'it-ch' => _("Chieti"),
172 'it-co' => _("Como"),
173 'it-cs' => _("Cosenza"),
174 'it-cr' => _("Cremona"),
175 'it-kr' => _("Crotone"),
176 'it-cn' => _("Cuneo"),
177 'it-en' => _("Enna"),
178 'it-fm' => _("Fermo"),
179 'it-fe' => _("Ferrara"),
180 'it-fi' => _("Firenze"),
181 'it-fg' => _("Foggia"),
182 'it-fc' => _("Forlì-Cesena"),
183 'it-fr' => _("Frosinone"),
184 'it-ge' => _("Genova"),
185 'it-go' => _("Gorizia"),
186 'it-gr' => _("Grosseto"),
187 'it-im' => _("Imperia"),
188 'it-is' => _("Isernia"),
189 'it-aq' => _("L'Aquila"),
190 'it-sp' => _("La Spezia"),
191 'it-lt' => _("Latina"),
192 'it-le' => _("Lecce"),
193 'it-lc' => _("Lecco"),
194 'it-li' => _("Livorno"),
195 'it-lo' => _("Lodi"),
196 'it-lu' => _("Lucca"),
197 'it-mc' => _("Macerata"),
198 'it-mn' => _("Mantova"),
199 'it-ms' => _("Massa-Carrara"),
200 'it-mt' => _("Matera"),
201 'it-vs' => _("Medio Campidano"),
202 'it-me' => _("Messina"),
203 'it-mi' => _("Milano"),
204 'it-mo' => _("Modena"),
205 'it-mb' => _("Monza e della Brianza"),
206 'it-na' => _("Napoli"),
207 'it-no' => _("Novara"),
208 'it-nu' => _("Nuoro"),
209 'it-og' => _("Ogliastra"),
210 'it-ot' => _("Olbia-Tempio"),
211 'it-or' => _("Oristano"),
212 'it-pd' => _("Padova"),
213 'it-pa' => _("Palermo"),
214 'it-pr' => _("Parma"),
215 'it-pv' => _("Pavia"),
216 'it-pg' => _("Perugia"),
217 'it-pu' => _("Pesaro e Urbino"),
218 'it-pe' => _("Pescara"),
219 'it-pc' => _("Piacenza"),
220 'it-pi' => _("Pisa"),
221 'it-pt' => _("Pistoia"),
222 'it-pn' => _("Pordenone"),
223 'it-pz' => _("Potenza"),
224 'it-po' => _("Prato"),
225 'it-rg' => _("Ragusa"),
226 'it-ra' => _("Ravenna"),
227 'it-rc' => _("Reggio Calabria"),
228 'it-re' => _("Reggio Emilia"),
229 'it-ri' => _("Rieti"),
230 'it-rn' => _("Rimini"),
231 'it-rm' => _("Roma"),
232 'it-ro' => _("Rovigo"),
233 'it-sa' => _("Salerno"),
234 'it-ss' => _("Sassari"),
235 'it-sv' => _("Savona"),
236 'it-si' => _("Siena"),
237 'it-sr' => _("Siracusa"),
238 'it-so' => _("Sondrio"),
239 'it-ta' => _("Taranto"),
240 'it-te' => _("Teramo"),
241 'it-tr' => _("Terni"),
242 'it-to' => _("Torino"),
243 'it-tp' => _("Trapani"),
244 'it-tn' => _("Trento"),
245 'it-tv' => _("Treviso"),
246 'it-ts' => _("Trieste"),
247 'it-ud' => _("Udine"),
248 'it-va' => _("Varese"),
249 'it-ve' => _("Venezia"),
250 'it-vb' => _("Verbano-Cusio-Ossola"),
251 'it-vc' => _("Vercelli"),
252 'it-vr' => _("Verona"),
253 'it-vv' => _("Vibo Valentia"),
254 'it-vi' => _("Vicenza"),
255 'it-vt' => _("Viterbo"),
256 ],
257 ];
258
259 // return a subset
260 if ($iso !== null) {
261 // search for iso state codes
262 if (is_string($iso) && isset($country_states[$iso])) {
263 return $country_states[$iso];
264 } elseif (is_array($iso)) {
265 $toDelete = array_diff(array_keys($country_states), $iso);
266 foreach ($toDelete as $country) {
267 unset($country_states[$country]);
268 }
269 return $country_states;
270 }
271
272 return '';
273 }
274
275 return $country_states;
276 }
277
285 public function __construct(string $name, array $parameters, object $form)
286 {
287 parent::__construct($name, $parameters, $form);
288
289 if (isset($parameters['defaultValue'])) {
290 $this->defaults['defaultValue'] = $parameters['defaultValue'];
291 }
292
293 $this->list = isset($parameters['states'])
294 ? $parameters['states']
295 : self::getStates();
296
297 // make sure all keys are lower case
298 $this->list = array_change_key_case($this->list, CASE_LOWER);
299
300 // sort alphabetically
301 asort($this->list);
302
303 $this->list = ['' => _("Please Select")] + $this->list;
304 }
305
315 protected function setDefaults(): void
316 {
317 parent::setDefaults();
318
319 $this->defaults['skin'] = 'select';
320 }
321}
322
323/* vim:set ft=php sw=4 sts=4 fdm=marker et : */
HTML-single-choice input type i.e.
Definition Single.php:57
HTML-multiple-choice States input select .
Definition State.php:37
static getStates(?array $iso=null)
Gets the Default States list.
Definition State.php:48
$list
Contains list of ISO countries.
Definition State.php:41
__construct(string $name, array $parameters, object $form)
multiple class constructor
Definition State.php:285
setDefaults()
collects initial values across subclasses.
Definition State.php:315