summaryrefslogtreecommitdiffstats
path: root/Bugzilla/User.pm
diff options
context:
space:
mode:
authorDylan William Hardison <dylan@hardison.net>2018-07-10 21:17:08 +0200
committerGitHub <noreply@github.com>2018-07-10 21:17:08 +0200
commit8de2aaf9e213651afaf12ec10b1091c22b7a9c55 (patch)
tree37120f452afdaadbb44c5a81de9d0958325da023 /Bugzilla/User.pm
parent446a08b30b0dbaac9f2b88e0a5cad410f0446140 (diff)
downloadbugzilla-8de2aaf9e213651afaf12ec10b1091c22b7a9c55.tar.gz
bugzilla-8de2aaf9e213651afaf12ec10b1091c22b7a9c55.tar.xz
Bug 1469911 - Make user autocompletion faster
Diffstat (limited to 'Bugzilla/User.pm')
-rw-r--r--Bugzilla/User.pm35
1 files changed, 24 insertions, 11 deletions
diff --git a/Bugzilla/User.pm b/Bugzilla/User.pm
index dc8f60565..9faed25cc 100644
--- a/Bugzilla/User.pm
+++ b/Bugzilla/User.pm
@@ -80,7 +80,8 @@ sub DB_COLUMNS {
'profiles.password_change_required',
'profiles.password_change_reason',
'profiles.mfa',
- 'profiles.mfa_required_date'
+ 'profiles.mfa_required_date',
+ 'profiles.nickname'
),
}
@@ -94,6 +95,7 @@ use constant VALIDATORS => {
disabledtext => \&_check_disabledtext,
login_name => \&check_login_name_for_creation,
realname => \&_check_realname,
+ nickname => \&_check_realname,
extern_id => \&_check_extern_id,
is_enabled => \&_check_is_enabled,
password_change_required => \&Bugzilla::Object::check_boolean,
@@ -114,6 +116,7 @@ sub UPDATE_COLUMNS {
password_change_reason
mfa
mfa_required_date
+ nickname
);
push(@cols, 'cryptpassword') if exists $self->{cryptpassword};
return @cols;
@@ -478,10 +481,25 @@ sub set_login {
delete $self->{nick};
}
+sub _generate_nickname {
+ my ($name, $login) = @_;
+ my ($nick) = extract_nicks($name);
+ if (!$nick) {
+ $nick = "";
+ }
+ return $nick;
+}
+
sub set_name {
my ($self, $name) = @_;
$self->set('realname', $name);
delete $self->{identity};
+ $self->set('nickname', _generate_nickname($name, $self->login));
+}
+
+sub set_nick {
+ my ($self, $nick) = @_;
+ $self->set('nickname', $nick);
}
sub set_password {
@@ -726,12 +744,8 @@ sub nick {
my $self = shift;
return "" unless $self->id;
-
- if (!defined $self->{nick}) {
- $self->{nick} = (split(/@/, $self->login, 2))[0];
- }
-
- return $self->{nick};
+ return $self->{nickname} if $self->{nickname};
+ return $self->{nick} //= (split(/@/, $self->login, 2))[0];
}
sub queries {
@@ -2514,13 +2528,12 @@ sub get_userlist {
}
sub create {
- my $invocant = shift;
- my $class = ref($invocant) || $invocant;
+ my ($class, $params) = @_;
my $dbh = Bugzilla->dbh;
$dbh->bz_start_transaction();
-
- my $user = $class->SUPER::create(@_);
+ $params->{nickname} = _generate_nickname($params->{realname}, $params->{login_name});
+ my $user = $class->SUPER::create($params);
# Turn on all email for the new user
require Bugzilla::BugMail;