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) {
|
function format_description($description, $redirector) {
|
||||||
return nl2br(space2nbsp(text2clickable($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
|
// 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']));
|
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.
|
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();
|
$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]
|
// PubSubHubbub protocol support (if enabled) [UNTESTED]
|
||||||
// (Source: http://aldarone.fr/les-flux-rss-shaarli-et-pubsubhubbub/ )
|
// (Source: http://aldarone.fr/les-flux-rss-shaarli-et-pubsubhubbub/ )
|
||||||
|
@ -1219,11 +1199,12 @@ function renderPage()
|
||||||
uksort($tags, function($a, $b) {
|
uksort($tags, function($a, $b) {
|
||||||
// Collator is part of PHP intl.
|
// Collator is part of PHP intl.
|
||||||
if (class_exists('Collator')) {
|
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);
|
return $c->compare($a, $b);
|
||||||
} else {
|
|
||||||
return strcasecmp($a, $b);
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
return strcasecmp($a, $b);
|
||||||
});
|
});
|
||||||
|
|
||||||
$tagList=array();
|
$tagList=array();
|
||||||
|
|
Loading…
Reference in a new issue