Commit bf1e1f7c authored by jocuri%softhome.net's avatar jocuri%softhome.net

Patch for bug 237683: Allow for more flexible user searching such as real name,…

Patch for bug 237683: Allow for more flexible user searching such as real name, email, and userid, in editusers; patch by David Lawrence <dkl@redhat.com>, r=bugzilla@chimpychompy.org, a=justdave@bugzilla.org.
parent 631d910c
#!/usr/bin/perl -wT #!/usr/bin/perl -wT
# -*- Mode: perl; indent-tabs-mode: nil -*- # -*- Mode: perl; indent-tabs-mode: nil -*-
# #
# The contents of this file are subject to the Mozilla Public # The contents of this file are subject to the Mozilla Public
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
# Contributor(s): Marc Schumann <wurblzap@gmail.com> # Contributor(s): Marc Schumann <wurblzap@gmail.com>
# Lance Larsh <lance.larsh@oracle.com> # Lance Larsh <lance.larsh@oracle.com>
# Frédéric Buclin <LpSolit@gmail.com> # Frédéric Buclin <LpSolit@gmail.com>
# David Lawrence <dkl@redhat.com>
use strict; use strict;
use lib "."; use lib ".";
...@@ -69,6 +70,7 @@ if ($action eq 'search') { ...@@ -69,6 +70,7 @@ if ($action eq 'search') {
########################################################################### ###########################################################################
} elsif ($action eq 'list') { } elsif ($action eq 'list') {
my $matchvalue = $cgi->param('matchvalue') || '';
my $matchstr = $cgi->param('matchstr'); my $matchstr = $cgi->param('matchstr');
my $matchtype = $cgi->param('matchtype'); my $matchtype = $cgi->param('matchtype');
my $grouprestrict = $cgi->param('grouprestrict') || '0'; my $grouprestrict = $cgi->param('grouprestrict') || '0';
...@@ -115,10 +117,22 @@ if ($action eq 'search') { ...@@ -115,10 +117,22 @@ if ($action eq 'search') {
$vars->{'users'} = {}; $vars->{'users'} = {};
} }
else { else {
# Handle selection by user name. # Handle selection by login name, real name, or userid.
if (defined($matchtype)) { if (defined($matchtype)) {
$query .= " $nextCondition "; $query .= " $nextCondition ";
my $expr = "profiles.login_name"; my $expr = "";
if ($matchvalue eq 'userid') {
if ($matchstr) {
my $stored_matchstr = $matchstr;
detaint_natural($matchstr)
|| ThrowUserError('illegal_user_id', {userid => $stored_matchstr});
}
$expr = "profiles.userid";
} elsif ($matchvalue eq 'realname') {
$expr = "profiles.realname";
} else {
$expr = "profiles.login_name";
}
if ($matchtype eq 'regexp') { if ($matchtype eq 'regexp') {
$query .= $dbh->sql_regexp($expr, '?'); $query .= $dbh->sql_regexp($expr, '?');
$matchstr = '.' unless $matchstr; $matchstr = '.' unless $matchstr;
...@@ -752,7 +766,7 @@ sub check_user { ...@@ -752,7 +766,7 @@ sub check_user {
# Copy incoming list selection values from CGI params to template variables. # Copy incoming list selection values from CGI params to template variables.
sub mirrorListSelectionValues { sub mirrorListSelectionValues {
if (defined($cgi->param('matchtype'))) { if (defined($cgi->param('matchtype'))) {
foreach ('matchstr', 'matchtype', 'grouprestrict', 'groupid') { foreach ('matchvalue', 'matchstr', 'matchtype', 'grouprestrict', 'groupid') {
$vars->{'listselectionvalues'}{$_} = $cgi->param($_); $vars->{'listselectionvalues'}{$_} = $cgi->param($_);
} }
} }
......
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
# The Original Code is the Bugzilla Bug Tracking System. # The Original Code is the Bugzilla Bug Tracking System.
# #
# Contributor(s): Marc Schumann <wurblzap@gmail.com> # Contributor(s): Marc Schumann <wurblzap@gmail.com>
# David Lawrence <dkl@redhat.com>
#%] #%]
[%# INTERFACE: [%# INTERFACE:
...@@ -35,7 +36,13 @@ ...@@ -35,7 +36,13 @@
<form name="f" method="get" action="editusers.cgi"> <form name="f" method="get" action="editusers.cgi">
<input type="hidden" name="action" value="list" /> <input type="hidden" name="action" value="list" />
<p><label for="matchstr">List users with login name matching</label> <p><label for="matchvalue">List users with</label>
<select id="matchvalue" name="matchvalue">
<option value="login_name">login name</option>
<option value="realname">real name</option>
<option value="userid">user id</option>
</select>
<label for="matchstr">matching</label>
<input size="32" name="matchstr" id="matchstr" /> <input size="32" name="matchstr" id="matchstr" />
<select name="matchtype"> <select name="matchtype">
<option value="substr" selected="selected">case-insensitive substring</option> <option value="substr" selected="selected">case-insensitive substring</option>
......
...@@ -1256,6 +1256,10 @@ ...@@ -1256,6 +1256,10 @@
[% title = "File Is Empty" %] [% title = "File Is Empty" %]
The file you are trying to attach is empty! The file you are trying to attach is empty!
[% ELSIF error == "illegal_user_id" %]
[% title = "Illegal User ID" %]
User ID '[% userid FILTER html %]' is not valid integer.
[% ELSE %] [% ELSE %]
[%# Try to find hooked error messages %] [%# Try to find hooked error messages %]
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment