mirror of
https://github.com/processwire/processwire.git
synced 2025-08-11 09:14:58 +02:00
Add $user->setLanguage() method for quietly setting a user language at runtime
This commit is contained in:
@@ -465,6 +465,36 @@ class User extends Page {
|
||||
return $userId && "$userId" === "$this->id";
|
||||
}
|
||||
|
||||
/**
|
||||
* Set language for user (quietly)
|
||||
*
|
||||
* - Sets the language without tracking it as a change to the user.
|
||||
* - If language support is not installed this method silently does nothing.
|
||||
*
|
||||
* @param Language|string|int $language Language object, name, or ID
|
||||
* @return self
|
||||
* @throws WireException if language support is installed and given an invalid/unknown language
|
||||
* @since 3.0.186
|
||||
*
|
||||
*/
|
||||
public function setLanguage($language) {
|
||||
|
||||
if(!is_object($language)) {
|
||||
$languages = $this->wire()->languages;
|
||||
// if multi-language support not available exit now
|
||||
if(!$languages) return $this;
|
||||
// convert string or int to Language object
|
||||
$language = $languages->get($language);
|
||||
if(!is_object($language)) $language = null;
|
||||
}
|
||||
|
||||
if($language && ($language->className() === 'Language' || wireInstanceOf($language, 'Language'))) {
|
||||
return $this->setQuietly('language', $language);
|
||||
} else {
|
||||
throw new WireException("Unknown language set to user $this->name");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the value for a non-native User field
|
||||
*
|
||||
|
Reference in New Issue
Block a user