mirror of
https://github.com/processwire/processwire.git
synced 2025-08-12 01:34:31 +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";
|
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
|
* Get the value for a non-native User field
|
||||||
*
|
*
|
||||||
|
Reference in New Issue
Block a user