From 1ac8ba63b833887574e5cb45ac23b2968dbc7dc8 Mon Sep 17 00:00:00 2001 From: Andreas Heigl Date: Sun, 23 Mar 2014 05:42:38 +0100 Subject: [PATCH 1/2] Optimizes Usergroup-display This comit adds three things: 1. Support for 2-letter Countrycodes as defined in ISO 3166-1 alpha2. For that I added a list of country codes from http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements 2. Caching of retrieved usergroup-information. For that the list of usergroups as well as the iCalendar-files of the single usergroups are loaded one every 24 hours into files on the filesystem. those files are then used for information retrieval 3. Slight optimization of UG-display. For that I've changed display-style from an unordered to a definition list. I've also set the date before the meeting-information as that visually calms the whole list a bit. --- include/countries-alpha2.inc | 255 +++++++++++++++++++++++++++++++++++ include/layout.inc | 15 ++- include/site.inc | 3 + ug.php | 59 ++++---- 4 files changed, 303 insertions(+), 29 deletions(-) create mode 100644 include/countries-alpha2.inc diff --git a/include/countries-alpha2.inc b/include/countries-alpha2.inc new file mode 100644 index 000000000..8fe976f14 --- /dev/null +++ b/include/countries-alpha2.inc @@ -0,0 +1,255 @@ + "Andorra", + "AE" => "United Arab Emirates", + "AF" => "Afghanistan", + "AG" => "Antigua and Barbuda", + "AI" => "Anguilla", + "AL" => "Albania", + "AM" => "Armenia", + "AO" => "Angola", + "AQ" => "Antarctica", + "AR" => "Argentina", + "AS" => "American Samoa", + "AT" => "Austria", + "AU" => "Australia", + "AW" => "Aruba", + "AX" => "Åland Islands", + "AZ" => "Azerbaijan", + "BA" => "Bosnia and Herzegovina", + "BB" => "Barbados", + "BD" => "Bangladesh", + "BE" => "Belgium", + "BF" => "Burkina Faso", + "BG" => "Bulgaria", + "BH" => "Bahrain", + "BI" => "Burundi", + "BJ" => "Benin", + "BL" => "Saint Barthélemy", + "BM" => "Bermuda", + "BN" => "Brunei Darussalam", + "BO" => "Bolivia, Plurinational State of", + "BQ" => "Bonaire, Sint Eustatius and Saba", + "BR" => "Brazil", + "BS" => "Bahamas", + "BT" => "Bhutan", + "BV" => "Bouvet Island", + "BW" => "Botswana", + "BY" => "Belarus", + "BZ" => "Belize", + "CA" => "Canada", + "CC" => "Cocos (Keeling) Islands", + "CD" => "Congo, the Democratic Republic of the", + "CF" => "Central African Republic", + "CG" => "Congo", + "CH" => "Switzerland", + "CI" => "Côte d'Ivoire", + "CK" => "Cook Islands", + "CL" => "Chile", + "CM" => "Cameroon", + "CN" => "China", + "CO" => "Colombia", + "CR" => "Costa Rica", + "CU" => "Cuba", + "CV" => "Cape Verde", + "CW" => "Curaçao", + "CX" => "Christmas Island", + "CY" => "Cyprus", + "CZ" => "Czech Republic", + "DE" => "Germany", + "DJ" => "Djibouti", + "DK" => "Denmark", + "DM" => "Dominica", + "DO" => "Dominican Republic", + "DZ" => "Algeria", + "EC" => "Ecuador", + "EE" => "Estonia", + "EG" => "Egypt", + "EH" => "Western Sahara", + "ER" => "Eritrea", + "ES" => "Spain", + "ET" => "Ethiopia", + "FI" => "Finland", + "FJ" => "Fiji", + "FK" => "Falkland Islands (Malvinas)", + "FM" => "Micronesia, Federated States of", + "FO" => "Faroe Islands", + "FR" => "France", + "GA" => "Gabon", + "GB" => "United Kingdom", + "GD" => "Grenada", + "GE" => "Georgia", + "GF" => "French Guiana", + "GG" => "Guernsey", + "GH" => "Ghana", + "GI" => "Gibraltar", + "GL" => "Greenland", + "GM" => "Gambia", + "GN" => "Guinea", + "GP" => "Guadeloupe", + "GQ" => "Equatorial Guinea", + "GR" => "Greece", + "GS" => "South Georgia and the South Sandwich Islands", + "GT" => "Guatemala", + "GU" => "Guam", + "GW" => "Guinea-Bissau", + "GY" => "Guyana", + "HK" => "Hong Kong", + "HM" => "Heard Island and McDonald Islands", + "HN" => "Honduras", + "HR" => "Croatia", + "HT" => "Haiti", + "HU" => "Hungary", + "ID" => "Indonesia", + "IE" => "Ireland", + "IL" => "Israel", + "IM" => "Isle of Man", + "IN" => "India", + "IO" => "British Indian Ocean Territory", + "IQ" => "Iraq", + "IR" => "Iran, Islamic Republic of", + "IS" => "Iceland", + "IT" => "Italy", + "JE" => "Jersey", + "JM" => "Jamaica", + "JO" => "Jordan", + "JP" => "Japan", + "KE" => "Kenya", + "KG" => "Kyrgyzstan", + "KH" => "Cambodia", + "KI" => "Kiribati", + "KM" => "Comoros", + "KN" => "Saint Kitts and Nevis", + "KP" => "Korea, Democratic People's Republic of", + "KR" => "Korea, Republic of", + "KW" => "Kuwait", + "KY" => "Cayman Islands", + "KZ" => "Kazakhstan", + "LA" => "Lao People's Democratic Republic", + "LB" => "Lebanon", + "LC" => "Saint Lucia", + "LI" => "Liechtenstein", + "LK" => "Sri Lanka", + "LR" => "Liberia", + "LS" => "Lesotho", + "LT" => "Lithuania", + "LU" => "Luxembourg", + "LV" => "Latvia", + "LY" => "Libya", + "MA" => "Morocco", + "MC" => "Monaco", + "MD" => "Moldova, Republic of", + "ME" => "Montenegro", + "MF" => "Saint Martin (French part)", + "MG" => "Madagascar", + "MH" => "Marshall Islands", + "MK" => "Macedonia, the former Yugoslav Republic of", + "ML" => "Mali", + "MM" => "Myanmar", + "MN" => "Mongolia", + "MO" => "Macao", + "MP" => "Northern Mariana Islands", + "MQ" => "Martinique", + "MR" => "Mauritania", + "MS" => "Montserrat", + "MT" => "Malta", + "MU" => "Mauritius", + "MV" => "Maldives", + "MW" => "Malawi", + "MX" => "Mexico", + "MY" => "Malaysia", + "MZ" => "Mozambique", + "NA" => "Namibia", + "NC" => "New Caledonia", + "NE" => "Niger", + "NF" => "Norfolk Island", + "NG" => "Nigeria", + "NI" => "Nicaragua", + "NL" => "Netherlands", + "NO" => "Norway", + "NP" => "Nepal", + "NR" => "Nauru", + "NU" => "Niue", + "NZ" => "New Zealand", + "OM" => "Oman", + "PA" => "Panama", + "PE" => "Peru", + "PF" => "French Polynesia", + "PG" => "Papua New Guinea", + "PH" => "Philippines", + "PK" => "Pakistan", + "PL" => "Poland", + "PM" => "Saint Pierre and Miquelon", + "PN" => "Pitcairn", + "PR" => "Puerto Rico", + "PS" => "Palestine, State of", + "PT" => "Portugal", + "PW" => "Palau", + "PY" => "Paraguay", + "QA" => "Qatar", + "RE" => "Réunion", + "RO" => "Romania", + "RS" => "Serbia", + "RU" => "Russian Federation", + "RW" => "Rwanda", + "SA" => "Saudi Arabia", + "SB" => "Solomon Islands", + "SC" => "Seychelles", + "SD" => "Sudan", + "SE" => "Sweden", + "SG" => "Singapore", + "SH" => "Saint Helena, Ascension and Tristan da Cunha", + "SI" => "Slovenia", + "SJ" => "Svalbard and Jan Mayen", + "SK" => "Slovakia", + "SL" => "Sierra Leone", + "SM" => "San Marino", + "SN" => "Senegal", + "SO" => "Somalia", + "SR" => "Suriname", + "SS" => "South Sudan", + "ST" => "Sao Tome and Principe", + "SV" => "El Salvador", + "SX" => "Sint Maarten (Dutch part)", + "SY" => "Syrian Arab Republic", + "SZ" => "Swaziland", + "TC" => "Turks and Caicos Islands", + "TD" => "Chad", + "TF" => "French Southern Territories", + "TG" => "Togo", + "TH" => "Thailand", + "TJ" => "Tajikistan", + "TK" => "Tokelau", + "TL" => "Timor-Leste", + "TM" => "Turkmenistan", + "TN" => "Tunisia", + "TO" => "Tonga", + "TR" => "Turkey", + "TT" => "Trinidad and Tobago", + "TV" => "Tuvalu", + "TW" => "Taiwan, Province of China", + "TZ" => "Tanzania, United Republic of", + "UA" => "Ukraine", + "UG" => "Uganda", + "UM" => "United States Minor Outlying Islands", + "US" => "United States", + "UY" => "Uruguay", + "UZ" => "Uzbekistan", + "VA" => "Holy See (Vatican City State)", + "VC" => "Saint Vincent and the Grenadines", + "VE" => "Venezuela, Bolivarian Republic of", + "VG" => "Virgin Islands, British", + "VI" => "Virgin Islands, U.S.", + "VN" => "Viet Nam", + "VU" => "Vanuatu", + "WF" => "Wallis and Futuna", + "WS" => "Samoa", + "YE" => "Yemen", + "YT" => "Mayotte", + "ZA" => "South Africa", + "ZM" => "Zambia", + "ZW" => "Zimbabwe", +); \ No newline at end of file diff --git a/include/layout.inc b/include/layout.inc index f6b585d9c..235e6fc5b 100644 --- a/include/layout.inc +++ b/include/layout.inc @@ -606,16 +606,25 @@ function get_near_usergroups() function get_usergroups_in($country, &$allcountries = array()) { $filename = $_SERVER["DOCUMENT_ROOT"] . "/backend/usergroups.json"; + // get the complete list of usergroups once a day + if (! file_exists($filename) || (time()-24*60*60) > filemtime($filename)) { + $data = file_get_contents('http://php.ug/api/rest/listtype.json/1'); + file_put_contents($filename, $data); + } + $matches = array(); $data = json_decode(file_get_contents($filename), true); foreach($data["groups"] as $group) { - if (isset($group["ccc"])) { - $allcountries[$group["ccc"]] = 1; - if ($group["ccc"] == $country) { + if (isset($group["country"])) { + $allcountries[$group["country"]] = 1; + if ($group["country"] == $country) { $matches[] = $group; } } } + usort($matches, function($first, $second){ + return strnatcasecmp($first['name'], $second['name']); + }); return $matches; } diff --git a/include/site.inc b/include/site.inc index b7a0bb4db..6960180ab 100644 --- a/include/site.inc +++ b/include/site.inc @@ -8,6 +8,9 @@ include $_SERVER['DOCUMENT_ROOT'] . '/include/mirrors.inc'; // Define $COUNTRIES array include $_SERVER['DOCUMENT_ROOT'] . '/include/countries.inc'; +// Define $COUNTRIES_ALPHA2 array +include $_SERVER['DOCUMENT_ROOT'] . '/include/countries-alpha2.inc'; + // Define $LANGUAGES array include $_SERVER['DOCUMENT_ROOT'] . '/include/languages.inc'; diff --git a/ug.php b/ug.php index f055ff035..b0a8b597f 100644 --- a/ug.php +++ b/ug.php @@ -12,36 +12,38 @@ site_header("Hypertext Preprocessor", function print_cc_header($country) { - global $COUNTRIES; + global $COUNTRIES_ALPHA2; ?>
-

User Groups in +

User Groups in

"; + echo ""; } $country = isset($_GET["cc"]) ? $_GET["cc"] : $COUNTRY; - -if (isset($COUNTRIES[$country])) { +$allcountries = array(); +if (isset($COUNTRIES_ALPHA2[$country])) { $matches = get_usergroups_in($country, $allcountries); print_cc_header($country); print_ug_matches($matches); @@ -111,13 +115,16 @@ if (isset($COUNTRIES[$country])) { echo "

Unknown country

"; } - +uksort($allcountries, function($first, $second){ + global $COUNTRIES_ALPHA2; + return strnatcasecmp($COUNTRIES_ALPHA2[$first], $COUNTRIES_ALPHA2[$second]); +}); $SIDEBAR_DATA = <<< EOF

Register new UG

EOF; foreach($allcountries as $country => $nada) { - $SIDEBAR_DATA .= '

' . $COUNTRIES[$country] . '

'; + $SIDEBAR_DATA .= '

' . $COUNTRIES_ALPHA2[$country] . '

'; } // Print the common footer. From 3e0eb4f6e336cac4a2a319072ea0042b3f2aff93 Mon Sep 17 00:00:00 2001 From: Andreas Heigl Date: Mon, 24 Mar 2014 07:15:27 +0100 Subject: [PATCH 2/2] Removes unnecessary code --- include/layout.inc | 6 ------ ug.php | 9 +-------- 2 files changed, 1 insertion(+), 14 deletions(-) diff --git a/include/layout.inc b/include/layout.inc index 235e6fc5b..4441dd3fb 100644 --- a/include/layout.inc +++ b/include/layout.inc @@ -606,12 +606,6 @@ function get_near_usergroups() function get_usergroups_in($country, &$allcountries = array()) { $filename = $_SERVER["DOCUMENT_ROOT"] . "/backend/usergroups.json"; - // get the complete list of usergroups once a day - if (! file_exists($filename) || (time()-24*60*60) > filemtime($filename)) { - $data = file_get_contents('http://php.ug/api/rest/listtype.json/1'); - file_put_contents($filename, $data); - } - $matches = array(); $data = json_decode(file_get_contents($filename), true); foreach($data["groups"] as $group) { diff --git a/ug.php b/ug.php index b0a8b597f..d485eaf6b 100644 --- a/ug.php +++ b/ug.php @@ -28,14 +28,7 @@ function ug_get_more_info($group) { $url = $group["icalendar_url"]; $filename = "backend/events/" . md5($url); - if (! file_exists($filename) || (time()-24*60*60) > filemtime($filename)) { - if (strncmp("webcal://", $url, strlen("webcal://")) == 0) { - $url = str_replace("webcal://", "http://", $url); - } - $data = file_get_contents($url); - file_put_contents("backend/events/" . md5($group["icalendar_url"]), $data); - } - // */ + /* Broken icalendar link */ if (!file_exists($filename)) { return null;