function showScripts()
{
parent::showScripts();
- $this->autofocus('nickname');
+ $this->autofocus('fullname');
}
/**
*/
function showContent()
{
- $user = common_current_user();
- $profile = $user->getProfile();
+ $profile = $this->scoped;
+ $user = $this->scoped->getUser();
$this->elementStart('form', array('method' => 'post',
'id' => 'form_settings_profile',
$this->elementStart('li');
// TRANS: Field label in form for profile settings.
$this->input('nickname', _('Nickname'),
- ($this->arg('nickname')) ? $this->arg('nickname') : $profile->nickname,
+ $this->arg('nickname') ?: $profile->nickname,
// TRANS: Tooltip for field label in form for profile settings.
- _('1-64 lowercase letters or numbers, no punctuation or spaces.'));
+ _('1-64 lowercase letters or numbers, no punctuation or spaces.'),
+ null, false, // "name" (will be set to id), then "required"
+ !common_config('profile', 'changenick')
+ ? array('disabled' => 'disabled', 'placeholder' => null)
+ : array('placeholder' => null));
$this->elementEnd('li');
$this->elementStart('li');
// TRANS: Field label in form for profile settings.
if (Event::handle('StartProfileSaveForm', array($this))) {
- $nickname = $this->trimmed('nickname');
- try {
- $nickname = Nickname::normalize($nickname, true);
- } catch (NicknameTakenException $e) {
- // Abort only if the nickname is occupied by another local profile
- if ($e->profile->id != $this->scoped->id) {
+ // $nickname will only be set if this changenick value is true.
+ if (common_config('profile', 'changenick') == true) {
+ try {
+ $nickname = Nickname::normalize($this->trimmed('nickname'), true);
+ } catch (NicknameTakenException $e) {
+ // Abort only if the nickname is occupied by another local profile
+ if ($e->profile->id != $this->scoped->id) {
+ $this->showForm($e->getMessage());
+ return;
+ }
+ $nickname = Nickname::normalize($this->trimmed('nickname')); // without in-use check this time
+ } catch (NicknameException $e) {
$this->showForm($e->getMessage());
return;
}
- $nickname = Nickname::normalize($nickname); // without in-use check this time
- } catch (NicknameException $e) {
- $this->showForm($e->getMessage());
- return;
}
$fullname = $this->trimmed('fullname');
$homepage = $this->trimmed('homepage');
$bio = $this->trimmed('bio');
$location = $this->trimmed('location');
- $autosubscribe = $this->boolean('autosubscribe');
+ $autosubscribe = $this->booleanintstring('autosubscribe');
$subscribe_policy = $this->trimmed('subscribe_policy');
- $private_stream = $this->boolean('private_stream');
+ $private_stream = $this->booleanintstring('private_stream');
$language = $this->trimmed('language');
$timezone = $this->trimmed('timezone');
$tagstring = $this->trimmed('tags');
$orig_profile = clone($profile);
- $profile->nickname = $nickname;
+ if (common_config('profile', 'changenick') == true && $profile->nickname !== $nickname) {
+ assert(Nickname::normalize($nickname)===$nickname);
+ common_debug("Changing user nickname from '{$profile->nickname}' to '{$nickname}'.");
+ $profile->nickname = $nickname;
+ $profile->profileurl = common_profile_url($profile->nickname);
+ }
$profile->fullname = $fullname;
$profile->homepage = $homepage;
$profile->bio = $bio;
$profile->location_ns = $loc->location_ns;
}
- $profile->profileurl = common_profile_url($nickname);
-
if (common_config('location', 'share') == 'user') {
$exists = false;
$orig = clone($prefs);
}
- $prefs->share_location = $this->boolean('sharelocation');
+ $prefs->share_location = $this->booleanintstring('sharelocation');
if ($exists) {
$result = $prefs->update($orig);
$user->query('COMMIT');
Event::handle('EndProfileSaveForm', array($this));
- common_broadcast_profile($profile);
// TRANS: Confirmation shown when user profile settings are saved.
$this->showForm(_('Settings saved.'), true);