| 249 | | if ($result = get_record('user_flags','flag','language','user_id',$USER->ident)) |
|---|
| 250 | | { |
|---|
| 251 | | $_SESSION['userlocale'] = $result->value; |
|---|
| 252 | | $USER->locale = $result->value; |
|---|
| 253 | | } |
|---|
| 254 | | else |
|---|
| 255 | | { |
|---|
| 256 | | // No flag set yet, try extract from the browser |
|---|
| 257 | | $setting = ''; |
|---|
| 258 | | |
|---|
| 259 | | if (!empty($USER->languages_browser)) |
|---|
| 260 | | { |
|---|
| 261 | | $keys = array_keys($USER->languages_browser); |
|---|
| | 254 | |
|---|
| | 255 | if (logged_on && $USER->ident != 0) |
|---|
| | 256 | { |
|---|
| | 257 | // User is logged in and has a session |
|---|
| | 258 | |
|---|
| | 259 | if ($result = get_record('user_flags','flag','language','user_id',$USER->ident)) |
|---|
| | 260 | { |
|---|
| | 261 | $_SESSION['userlocale'] = $result->value; |
|---|
| | 262 | $USER->locale = $result->value; |
|---|
| | 263 | } |
|---|
| | 264 | else |
|---|
| | 265 | { |
|---|
| | 266 | // No flag set yet, try extract from the browser |
|---|
| | 267 | $setting = ''; |
|---|
| | 268 | |
|---|
| | 269 | if (!empty($USER->languages_browser)) |
|---|
| | 270 | { |
|---|
| | 271 | $keys = array_keys($USER->languages_browser); |
|---|
| | 272 | |
|---|
| | 273 | if ($browser = $USER->languages_browser[$keys[0]]) |
|---|
| | 274 | { |
|---|
| | 275 | $setting = $browser['fullcode']; |
|---|
| | 276 | } |
|---|
| | 277 | } |
|---|
| | 278 | else |
|---|
| | 279 | { |
|---|
| | 280 | // No browser preference, get defaultlocale |
|---|
| | 281 | $setting = $CFG->defaultlocale; |
|---|
| | 282 | } |
|---|
| 263 | | if ($browser = $USER->languages_browser[$keys[0]]) |
|---|
| 264 | | { |
|---|
| 265 | | $setting = $browser['fullcode']; |
|---|
| 266 | | } |
|---|
| 267 | | } |
|---|
| 268 | | |
|---|
| 269 | | // Store the value |
|---|
| 270 | | $flag = new StdClass; |
|---|
| 271 | | $flag->flag = 'language'; |
|---|
| 272 | | $flag->user_id = $USER->ident; |
|---|
| 273 | | $flag->value = $setting; |
|---|
| 274 | | insert_record('user_flags',$flag); |
|---|
| 275 | | |
|---|
| 276 | | $_SESSION['userlocale'] = $setting; |
|---|
| 277 | | $USER->locale = $setting; |
|---|
| | 284 | // Store the value |
|---|
| | 285 | $flag = new StdClass; |
|---|
| | 286 | $flag->flag = 'language'; |
|---|
| | 287 | $flag->user_id = $USER->ident; |
|---|
| | 288 | $flag->value = $setting; |
|---|
| | 289 | insert_record('user_flags',$flag); |
|---|
| | 290 | |
|---|
| | 291 | $_SESSION['userlocale'] = $setting; |
|---|
| | 292 | $USER->locale = $setting; |
|---|
| | 293 | } |
|---|
| | 294 | } |
|---|
| | 295 | else |
|---|
| | 296 | { |
|---|
| | 297 | // User is logged out |
|---|
| | 298 | |
|---|
| | 299 | // TODO special actions? For now language will be set |
|---|
| | 300 | // to $CFG-defaultlocale for non logged in users or via |
|---|
| | 301 | // a session, see below. |
|---|
| | 302 | |
|---|
| | 303 | // TODO This is here to set the pref via a session for |
|---|
| | 304 | // non logged in so they could also use the language |
|---|
| | 305 | // selection widget. Should perhaps get stored in a cookie. |
|---|
| | 306 | |
|---|
| | 307 | if (isset($_SESSION['userlocale']) && $_SESSION['userlocale'] != '') |
|---|
| | 308 | { |
|---|
| | 309 | $USER->locale = $_SESSION['userlocale']; |
|---|
| | 310 | } |
|---|
| | 311 | else |
|---|
| | 312 | { |
|---|
| | 313 | $USER->locale = $CFG->defaultlocale; |
|---|
| | 314 | } |
|---|