Project

General

Profile

Download (10.7 KB) Statistics
| Branch: | Tag: | Revision:
1
<?php
2
/**
3
 * This is the expertsdb_address_all_countries module for use with expertsdb_address.
4
 *
5
 */
6

    
7
/**
8
 * Implementation of hook_help
9
 *
10
 * Display help and module information
11
 * @param string section which section of the site we're displaying help
12
 * @return help text for section
13
 */
14
function expertsdb_address_all_countries_help($section='') {
15

    
16
	$output = '';
17

    
18
	switch ($section) {
19
		case "admin/help#expertsdb_address_all_countries":
20
			$output = '<p>'.  t("Adds support for all countries to expertsdb_address, but without regions."). '</p>';
21
			break;
22
	}
23

    
24
	return $output;
25
} // function expertsdb_address_all_countries_help()
26

    
27

    
28
/**
29
 * Adds all contries to the states table. Adds all_countries to the countries table. Returns whether all queries succeeded.
30
 *
31
 * @return boolean $query_ok
32
 */
33
function expertsdb_address_all_countries_installstates($query_ok) {
34
	if(!$query_ok) return;
35

    
36
	if (!db_table_exists('expertsdb_address_states') or !db_table_exists('expertsdb_address_countries')) return FALSE;
37

    
38
	return _expertsdb_address_all_countries_installer('install');
39

    
40
} // function expertsdb_address_mexico_installstates()
41

    
42

    
43
function _expertsdb_address_all_countries_installer($mode = FALSE){
44
	if(!$mode) return;
45
	/*  $states = array (
46
	 // @TODO: enter all international states here
47
	 array("Aguascalientes","AGS"),
48
	 );*/
49

    
50
	/*  foreach ($states as $state) {
51
	 if(!db_query("INSERT INTO {expertsdb_address_states} (state_name, state_abbrv, country_code) VALUES ('{$state[0]}', '{$state[1]}', 'MX')")) return FALSE;
52
	 }
53
	 */
54

    
55
	$countries = array(
56
	array("Andorra", "AD"),
57
	array("United Arab Emirates", "AE"),
58
	array("Afghanistan", "AF"),
59
	array("Antigua and Barbuda", "AG"),
60
	array("Anguilla", "AI"),
61
	array("Albania", "AL"),
62
	array("Armenia", "AM"),
63
	array("Netherlands Antilles", "AN"),
64
	array("Angola", "AO"),
65
	array("Antarctica", "AQ"),
66
	array("Argentina", "AR"),
67
	array("American Samoa", "AS"),
68
	array("Austria", "AT"),
69
	array("Australia", "AU"),
70
	array("Aruba", "AW"),
71
	array("Åland Islands", "AX"),
72
	array("Azerbaijan", "AZ"),
73
	array("Bosnia and Herzegovina", "BA"),
74
	array("Barbados", "BB"),
75
	array("Bangladesh", "BD"),
76
	array("Belgium", "BE"),
77
	array("Burkina Faso", "BF"),
78
	array("Bulgaria", "BG"),
79
	array("Bahrain", "BH"),
80
	array("Burundi", "BI"),
81
	array("Benin", "BJ"),
82
	array("Saint Barthélemy", "BL"),
83
	array("Bermuda", "BM"),
84
	array("Brunei Darussalam", "BN"),
85
	array("Bolivia", "BO"),
86
	array("Brazil", "BR"),
87
	array("Bahamas", "BS"),
88
	array("Bhutan", "BT"),
89
	array("Bouvet Island", "BV"),
90
	array("Botswana", "BW"),
91
	array("Belarus", "BY"),
92
	array("Belize", "BZ"),
93
	array("Canada", "CA"),
94
	array("Cocos (Keeling) Islands", "CC"),
95
	array("Congo, the Democratic Republic of the", "CD"),
96
	array("Central African Republic", "CF"),
97
	array("Congo", "CG"),
98
	array("Switzerland", "CH"),
99
	array("Côte d'Ivoire", "CI"),
100
	array("Cook Islands", "CK"),
101
	array("Chile", "CL"),
102
	array("Cameroon", "CM"),
103
	array("China", "CN"),
104
	array("Colombia", "CO"),
105
	array("Costa Rica", "CR"),
106
	array("Cuba", "CU"),
107
	array("Cape Verde", "CV"),
108
	array("Christmas Island", "CX"),
109
	array("Cyprus", "CY"),
110
	array("Czech Republic", "CZ"),
111
	array("Germany", "DE"),
112
	array("Djibouti", "DJ"),
113
	array("Denmark", "DK"),
114
	array("Dominica", "DM"),
115
	array("Dominican Republic", "DO"),
116
	array("Algeria", "DZ"),
117
	array("Ecuador", "EC"),
118
	array("Estonia", "EE"),
119
	array("Egypt", "EG"),
120
	array("Western Sahara", "EH"),
121
	array("Eritrea", "ER"),
122
	array("Spain", "ES"),
123
	array("Ethiopia", "ET"),
124
	array("Finland", "FI"),
125
	array("Fiji", "FJ"),
126
	array("Falkland Islands (Malvinas)", "FK"),
127
	array("Micronesia, Federated States of", "FM"),
128
	array("Faroe Islands", "FO"),
129
	array("France", "FR"),
130
	array("Gabon", "GA"),
131
	array("United Kingdom", "GB"),
132
	array("Grenada", "GD"),
133
	array("Georgia", "GE"),
134
	array("French Guiana", "GF"),
135
	array("Guernsey", "GG"),
136
	array("Ghana", "GH"),
137
	array("Gibraltar", "GI"),
138
	array("Greenland", "GL"),
139
	array("Gambia", "GM"),
140
	array("Guinea", "GN"),
141
	array("Guadeloupe", "GP"),
142
	array("Equatorial Guinea", "GQ"),
143
	array("Greece", "GR"),
144
	array("South Georgia and the South Sandwich Islands", "GS"),
145
	array("Guatemala", "GT"),
146
	array("Guam", "GU"),
147
	array("Guinea-Bissau", "GW"),
148
	array("Guyana", "GY"),
149
	array("Hong Kong", "HK"),
150
	array("Heard Island and McDonald Islands", "HM"),
151
	array("Honduras", "HN"),
152
	array("Croatia", "HR"),
153
	array("Haiti", "HT"),
154
	array("Hungary", "HU"),
155
	array("Indonesia", "ID"),
156
	array("Ireland", "IE"),
157
	array("Israel", "IL"),
158
	array("Isle of Man", "IM"),
159
	array("India", "IN"),
160
	array("British Indian Ocean Territory", "IO"),
161
	array("Iraq", "IQ"),
162
	array("Iran, Islamic Republic of", "IR"),
163
	array("Iceland", "IS"),
164
	array("Italy", "IT"),
165
	array("Jersey", "JE"),
166
	array("Jamaica", "JM"),
167
	array("Jordan", "JO"),
168
	array("Japan", "JP"),
169
	array("Kenya", "KE"),
170
	array("Kyrgyzstan", "KG"),
171
	array("Cambodia", "KH"),
172
	array("Kiribati", "KI"),
173
	array("Comoros", "KM"),
174
	array("Saint Kitts and Nevis", "KN"),
175
	array("Korea, Democratic People's Republic of", "KP"),
176
	array("Korea, Republic of", "KR"),
177
	array("Kuwait", "KW"),
178
	array("Cayman Islands", "KY"),
179
	array("Kazakhstan", "KZ"),
180
	array("Lao People's Democratic Republic", "LA"),
181
	array("Lebanon", "LB"),
182
	array("Saint Lucia", "LC"),
183
	array("Liechtenstein", "LI"),
184
	array("Sri Lanka", "LK"),
185
	array("Liberia", "LR"),
186
	array("Lesotho", "LS"),
187
	array("Lithuania", "LT"),
188
	array("Luxembourg", "LU"),
189
	array("Latvia", "LV"),
190
	array("Libyan Arab Jamahiriya", "LY"),
191
	array("Morocco", "MA"),
192
	array("Monaco", "MC"),
193
	array("Moldova", "MD"),
194
	array("Montenegro", "ME"),
195
	array("Saint Martin (French part)", "MF"),
196
	array("Madagascar", "MG"),
197
	array("Marshall Islands", "MH"),
198
	array("Macedonia, the former Yugoslav Republic of", "MK"),
199
	array("Mali", "ML"),
200
	array("Myanmar", "MM"),
201
	array("Mongolia", "MN"),
202
	array("Macao", "MO"),
203
	array("Northern Mariana Islands", "MP"),
204
	array("Martinique", "MQ"),
205
	array("Mauritania", "MR"),
206
	array("Montserrat", "MS"),
207
	array("Malta", "MT"),
208
	array("Mauritius", "MU"),
209
	array("Maldives", "MV"),
210
	array("Malawi", "MW"),
211
	array("Mexico", "MX"),
212
	array("Malaysia", "MY"),
213
	array("Mozambique", "MZ"),
214
	array("Namibia", "NA"),
215
	array("New Caledonia", "NC"),
216
	array("Niger", "NE"),
217
	array("Norfolk Island", "NF"),
218
	array("Nigeria", "NG"),
219
	array("Nicaragua", "NI"),
220
	array("Netherlands", "NL"),
221
	array("Norway", "NO"),
222
	array("Nepal", "NP"),
223
	array("Nauru", "NR"),
224
	array("Niue", "NU"),
225
	array("New Zealand", "NZ"),
226
	array("Oman", "OM"),
227
	array("Panama", "PA"),
228
	array("Peru", "PE"),
229
	array("French Polynesia", "PF"),
230
	array("Papua New Guinea", "PG"),
231
	array("Philippines", "PH"),
232
	array("Pakistan", "PK"),
233
	array("Poland", "PL"),
234
	array("Saint Pierre and Miquelon", "PM"),
235
	array("Pitcairn", "PN"),
236
	array("Puerto Rico", "PR"),
237
	array("Palestinian Territory, Occupied", "PS"),
238
	array("Portugal", "PT"),
239
	array("Palau", "PW"),
240
	array("Paraguay", "PY"),
241
	array("Qatar", "QA"),
242
	array("Réunion", "RE"),
243
	array("Romania", "RO"),
244
	array("Serbia", "RS"),
245
	array("Russian Federation", "RU"),
246
	array("Rwanda", "RW"),
247
	array("Saudi Arabia", "SA"),
248
	array("Solomon Islands", "SB"),
249
	array("Seychelles", "SC"),
250
	array("Sudan", "SD"),
251
	array("Sweden", "SE"),
252
	array("Singapore", "SG"),
253
	array("Saint Helena", "SH"),
254
	array("Slovenia", "SI"),
255
	array("Svalbard and Jan Mayen", "SJ"),
256
	array("Slovakia", "SK"),
257
	array("Sierra Leone", "SL"),
258
	array("San Marino", "SM"),
259
	array("Senegal", "SN"),
260
	array("Somalia", "SO"),
261
	array("Suriname", "SR"),
262
	array("Sao Tome and Principe", "ST"),
263
	array("El Salvador", "SV"),
264
	array("Syrian Arab Republic", "SY"),
265
	array("Swaziland", "SZ"),
266
	array("Turks and Caicos Islands", "TC"),
267
	array("Chad", "TD"),
268
	array("French Southern Territories", "TF"),
269
	array("Togo", "TG"),
270
	array("Thailand", "TH"),
271
	array("Tajikistan", "TJ"),
272
	array("Tokelau", "TK"),
273
	array("Timor-Leste", "TL"),
274
	array("Turkmenistan", "TM"),
275
	array("Tunisia", "TN"),
276
	array("Tonga", "TO"),
277
	array("Turkey", "TR"),
278
	array("Trinidad and Tobago", "TT"),
279
	array("Tuvalu", "TV"),
280
	array("Taiwan, Province of China", "TW"),
281
	array("Tanzania, United Republic of", "TZ"),
282
	array("Ukraine", "UA"),
283
	array("Uganda", "UG"),
284
	array("United States Minor Outlying Islands", "UM"),
285
	// array("United States", "US"), // is handled by the original module!
286
	array("Uruguay", "UY"),
287
	array("Uzbekistan", "UZ"),
288
	array("Holy See (Vatican City State)", "VA"),
289
	array("Saint Vincent and the Grenadines", "VC"),
290
	array("Venezuela", "VE"),
291
	array("Virgin Islands, British", "VG"),
292
	array("Virgin Islands, U.S.", "VI"),
293
	array("Viet Nam", "VN"),
294
	array("Vanuatu", "VU"),
295
	array("Wallis and Futuna", "WF"),
296
	array("Samoa", "WS"),
297
	array("Yemen", "YE"),
298
	array("Mayotte", "YT"),
299
	array("South Africa", "ZA"),
300
	array("Zambia", "ZM"),
301
	array("Zimbabwe", "ZW"),
302
	);
303

    
304
 $errors = 0;
305

    
306
	foreach ($countries as $country) {
307
		// try to figure out, if this country is already implemented by another module
308
		$pat = array(
309
			'@[\W]@', // replace anything but digits and letters with underscore
310
			'@[\_]{1,}@', // replace multiple underscores with one underscore
311
			'@[\_]$@', // no underscore at line end
312
		);
313
		$rep = array(
314
			'_',
315
			'_',
316
			'',
317
		);
318
		$country_parts = explode(',', $country[0]);
319
		$potential_module_name = preg_replace($pat,$rep,'expertsdb_address_' . strtolower($country_parts[0]));
320
		if(!module_exists($potential_module_name)){
321
			switch ($mode){
322
				case 'install':
323
					// insert state
324
					if(!db_query("INSERT INTO {expertsdb_address_countries} (country_name, country_code) VALUES ('" . db_escape_string($country[0]) . "', '{$country[1]}')")){
325
						drupal_set_message('Failed to install !country.',array('!country' => $country_parts[0]));
326
					}
327
					break;
328

    
329
				case 'uninstall':
330

    
331
					if (db_table_exists('expertsdb_address_states'))
332
					$query1 = db_query("DELETE FROM {expertsdb_address_states} WHERE country_code = '%s'", $country[1]);
333
					else $query1 = TRUE;
334
					if (db_table_exists('expertsdb_address_countries'))
335
					$query2 = db_query("DELETE FROM {expertsdb_address_countries} WHERE country_code = '%s'", $country[1]);
336
					else $query2 = TRUE;
337

    
338
					if ($query1 && $query2) {
339
						drupal_set_message(t('!country was uninstalled successfully.',array('!country' => $country[0])));
340
					}
341
					else {
342
						drupal_set_message(t('There was an error removing !country database rows.',array('!country' => $country[0])), 'error');
343
						$errors ++;
344
					}
345
					break;
346
			}
347

    
348

    
349
		} // module seems to exist
350
		else{
351
			switch ($mode){
352
				case 'install':
353
					drupal_set_message(t('Not installing !country. It seems to be handled by an existing module (!module).',array('!country' => $country_parts[0],'!module' => $potential_module_name)));
354
					break;
355

    
356
				case 'uninstall':
357
					drupal_set_message(t('Not uninstalling !country. It seems to be handled by an existing module (!module).',array('!country' => $country_parts[0],'!module' => $potential_module_name)));
358
					break;
359
			}
360

    
361
		}
362
	}
363

    
364
	return ($errors) ? FALSE : TRUE;
365
}
(5-5/23)