1
0
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:
Ryan Cramer
2021-10-01 13:23:11 -04:00
parent d0f7961d89
commit 27e2c226f3

View File

@@ -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
*