$ext = substr( $pi, $dotPos );
return !in_array( $ext, array( $wgScriptExtension, '.php', '.php5' ) );
}
+
+ /**
+ * Parse the Accept-Language header sent by the client into an array
+ * @return array( languageCode => q-value ) sorted by q-value in descending order
+ */
+ public function getAcceptLang() {
+ // Modified version of code found at http://www.thefutureoftheweb.com/blog/use-accept-language-header
+ if ( !isset( $_SERVER['HTTP_ACCEPT_LANGUAGE'] ) ) {
+ return array();
+ }
+
+ // Break up string into pieces (languages and q factors)
+ $lang_parse = null;
+ preg_match_all( '/([a-z]{1,8}(-[a-z]{1,8})?)\s*(;\s*q\s*=\s*(1|0(\.[0-9]+))?)?/i',
+ $_SERVER['HTTP_ACCEPT_LANGUAGE'], $lang_parse );
+
+ if ( !count( $lang_parse[1] ) ) {
+ return array();
+ }
+ // Create a list like "en" => 0.8
+ $langs = array_combine( $lang_parse[1], $lang_parse[4] );
+ // Set default q factor to 1
+ foreach ( $langs as $lang => $val ) {
+ if ( $val === '' ) {
+ $langs[$lang] = 1;
+ }
+ }
+ // Sort list
+ arsort( $langs, SORT_NUMERIC );
+ return $langs;
+ }
}
/**
}
protected function getCurrentUserInfo() {
- global $wgUser;
+ global $wgUser, $wgRequest;
$result = $this->getResult();
$vals = array();
$vals['id'] = intval( $wgUser->getId() );
}
if ( isset( $this->prop['acceptlang'] ) ) {
- $vals['acceptlang'] = $this->getAcceptLang();
- $result->setIndexedTagName( $vals['acceptlang'], 'lang' );
- }
- return $vals;
- }
-
- protected function getAcceptLang() {
- // Modified version of code found at http://www.thefutureoftheweb.com/blog/use-accept-language-header
- if ( !isset( $_SERVER['HTTP_ACCEPT_LANGUAGE'] ) ) {
- return array();
- }
-
- // Break up string into pieces (languages and q factors)
- $lang_parse = null;
- preg_match_all( '/([a-z]{1,8}(-[a-z]{1,8})?)\s*(;\s*q\s*=\s*(1|0(\.[0-9]+))?)?/i',
- $_SERVER['HTTP_ACCEPT_LANGUAGE'], $lang_parse );
-
- if ( !count( $lang_parse[1] ) ) {
- return array();
- }
- // Create a list like "en" => 0.8
- $langs = array_combine( $lang_parse[1], $lang_parse[4] );
- // Set default q factor to 1
- foreach ( $langs as $lang => $val ) {
- if ( $val === '' ) {
- $langs[$lang] = 1;
+ $langs = $wgRequest->getAcceptLang();
+ $acceptLang = array();
+ foreach ( $langs as $lang => $val ) {
+ $r = array( 'q' => $val );
+ ApiResult::setContent( $r, $lang );
+ $acceptLang[] = $r;
}
+ $result->setIndexedTagName( $acceptLang, 'lang' );
+ $vals['acceptlang'] = $acceptLang;
}
- // Sort list
- arsort( $langs, SORT_NUMERIC );
-
- // Format for API output
- $retval = array();
- foreach ( $langs as $lang => $val ) {
- $r = array( 'q' => $val );
- ApiResult::setContent( $r, $lang );
- $retval[] = $r;
- }
- return $retval;
+ return $vals;
}
protected function getRateLimits() {