Skip to content
Browse files

Initial import

  • Loading branch information...
0 parents commit bd939b541f5a4e0d3a2a39a854cb3d72e2b7b7a4 Dave Miller committed Aug 28, 2010
Showing with 428 additions and 0 deletions.
  1. +19 −0 MIT-LICENSE.txt
  2. +3 −0 TODO.txt
  3. +62 −0 classes/djmCountries.php
  4. +283 −0 data/country-list.php
  5. +61 −0 smarty/function.select_country.php
19 MIT-LICENSE.txt
@@ -0,0 +1,19 @@
+Copyright (c) 2010 Dave Miller
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
+
3 TODO.txt
@@ -0,0 +1,3 @@
+* Set up phpDocumentor to generate documentation
+* Add samples and/or unit tests
+* Write README file
62 classes/djmCountries.php
@@ -0,0 +1,62 @@
+<?php /*
+Copyright (c) 2010 Dave Miller
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
+
+/**
+ * @author Dave Miller
+ * @copyright Copyright (c) 2010 Dave Miller
+ * @license http://www.dave-miller.com/mit-license MIT License
+ */
+
+class djmCountries
+{
+
+ public static function getList()
+ {
+ return require dirname(__FILE__) . '/../data/country-list.php';
+ }
+
+ public static function codeToCountry($code)
+ {
+ $countries = self::getList();
+ if (isset($countries[$code]))
+ {
+ return $countries[$code];
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ public static function countryToCode($value)
+ {
+ $value = strtolower($value);
+ foreach (self::getList() as $code => $country)
+ {
+ if (strtolower($country) == $value)
+ {
+ return $code;
+ }
+ }
+ return null;
+ }
+
+}
+
283 data/country-list.php
@@ -0,0 +1,283 @@
+<?php /*
+Copyright (c) 2010 Dave Miller
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
+
+/**
+ * @author Dave Miller
+ * @copyright Copyright (c) 2010 Dave Miller
+ * @license http://www.dave-miller.com/mit-license MIT License
+ */
+
+// List from:
+// http://en.wikipedia.org/wiki/ISO_3166-1
+
+// Official list:
+// http://www.iso.org/iso/country_codes/iso_3166_code_lists.htm
+// (Not used because all names are uppercase)
+
+return array(
+ "AF" => "Afghanistan",
+ "AX" => "Åland Islands",
+ "AL" => "Albania",
+ "DZ" => "Algeria",
+ "AS" => "American Samoa",
+ "AD" => "Andorra",
+ "AO" => "Angola",
+ "AI" => "Anguilla",
+ "AQ" => "Antarctica",
+ "AG" => "Antigua and Barbuda",
+ "AR" => "Argentina",
+ "AM" => "Armenia",
+ "AW" => "Aruba",
+ "AU" => "Australia",
+ "AT" => "Austria",
+ "AZ" => "Azerbaijan",
+ "BS" => "Bahamas",
+ "BH" => "Bahrain",
+ "BD" => "Bangladesh",
+ "BB" => "Barbados",
+ "BY" => "Belarus",
+ "BE" => "Belgium",
+ "BZ" => "Belize",
+ "BJ" => "Benin",
+ "BM" => "Bermuda",
+ "BT" => "Bhutan",
+ "BO" => "Bolivia",
+ "BA" => "Bosnia and Herzegovina",
+ "BW" => "Botswana",
+ "BV" => "Bouvet Island",
+ "BR" => "Brazil",
+ "IO" => "British Indian Ocean Territory",
+ "BN" => "Brunei Darussalam",
+ "BG" => "Bulgaria",
+ "BF" => "Burkina Faso",
+ "BI" => "Burundi",
+ "KH" => "Cambodia",
+ "CM" => "Cameroon",
+ "CA" => "Canada",
+ "CV" => "Cape Verde",
+ "KY" => "Cayman Islands",
+ "CF" => "Central African Republic",
+ "TD" => "Chad",
+ "CL" => "Chile",
+ "CN" => "China",
+ "CX" => "Christmas Island",
+ "CC" => "Cocos (Keeling) Islands",
+ "CO" => "Colombia",
+ "KM" => "Comoros",
+ "CG" => "Congo",
+ "CD" => "Congo, Democratic Republic of the",
+ "CK" => "Cook Islands",
+ "CR" => "Costa Rica",
+ "CI" => "C&ocirc;te d'Ivoire",
+ "HR" => "Croatia",
+ "CU" => "Cuba",
+ "CY" => "Cyprus",
+ "CZ" => "Czech Republic",
+ "DK" => "Denmark",
+ "DJ" => "Djibouti",
+ "DM" => "Dominica",
+ "DO" => "Dominican Republic",
+ "EC" => "Ecuador",
+ "EG" => "Egypt",
+ "SV" => "El Salvador",
+ "GQ" => "Equatorial Guinea",
+ "ER" => "Eritrea",
+ "EE" => "Estonia",
+ "ET" => "Ethiopia",
+ "FK" => "Falkland Islands", // "Falkland Islands (Malvinas)",
+ "FO" => "Faroe Islands",
+ "FJ" => "Fiji",
+ "FI" => "Finland",
+ "FR" => "France",
+ "GF" => "French Guiana",
+ "PF" => "French Polynesia",
+ "TF" => "French Southern Territories",
+ "GA" => "Gabon",
+ "GM" => "Gambia",
+ "GE" => "Georgia",
+ "DE" => "Germany",
+ "GH" => "Ghana",
+ "GI" => "Gibraltar",
+ "GR" => "Greece",
+ "GL" => "Greenland",
+ "GD" => "Grenada",
+ "GP" => "Guadeloupe",
+ "GU" => "Guam",
+ "GT" => "Guatemala",
+ "GG" => "Guernsey",
+ "GN" => "Guinea",
+ "GW" => "Guinea-Bissau",
+ "GY" => "Guyana",
+ "HT" => "Haiti",
+ "HM" => "Heard Island and McDonald Islands",
+ //"VA" => "Holy See (Vatican City State)",
+ "HN" => "Honduras",
+ "HK" => "Hong Kong",
+ "HU" => "Hungary",
+ "IS" => "Iceland",
+ "IN" => "India",
+ "ID" => "Indonesia",
+ "IR" => "Iran", // "Iran, Islamic Republic of",
+ "IQ" => "Iraq",
+ "IE" => "Ireland",
+ "IM" => "Isle of Man",
+ "IL" => "Israel",
+ "IT" => "Italy",
+ "JM" => "Jamaica",
+ "JP" => "Japan",
+ "JE" => "Jersey",
+ "JO" => "Jordan",
+ "KZ" => "Kazakhstan",
+ "KE" => "Kenya",
+ "KI" => "Kiribati",
+ "KP" => "Korea, Democratic People's Republic of",
+ "KR" => "Korea, Republic of",
+ "KW" => "Kuwait",
+ "KG" => "Kyrgyzstan",
+ "LA" => "Laos", // "Lao People's Democratic Republic",
+ "LV" => "Latvia",
+ "LB" => "Lebanon",
+ "LS" => "Lesotho",
+ "LR" => "Liberia",
+ "LY" => "Libyan Arab Jamahiriya",
+ "LI" => "Liechtenstein",
+ "LT" => "Lithuania",
+ "LU" => "Luxembourg",
+ "MO" => "Macao",
+ "MK" => "Macedonia", // "Macedonia, the former Yugoslav Republic of",
+ "MG" => "Madagascar",
+ "MW" => "Malawi",
+ "MY" => "Malaysia",
+ "MV" => "Maldives",
+ "ML" => "Mali",
+ "MT" => "Malta",
+ "MH" => "Marshall Islands",
+ "MQ" => "Martinique",
+ "MR" => "Mauritania",
+ "MU" => "Mauritius",
+ "YT" => "Mayotte",
+ "MX" => "Mexico",
+ "FM" => "Micronesia, Federated States of",
+ "MD" => "Moldova",
+ "MC" => "Monaco",
+ "MN" => "Mongolia",
+ "ME" => "Montenegro",
+ "MS" => "Montserrat",
+ "MA" => "Morocco",
+ "MZ" => "Mozambique",
+ "MM" => "Myanmar",
+ "NA" => "Namibia",
+ "NR" => "Nauru",
+ "NP" => "Nepal",
+ "NL" => "Netherlands",
+ "AN" => "Netherlands Antilles",
+ "NC" => "New Caledonia",
+ "NZ" => "New Zealand",
+ "NI" => "Nicaragua",
+ "NE" => "Niger",
+ "NG" => "Nigeria",
+ "NU" => "Niue",
+ "NF" => "Norfolk Island",
+ "MP" => "Northern Mariana Islands",
+ "NO" => "Norway",
+ "OM" => "Oman",
+ "PK" => "Pakistan",
+ "PW" => "Palau",
+ //"PS" => "Palestinian Territory, Occupied",
+ "PA" => "Panama",
+ "PG" => "Papua New Guinea",
+ "PY" => "Paraguay",
+ "PE" => "Peru",
+ "PH" => "Philippines",
+ "PN" => "Pitcairn",
+ "PL" => "Poland",
+ "PT" => "Portugal",
+ "PR" => "Puerto Rico",
+ "QA" => "Qatar",
+ "RE" => "R&eacute;union",
+ "RO" => "Romania",
+ "RU" => "Russian Federation",
+ "RW" => "Rwanda",
+ "BL" => "Saint Barth&eacute;lemy",
+ "SH" => "Saint Helena",
+ "KN" => "Saint Kitts and Nevis",
+ "LC" => "Saint Lucia",
+ "MF" => "Saint Martin (France)", // "Saint Martin (French part)",
+ "PM" => "Saint Pierre and Miquelon",
+ "VC" => "Saint Vincent and the Grenadines",
+ "WS" => "Samoa",
+ "SM" => "San Marino",
+ "ST" => "Sao Tome and Principe",
+ "SA" => "Saudi Arabia",
+ "SN" => "Senegal",
+ "RS" => "Serbia",
+ "SC" => "Seychelles",
+ "SL" => "Sierra Leone",
+ "SG" => "Singapore",
+ "SK" => "Slovakia",
+ "SI" => "Slovenia",
+ "SB" => "Solomon Islands",
+ "SO" => "Somalia",
+ "ZA" => "South Africa",
+ "GS" => "South Georgia and the South Sandwich Islands",
+ "ES" => "Spain",
+ "LK" => "Sri Lanka",
+ "SD" => "Sudan",
+ "SR" => "Suriname",
+ "SJ" => "Svalbard and Jan Mayen",
+ "SZ" => "Swaziland",
+ "SE" => "Sweden",
+ "CH" => "Switzerland",
+ "SY" => "Syrian Arab Republic",
+ "TW" => "Taiwan", // "Taiwan, Province of China",
+ "TJ" => "Tajikistan",
+ "TZ" => "Tanzania", // "Tanzania, United Republic of",
+ "TH" => "Thailand",
+ "TL" => "Timor-Leste",
+ "TG" => "Togo",
+ "TK" => "Tokelau",
+ "TO" => "Tonga",
+ "TT" => "Trinidad and Tobago",
+ "TN" => "Tunisia",
+ "TR" => "Turkey",
+ "TM" => "Turkmenistan",
+ "TC" => "Turks and Caicos Islands",
+ "TV" => "Tuvalu",
+ "UG" => "Uganda",
+ "UA" => "Ukraine",
+ "AE" => "United Arab Emirates",
+ "GB" => "United Kingdom",
+ "US" => "United States",
+ "UM" => "United States Minor Outlying Islands",
+ "UY" => "Uruguay",
+ "UZ" => "Uzbekistan",
+ "VU" => "Vanuatu",
+ "VA" => "Vatican City",
+ "VE" => "Venezuela",
+ "VN" => "Viet Nam",
+ "VG" => "Virgin Islands, British",
+ "VI" => "Virgin Islands, U.S.",
+ "WF" => "Wallis and Futuna",
+ "EH" => "Western Sahara",
+ "YE" => "Yemen",
+ "ZM" => "Zambia",
+ "ZW" => "Zimbabwe",
+);
+
61 smarty/function.select_country.php
@@ -0,0 +1,61 @@
+<?php /*
+Copyright (c) 2010 Dave Miller
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
+
+/**
+ * @author Dave Miller
+ * @copyright Copyright (c) 2010 Dave Miller
+ * @license http://www.dave-miller.com/mit-license MIT License
+ */
+
+require_once dirname(__FILE__) . '/../classes/djmCountries.php';
+
+/**
+ * Generate <select> and <option> tags for country pickers.
+ *
+ * @param array Smarty parameters
+ * - string <b>name</b> = null:
+ * The name of the <select> tag (default: no <select> tag is output).
+ * - string <b>selected</b> = null:
+ * The value to mark as selected.
+ * - array <b>data</b> = false:
+ * Any parameters passed from the controller as an array.
+ * - string <b>assign</b> = null:
+ * The name of a variable to assign the output to. (default: output it}
+ * - Any other parameters are used as attributes on the <select> tag (e.g. class="myclass").
+ * @param Smarty The Smarty object.
+ * @return string
+ */
+function smarty_function_select_country($params, &$smarty)
+{
+ $params['options'] = djmCountries::getList();
+
+ // Convert country name to code
+ if (!empty($params['selected']) && strlen($params['selected']) > 2)
+ {
+ $params['selected'] = djmCountries::countryToCode($params['selected']);
+ }
+
+ /**
+ * @see function.options.php
+ */
+ require_once $smarty->_get_plugin_filepath('function', 'options');
+ return smarty_function_options($params, $smarty);
+}
+

0 comments on commit bd939b5

Please sign in to comment.
Something went wrong with that request. Please try again.