diff options
author | Aleksey Lim <alsroot@member.fsf.org> | 2010-11-27 19:18:25 (GMT) |
---|---|---|
committer | Aleksey Lim <alsroot@member.fsf.org> | 2010-11-27 19:18:25 (GMT) |
commit | 2fc5af0921c41a074b8a056f4b26e3e6d098e77c (patch) | |
tree | d50d620b16982a7f5cad3a9a1c25a6e5b1c26f1f | |
parent | dd96f973d1e0a66d934489d06e1b0aeea27c0a65 (diff) |
Support localized activity names in micro-format.php; bundle sizes in bytes
-rw-r--r-- | site/app/webroot/services/micro-format.php | 69 |
1 files changed, 64 insertions, 5 deletions
diff --git a/site/app/webroot/services/micro-format.php b/site/app/webroot/services/micro-format.php index 58d1d43..bba2f9f 100644 --- a/site/app/webroot/services/micro-format.php +++ b/site/app/webroot/services/micro-format.php @@ -7,9 +7,58 @@ require_once('./functions.php'); $errors = array(); -foreach (array('collection_nickname') as $var) { - if (empty($_GET[$var])) - $errors[] = 'Required variable '.$var.' not set.'; +$supported_languages = array( + 'ar' => 'ar_EG.utf8', + 'ca' => 'ca_ES.utf8', + 'cs' => 'cs_CZ.utf8', + 'da' => 'da_DK.utf8', + 'de' => 'de_DE.utf8', + 'en-US' => 'en_US.utf8', + 'el' => 'el_GR.utf8', + 'es-ES' => 'es_ES.utf8', + 'eu' => 'eu_ES.utf8', + 'fa' => 'fa_IR.utf8', + 'fi' => 'fi_FI.utf8', + 'fr' => 'fr_FR.utf8', + 'ga-IE' => 'ga_IE.utf8', + 'he' => 'he_IL.utf8', + 'hu' => 'hu_HU.utf8', + 'id' => 'id_ID.utf8', + 'it' => 'it_IT.utf8', + 'ja' => 'ja_JP.utf8', + 'ko' => 'ko_KR.utf8', + 'mn' => 'mn_MN.utf8', + 'nl' => 'nl_NL.utf8', + 'pl' => 'pl_PL.utf8', + 'pt-BR' => 'pt_BR.utf8', + 'pt-PT' => 'pt_PT.utf8', + 'ro' => 'ro_RO.utf8', + 'ru' => 'ru_RU.utf8', + 'sk' => 'sk_SK.utf8', + 'sq' => 'sq_AL.utf8', + 'sv-SE' => 'sv_SE.utf8', + 'uk' => 'uk_UA.utf8', + 'vi' => 'vi_VN.utf8', + 'zh-CN' => 'zh_CN.utf8', + 'zh-TW' => 'zh_TW.utf8' +); + +$collection_nickname = $_GET["collection_nickname"]; +if (empty($collection_nickname)) + $errors[] = 'Required variable collection_nickname not set.'; + +$lang = $_GET["lang"]; +if (empty($lang)) + $lang = "en-US"; +else if (strstr($lang, "_") || strstr($lang, "-")) + $lang = str_replace("_", "-", $lang); +else { + foreach ($supported_languages as $code => $locale) { + if (strstr($code, $lang . "-")) { + $lang = $code; + break; + } + } } $dbh = @mysql_connect(DB_HOST.':'.DB_PORT,DB_USER,DB_PASS); @@ -25,6 +74,8 @@ if (empty($errors)) { SELECT addons.id, addons.guid, + default_lang.localized_string as default_name, + requested_lang.localized_string as name, max(versions.version) as version, files.size, files.filename, @@ -35,8 +86,10 @@ if (empty($errors)) { INNER JOIN addons ON addons.id = addons_collections.addon_id INNER JOIN versions ON versions.addon_id = addons.id AND (addons_collections.addon_version IS NULL OR versions.version = addons_collections.addon_version) INNER JOIN files ON files.version_id = versions.id + LEFT JOIN translations AS default_lang ON default_lang.id = addons.name AND default_lang.locale = addons.defaultlocale + LEFT JOIN translations AS requested_lang ON requested_lang.id = addons.name AND requested_lang.locale = '{$lang}' WHERE - collections.nickname = '{$_GET['collection_nickname']}' + collections.nickname = '{$collection_nickname}' GROUP BY addons.id "; @@ -67,11 +120,17 @@ if (!empty($errors)) { $url = FILES_HOST . '/' . $row['id'] . '/' . $row['filename']; else $url = SITE_URL . '/downloads/file/' . $row['file_id'] . '/' . $row['filename']; + $size = (int)$row['size'] * 1024; + if ($row['name']) + $name = $row['name']; + else + $name = $row['default_name']; echo "<tr>\n"; echo "<td class=\"olpc-activity-info\">\n"; echo "<span class=\"olpc-activity-id\">{$row['guid']}</span>\n"; + echo "<span class=\"olpc-activity-name\">{$name}</span>\n"; echo "<span class=\"olpc-activity-version\">{$row['version']}</span>\n"; - echo "<span class=\"olpc-activity-size\">{$row['size']}</span>\n"; + echo "<span class=\"olpc-activity-size\">{$size}</span>\n"; echo "<span class=\"olpc-activity-url\"><a href=\"{$url}\">download</a></span>\n"; echo "</td>\n"; echo "</tr>\n"; |