* @license http://www.gnu.org/licenses/gpl-2.0.html GPL-2+ * @link http://www.mageia.org/ * */ // _r(''); // note, we use geographical country names $countries = array( 'AR' => 'Argentina', 'AU' => 'Australia', 'BE' => 'Belgique', 'BG' => 'България - Bulgaria', 'BR' => 'Brasil', 'BY' => 'Беларусь - Belarus', 'CA' => 'Canada', 'CH' => 'Switzerland', 'CN' => '中国 - China', 'CZ' => 'Česko', // Czechia 'DE' => 'Deutschland', 'DK' => 'Danmark', 'EC' => 'Ecuador', 'ES' => 'España', 'FR' => 'France', 'GB' => 'Great Britain', 'GR' => 'Ελλάδα - Greece', 'GT' => 'Guatemala', 'ID' => 'Indonesia', 'IL' => 'Israel', 'IT' => 'Italia', 'JP' => '日本国 - Japan', 'NC' => 'Nouvelle-Calédonie', 'NL' => 'Nederlands', 'PH' => 'Philipines', 'PL' => 'Polska', 'RU' => 'Россия - Russia', 'SE' => 'Sverige', 'TR' => 'Türkiye', 'TW' => '臺灣 - Taiwan', 'UA' => 'Ukraine', 'UK' => 'the UK', 'US' => 'the USA', 'VN' => 'Vietnam', 'ZA' => 'South Africa' ); /** * Rewrite city name in the local official language. * * @param string $name city name * * @return string */ function rewrite_city($name) { $cities = array( 'HsinChu' => '新竹市', // .tw 'Yonezawa' => '米沢市', // .jp 'Beijing' => '北京', // .cn 'Moscow' => 'Москва', // .ru 'Minsk' => 'Мінск', // .by 'Heraklion' => 'Ηράκλειο', // .gr 'Prague' => 'Praha', // .cz ); if (array_key_exists($name, $cities)) { return $cities[$name]; } return $name; } /** * Return $_GET value for $s key if it exists. * * @param string $s key * * @return mixed */ function get($s) { if (isset($_GET[$s])) { return strip_tags(trim($_GET[$s])); } return null; } class NoProductFoundError extends Exception {} class NoMirrorFoundError extends Exception {} /** * TODO use aliases, so that downloads asking for alpha3 * get redirected to beta1 for instance? (on migration) * * @param array $product array definition * @param string $def_file definition file * * @return array */ function get_info_for_product($product, $def_file = null) { $def_file = is_null($def_file) ? 'definitions.ini' : $def_file; $defs = parse_ini_file($def_file, true); if (array_key_exists($product, $defs)) { return $defs[$product]; } throw new NoProductFoundError; } /** * Return mirrors for $file. * First mirror returned is the preferred one for auto redirection. * * @param string $file id of the file to download/find a mirror for * @param string $locale hint for selecting a mirror * @param string $country hint for selecting a mirror * * @return array * mirror(product): * name * host * country * city * speed * link */ function get_mirrors_for($file, $locale = null, $country = null, $prod = true, $documentation = false) { //include '../../../lib/Downloads.php'; $mirrors = Downloads::get_all_mirrors($prod, $documentation); $wsd = new Downloads(); $one = $wsd->prepare_download(true, $country, $prod, $documentation); return array($one, $mirrors); } /** * Simplifies things. * * @param array $product _one_ product definition array * @param boolean $torrent_preferred do we prefer to get a torrent, if available? * * @return string */ function get_download_link($product, $torrent_preferred = false) { if ($torrent_preferred === true && isset($product['torrent']) && strlen($product['torrent']) > 0 ) { $path = $product['torrent']; } else { $path = $product['path'] . '/' . $product['file']; } return '$MIRROR/' . $path; } /** * Builds human readable list from array with l10n option * * @param array $array to build the string from * @param string $last_separator flexible (l10n) last separator * @param string $nonlast_separator flexible (l10n) other than last separators * * @return string */ function array_to_list($array, $last_separator = ' and ', $nonlast_separator = ', ') { $num_of_values = count($array); $output_string = ''; $separator = $nonlast_separator; foreach ($array as $value) { $output_string .= $value; if ($num_of_values == 2) { $separator = $last_separator; } else if ($num_of_values == 1) { $separator = ''; } $output_string .= $separator; $num_of_values--; } return $output_string; }