Move nick updating of User entry to Profile->update()
Also, timezone and language in User table weren't indexes. So no need to do them separately.
This commit is contained in:
parent
e2c50d202f
commit
145fbf1130
@ -29,9 +29,7 @@
|
|||||||
* @link http://status.net/
|
* @link http://status.net/
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (!defined('STATUSNET') && !defined('LACONICA')) {
|
if (!defined('GNUSOCIAL')) { exit(1); }
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Change profile settings
|
* Change profile settings
|
||||||
@ -320,70 +318,42 @@ class ProfilesettingsAction extends SettingsAction
|
|||||||
}
|
}
|
||||||
|
|
||||||
$user = common_current_user();
|
$user = common_current_user();
|
||||||
|
|
||||||
$user->query('BEGIN');
|
$user->query('BEGIN');
|
||||||
|
|
||||||
if ($user->nickname != $nickname ||
|
// $user->nickname is updated through Profile->update();
|
||||||
$user->language != $language ||
|
|
||||||
$user->timezone != $timezone) {
|
|
||||||
|
|
||||||
common_debug('Updating user nickname from ' . $user->nickname . ' to ' . $nickname,
|
|
||||||
__FILE__);
|
|
||||||
common_debug('Updating user language from ' . $user->language . ' to ' . $language,
|
|
||||||
__FILE__);
|
|
||||||
common_debug('Updating user timezone from ' . $user->timezone . ' to ' . $timezone,
|
|
||||||
__FILE__);
|
|
||||||
|
|
||||||
$original = clone($user);
|
|
||||||
|
|
||||||
$user->nickname = $nickname;
|
|
||||||
$user->language = $language;
|
|
||||||
$user->timezone = $timezone;
|
|
||||||
|
|
||||||
$result = $user->updateKeys($original);
|
|
||||||
|
|
||||||
if ($result === false) {
|
|
||||||
common_log_db_error($user, 'UPDATE', __FILE__);
|
|
||||||
// TRANS: Server error thrown when user profile settings could not be updated.
|
|
||||||
$this->serverError(_('Could not update user.'));
|
|
||||||
return;
|
|
||||||
} else {
|
|
||||||
// Re-initialize language environment if it changed
|
|
||||||
common_init_language();
|
|
||||||
// Clear the site owner, in case nickname changed
|
|
||||||
if ($user->hasRole(Profile_role::OWNER)) {
|
|
||||||
User::blow('user:site_owner');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// XXX: XOR
|
// XXX: XOR
|
||||||
if (($user->autosubscribe ^ $autosubscribe) ||
|
if (($user->autosubscribe ^ $autosubscribe)
|
||||||
($user->private_stream ^ $private_stream) ||
|
|| ($user->private_stream ^ $private_stream)
|
||||||
($user->subscribe_policy != $subscribe_policy)) {
|
|| $user->timezone != $timezone
|
||||||
|
|| $user->language != $language
|
||||||
|
|| $user->subscribe_policy != $subscribe_policy) {
|
||||||
|
|
||||||
$original = clone($user);
|
$original = clone($user);
|
||||||
|
|
||||||
$user->autosubscribe = $autosubscribe;
|
$user->autosubscribe = $autosubscribe;
|
||||||
|
$user->language = $language;
|
||||||
$user->private_stream = $private_stream;
|
$user->private_stream = $private_stream;
|
||||||
$user->subscribe_policy = $subscribe_policy;
|
$user->subscribe_policy = $subscribe_policy;
|
||||||
|
$user->timezone = $timezone;
|
||||||
|
|
||||||
$result = $user->update($original);
|
$result = $user->update($original);
|
||||||
|
|
||||||
if ($result === false) {
|
if ($result === false) {
|
||||||
common_log_db_error($user, 'UPDATE', __FILE__);
|
common_log_db_error($user, 'UPDATE', __FILE__);
|
||||||
// TRANS: Server error thrown when user profile settings could not be updated to
|
// TRANS: Server error thrown when user profile settings could not be updated to
|
||||||
// TRANS: automatically subscribe to any subscriber.
|
// TRANS: automatically subscribe to any subscriber.
|
||||||
$this->serverError(_('Could not update user for autosubscribe or subscribe_policy.'));
|
$this->serverError(_('Could not update user for autosubscribe or subscribe_policy.'));
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Re-initialize language environment if it changed
|
||||||
|
common_init_language();
|
||||||
}
|
}
|
||||||
|
|
||||||
$profile = $user->getProfile();
|
$profile = $user->getProfile();
|
||||||
|
|
||||||
$orig_profile = clone($profile);
|
$orig_profile = clone($profile);
|
||||||
|
|
||||||
$profile->nickname = $user->nickname;
|
$profile->nickname = $nickname;
|
||||||
$profile->fullname = $fullname;
|
$profile->fullname = $fullname;
|
||||||
$profile->homepage = $homepage;
|
$profile->homepage = $homepage;
|
||||||
$profile->bio = $bio;
|
$profile->bio = $bio;
|
||||||
@ -433,7 +403,6 @@ class ProfilesettingsAction extends SettingsAction
|
|||||||
common_log_db_error($prefs, ($exists) ? 'UPDATE' : 'INSERT', __FILE__);
|
common_log_db_error($prefs, ($exists) ? 'UPDATE' : 'INSERT', __FILE__);
|
||||||
// TRANS: Server error thrown when user profile location preference settings could not be updated.
|
// TRANS: Server error thrown when user profile location preference settings could not be updated.
|
||||||
$this->serverError(_('Could not save location prefs.'));
|
$this->serverError(_('Could not save location prefs.'));
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -446,7 +415,6 @@ class ProfilesettingsAction extends SettingsAction
|
|||||||
common_log_db_error($profile, 'UPDATE', __FILE__);
|
common_log_db_error($profile, 'UPDATE', __FILE__);
|
||||||
// TRANS: Server error thrown when user profile settings could not be saved.
|
// TRANS: Server error thrown when user profile settings could not be saved.
|
||||||
$this->serverError(_('Could not save profile.'));
|
$this->serverError(_('Could not save profile.'));
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set the user tags
|
// Set the user tags
|
||||||
@ -455,7 +423,6 @@ class ProfilesettingsAction extends SettingsAction
|
|||||||
if (!$result) {
|
if (!$result) {
|
||||||
// TRANS: Server error thrown when user profile settings tags could not be saved.
|
// TRANS: Server error thrown when user profile settings tags could not be saved.
|
||||||
$this->serverError(_('Could not save tags.'));
|
$this->serverError(_('Could not save tags.'));
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$user->query('COMMIT');
|
$user->query('COMMIT');
|
||||||
|
@ -842,6 +842,31 @@ class Profile extends Managed_DataObject
|
|||||||
return ($biolimit > 0 && !empty($bio) && (mb_strlen($bio) > $biolimit));
|
return ($biolimit > 0 && !empty($bio) && (mb_strlen($bio) > $biolimit));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function update($orig)
|
||||||
|
{
|
||||||
|
if ($this->nickname != $orig->nickname) {
|
||||||
|
$local = User::getKV('id', $this->id);
|
||||||
|
if ($local instanceof User) {
|
||||||
|
common_debug("Updating User ({$this->id}) nickname from {$orig->nickname} to {$this->nickname}");
|
||||||
|
$origuser = clone($local);
|
||||||
|
$local->nickname = $this->nickname;
|
||||||
|
$result = $local->updateKeys($origuser);
|
||||||
|
if ($result === false) {
|
||||||
|
common_log_db_error($local, 'UPDATE', __FILE__);
|
||||||
|
// TRANS: Server error thrown when user profile settings could not be updated.
|
||||||
|
throw new ServerException(_('Could not update user nickname.'));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Clear the site owner, in case nickname changed
|
||||||
|
if ($local->hasRole(Profile_role::OWNER)) {
|
||||||
|
User::blow('user:site_owner');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return parent::update($orig);
|
||||||
|
}
|
||||||
|
|
||||||
function delete()
|
function delete()
|
||||||
{
|
{
|
||||||
$this->_deleteNotices();
|
$this->_deleteNotices();
|
||||||
|
@ -155,7 +155,7 @@ class User extends Managed_DataObject
|
|||||||
{
|
{
|
||||||
$this->_connect();
|
$this->_connect();
|
||||||
$parts = array();
|
$parts = array();
|
||||||
foreach (array('nickname', 'email', 'incomingemail', 'sms', 'carrier', 'smsemail', 'language', 'timezone') as $k) {
|
foreach (array('nickname', 'email', 'incomingemail', 'sms', 'carrier', 'smsemail') as $k) {
|
||||||
if (strcmp($this->$k, $orig->$k) != 0) {
|
if (strcmp($this->$k, $orig->$k) != 0) {
|
||||||
$parts[] = $k . ' = ' . $this->_quote($this->$k);
|
$parts[] = $k . ' = ' . $this->_quote($this->$k);
|
||||||
}
|
}
|
||||||
|
@ -794,6 +794,7 @@ class User_group extends Managed_DataObject
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Also make sure the Profile table is up to date!
|
||||||
$fields = array(/*group field => profile field*/
|
$fields = array(/*group field => profile field*/
|
||||||
'nickname' => 'nickname',
|
'nickname' => 'nickname',
|
||||||
'fullname' => 'fullname',
|
'fullname' => 'fullname',
|
||||||
|
Loading…
Reference in New Issue
Block a user