Пример #1
0
 /**
  * Returns true if the server preference contains a partial language that matches the language in the client
  * preference.
  *
  * e.g. An server variant of en-* would match en, en-US but not es-ES
  *
  * @param string $fromField
  * @param MatchedPreferenceInterface $matchedPreference
  * @param PreferenceInterface $newClientPref
  *
  * @return bool
  */
 private function partialLangMatches($fromField, MatchedPreferenceInterface $matchedPreference, PreferenceInterface $newClientPref)
 {
     $serverPref = $matchedPreference->getServerPreference();
     $oldClientPref = $matchedPreference->getClientPreference();
     // Note that this only supports the simplest case of (e.g.) en-* matching en-GB and en-US, additional
     // Language tags are explicitly ignored
     list($clientMainLang) = explode('-', $newClientPref->getVariant());
     list($serverMainLang) = explode('-', $serverPref->getVariant());
     return PreferenceInterface::LANGUAGE === $fromField && PreferenceInterface::PARTIAL_WILDCARD === $serverPref->getPrecedence() && $clientMainLang == $serverMainLang && $newClientPref->getPrecedence() > $oldClientPref->getPrecedence();
 }
Пример #2
0
 /**
  * Compare preferences alphabetically
  *
  * @param MatchedPreferenceInterface $lValue
  * @param MatchedPreferenceInterface $rValue
  *
  * @return int -1, 0, 1 (see usort() callback for meaning)
  */
 private function compareVariant(MatchedPreferenceInterface $lValue, MatchedPreferenceInterface $rValue)
 {
     return strcasecmp($lValue->getVariant(), $rValue->getVariant());
 }