use Friendica\DI;
use Friendica\Module;
use Friendica\Network\HTTPClient\Client\HttpClientAccept;
+use Friendica\Network\HTTPException\InternalServerErrorException;
use Friendica\Security\TwoFactor\Model\AppSpecificPassword;
use Friendica\Network\HTTPException;
use Friendica\Object\Image;
$system['dob'] = '0000-00-00';
// Ensure that the user contains data
- $user = DBA::selectFirst('user', ['prvkey', 'guid'], ['uid' => 0]);
+ $user = DBA::selectFirst('user', ['prvkey', 'guid', 'language'], ['uid' => 0]);
if (empty($user['prvkey']) || empty($user['guid'])) {
$fields = [
'username' => $system['name'],
$system['guid'] = $fields['guid'];
} else {
- $system['guid'] = $user['guid'];
+ $system['guid'] = $user['guid'];
+ $system['language'] = $user['language'];
}
return $system;
return $default_circle;
}
+/**
+ * Fetch the language code from the given user. If the code is invalid, return the system language
+ *
+ * @param integer $uid User-Id
+ * @param boolean $short If true, return the short form g.g. "en", otherwise the long form e.g. "en-gb"
+ * @return string
+ */
+ public static function getLanguageCode(int $uid, bool $short): string
+ {
+ $owner = self::getOwnerDataById($uid);
+ $languages = DI::l10n()->getAvailableLanguages();
+ if (in_array($owner['language'], array_keys($languages))) {
+ $language = $owner['language'];
+ } else {
+ $language = DI::config()->get('system', 'language');
+ }
+ if ($short) {
+ return substr($language, 0, 2);
+ }
+ return $language;
+ }
+
/**
* Authenticate a user with a clear text password
*
/**
* Update a user entry and distribute the changes if needed
*
- * @param array $fields
+ * @param array $fields
* @param integer $uid
* @return boolean
+ * @throws Exception
*/
public static function update(array $fields, int $uid): bool
{
- $old_owner = self::getOwnerDataById($uid);
- if (empty($old_owner)) {
- return false;
- }
-
if (!DBA::update('user', $fields, ['uid' => $uid])) {
return false;
}
- $update = Contact::updateSelfFromUserID($uid);
-
- $owner = self::getOwnerDataById($uid);
- if (empty($owner)) {
- return false;
- }
-
- if ($old_owner['name'] != $owner['name']) {
- Profile::update(['name' => $owner['name']], $uid);
- }
-
- if ($update) {
+ if (Contact::updateSelfFromUserID($uid)) {
Profile::publishUpdate($uid);
}