implementing media type negotiation (based on language negotiation

logic) in cases both JSON and (X)HTML are being requested, resolving #68
This commit is contained in:
El RIDO
2016-04-08 23:29:44 +02:00
parent 9593ba7039
commit 3a92c940a9
4 changed files with 151 additions and 12 deletions

View File

@@ -198,7 +198,8 @@ class i18n
if (array_key_exists('HTTP_ACCEPT_LANGUAGE', $_SERVER))
{
$languageRanges = explode(',', trim($_SERVER['HTTP_ACCEPT_LANGUAGE']));
foreach ($languageRanges as $languageRange) {
foreach ($languageRanges as $languageRange)
{
if (preg_match(
'/(\*|[a-zA-Z0-9]{1,8}(?:-[a-zA-Z0-9]{1,8})*)(?:\s*;\s*q\s*=\s*(0(?:\.\d{0,3})|1(?:\.0{0,3})))?/',
trim($languageRange), $match
@@ -325,7 +326,8 @@ class i18n
protected static function _getMatchingLanguage($acceptedLanguages, $availableLanguages) {
$matches = array();
$any = false;
foreach ($acceptedLanguages as $acceptedQuality => $acceptedValues) {
foreach ($acceptedLanguages as $acceptedQuality => $acceptedValues)
{
$acceptedQuality = floatval($acceptedQuality);
if ($acceptedQuality === 0.0) continue;
foreach ($availableLanguages as $availableValue)