/** * @param \eZLocale $primaryLanguage * @param \eZLocale[]|null $allLanguages * @param bool $canUseUnicode * @return array */ function findAppropriateCharsetsList($primaryLanguage, $allLanguages, $canUseUnicode) { $commonCharsets = array(); if (is_array($allLanguages) and count($allLanguages) > 0) { $language = $allLanguages[0]; $charsets = $language->allowedCharsets(); foreach ($charsets as $charset) { $commonCharsets[] = eZCharsetInfo::realCharsetCode($charset); } $commonCharsets = array_unique($commonCharsets); for ($i = 1; $i < count($allLanguages); ++$i) { $language = $allLanguages[$i]; $charsets = $language->allowedCharsets(); $realCharsets = array(); foreach ($charsets as $charset) { $realCharsets[] = eZCharsetInfo::realCharsetCode($charset); } $realCharsets = array_unique($realCharsets); $commonCharsets = array_intersect($commonCharsets, $realCharsets); } } $usableCharsets = array_values($commonCharsets); if (count($usableCharsets) > 0) { if (in_array($primaryLanguage->charset(), $usableCharsets)) { array_unshift($usableCharsets, $primaryLanguage->charset()); $usableCharsets = array_unique($usableCharsets); } } else { if ($canUseUnicode) { $usableCharsets[] = eZCharsetInfo::realCharsetCode('utf-8'); } } return $usableCharsets; }