Merge pull request #492 from ArthurHoaro/locale-sort-fix
Fixes #481: tag cloud fatal error
This commit is contained in:
commit
fa40b43f60
2 changed files with 31 additions and 25 deletions
|
@ -213,3 +213,28 @@ function space2nbsp($text)
|
|||
function format_description($description, $redirector) {
|
||||
return nl2br(space2nbsp(text2clickable($description, $redirector)));
|
||||
}
|
||||
|
||||
/**
|
||||
* Sniff browser language to set the locale automatically.
|
||||
* Note that is may not work on your server if the corresponding locale is not installed.
|
||||
*
|
||||
* @param string $headerLocale Locale send in HTTP headers (e.g. "fr,fr-fr;q=0.8,en;q=0.5,en-us;q=0.3").
|
||||
**/
|
||||
function autoLocale($headerLocale)
|
||||
{
|
||||
// Default if browser does not send HTTP_ACCEPT_LANGUAGE
|
||||
$attempts = array('en_US');
|
||||
if (isset($headerLocale)) {
|
||||
// (It's a bit crude, but it works very well. Preferred language is always presented first.)
|
||||
if (preg_match('/([a-z]{2})-?([a-z]{2})?/i', $headerLocale, $matches)) {
|
||||
$loc = $matches[1] . (!empty($matches[2]) ? '_' . strtoupper($matches[2]) : '');
|
||||
$attempts = array(
|
||||
$loc.'.UTF-8', $loc, str_replace('_', '-', $loc).'.UTF-8', str_replace('_', '-', $loc),
|
||||
$loc . '_' . strtoupper($loc).'.UTF-8', $loc . '_' . strtoupper($loc),
|
||||
$loc . '_' . $loc.'.UTF-8', $loc . '_' . $loc, $loc . '-' . strtoupper($loc).'.UTF-8',
|
||||
$loc . '-' . strtoupper($loc), $loc . '-' . $loc.'.UTF-8', $loc . '-' . $loc
|
||||
);
|
||||
}
|
||||
}
|
||||
setlocale(LC_ALL, $attempts);
|
||||
}
|
29
index.php
29
index.php
|
@ -268,7 +268,7 @@ function stripslashes_deep($value) { $value = is_array($value) ? array_map('stri
|
|||
// a token depending of deployment salt, user password, and the current ip
|
||||
define('STAY_SIGNED_IN_TOKEN', sha1($GLOBALS['hash'].$_SERVER["REMOTE_ADDR"].$GLOBALS['salt']));
|
||||
|
||||
autoLocale(); // Sniff browser language and set date format accordingly.
|
||||
autoLocale($_SERVER['HTTP_ACCEPT_LANGUAGE']); // Sniff browser language and set date format accordingly.
|
||||
header('Content-Type: text/html; charset=utf-8'); // We use UTF-8 for proper international characters handling.
|
||||
|
||||
//==================================================================================================
|
||||
|
@ -315,26 +315,6 @@ function setup_login_state() {
|
|||
}
|
||||
$userIsLoggedIn = setup_login_state();
|
||||
|
||||
|
||||
// ------------------------------------------------------------------------------------------
|
||||
// Sniff browser language to display dates in the right format automatically.
|
||||
// (Note that is may not work on your server if the corresponding local is not installed.)
|
||||
function autoLocale()
|
||||
{
|
||||
$attempts = array('en_US'); // Default if browser does not send HTTP_ACCEPT_LANGUAGE
|
||||
if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) // e.g. "fr,fr-fr;q=0.8,en;q=0.5,en-us;q=0.3"
|
||||
{ // (It's a bit crude, but it works very well. Preferred language is always presented first.)
|
||||
if (preg_match('/([a-z]{2})-?([a-z]{2})?/i',$_SERVER['HTTP_ACCEPT_LANGUAGE'],$matches)) {
|
||||
$loc = $matches[1] . (!empty($matches[2]) ? '_' . strtoupper($matches[2]) : '');
|
||||
$attempts = array($loc.'.UTF-8', $loc, str_replace('_', '-', $loc).'.UTF-8', str_replace('_', '-', $loc),
|
||||
$loc . '_' . strtoupper($loc).'.UTF-8', $loc . '_' . strtoupper($loc),
|
||||
$loc . '_' . $loc.'.UTF-8', $loc . '_' . $loc, $loc . '-' . strtoupper($loc).'.UTF-8',
|
||||
$loc . '-' . strtoupper($loc), $loc . '-' . $loc.'.UTF-8', $loc . '-' . $loc);
|
||||
}
|
||||
}
|
||||
setlocale(LC_TIME, $attempts); // LC_TIME = Set local for date/time format only.
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------------------------
|
||||
// PubSubHubbub protocol support (if enabled) [UNTESTED]
|
||||
// (Source: http://aldarone.fr/les-flux-rss-shaarli-et-pubsubhubbub/ )
|
||||
|
@ -1219,11 +1199,12 @@ function renderPage()
|
|||
uksort($tags, function($a, $b) {
|
||||
// Collator is part of PHP intl.
|
||||
if (class_exists('Collator')) {
|
||||
$c = new Collator(setlocale(LC_ALL, 0));
|
||||
$c = new Collator(setlocale(LC_COLLATE, 0));
|
||||
if (!intl_is_failure(intl_get_error_code())) {
|
||||
return $c->compare($a, $b);
|
||||
} else {
|
||||
return strcasecmp($a, $b);
|
||||
}
|
||||
}
|
||||
return strcasecmp($a, $b);
|
||||
});
|
||||
|
||||
$tagList=array();
|
||||
|
|
Loading…
Reference in a new issue