Bug 332149: Ability to have symbols placed next to user names based on group membership - Patch by Fr��d��ric Buclin <LpSolit@gmail.com> r=myk a=LpSolit

This commit is contained in:
lpsolit%gmail.com 2007-08-08 14:04:20 +00:00
Родитель ad9be948ec
Коммит 0074c06bf7
7 изменённых файлов: 54 добавлений и 10 удалений

Просмотреть файл

@ -2251,8 +2251,7 @@ sub GetComments {
my @comments;
my @args = ($id);
my $query = 'SELECT longdescs.comment_id AS id, profiles.realname AS name,
profiles.login_name AS email, ' .
my $query = 'SELECT longdescs.comment_id AS id, profiles.userid, ' .
$dbh->sql_date_format('longdescs.bug_when', '%Y.%m.%d %H:%i:%s') .
' AS time, longdescs.thetext AS body, longdescs.work_time,
isprivate, already_wrapped, type, extra_data
@ -2271,8 +2270,7 @@ sub GetComments {
while (my $comment_ref = $sth->fetchrow_hashref()) {
my %comment = %$comment_ref;
$comment{'email'} .= Bugzilla->params->{'emailsuffix'};
$comment{'author'} = new Bugzilla::User($comment{'userid'});
# If raw data is requested, do not format 'special' comments.
$comment{'body'} = format_comment(\%comment) unless $raw;

Просмотреть файл

@ -703,11 +703,12 @@ sub prepare_comments {
my $result = "";
foreach my $comment (@$raw_comments) {
if ($count) {
my $author = $comment->{'author'};
$result .= "\n\n--- Comment #$count from ";
if ($comment->{'name'}) {
$result .= $comment->{'name'} . " <" . $comment->{'email'} . ">";
if ($author->name) {
$result .= $author->name . " <" . $author->email . ">";
} else {
$result .= $comment->{'email'};
$result .= $author->email;
}
$result .= " " . format_time($comment->{'time'}) . " ---\n";
}

Просмотреть файл

@ -873,6 +873,7 @@ use constant ABSTRACT_SCHEMA => {
DEFAULT => "''"},
isactive => {TYPE => 'BOOLEAN', NOTNULL => 1,
DEFAULT => 'TRUE'},
icon_url => {TYPE => 'TINYTEXT'},
],
INDEXES => [
groups_name_idx => {FIELDS => ['name'], TYPE => 'UNIQUE'},

Просмотреть файл

@ -43,6 +43,7 @@ use constant DB_COLUMNS => qw(
groups.isbuggroup
groups.userregexp
groups.isactive
groups.icon_url
);
use constant DB_TABLE => 'groups';
@ -55,6 +56,7 @@ use constant VALIDATORS => {
userregexp => \&_check_user_regexp,
isactive => \&_check_is_active,
isbuggroup => \&_check_is_bug_group,
icon_url => \&_check_icon_url,
};
use constant REQUIRED_CREATE_FIELDS => qw(name description isbuggroup);
@ -64,6 +66,7 @@ use constant UPDATE_COLUMNS => qw(
description
userregexp
isactive
icon_url
);
# Parameters that are lists of groups.
@ -78,6 +81,7 @@ sub description { return $_[0]->{'description'}; }
sub is_bug_group { return $_[0]->{'isbuggroup'}; }
sub user_regexp { return $_[0]->{'userregexp'}; }
sub is_active { return $_[0]->{'isactive'}; }
sub icon_url { return $_[0]->{'icon_url'}; }
sub members_direct {
my ($self) = @_;
@ -134,6 +138,7 @@ sub set_description { $_[0]->set('description', $_[1]); }
sub set_is_active { $_[0]->set('isactive', $_[1]); }
sub set_name { $_[0]->set('name', $_[1]); }
sub set_user_regexp { $_[0]->set('userregexp', $_[1]); }
sub set_icon_url { $_[0]->set('icon_url', $_[1]); }
sub update {
my $self = shift;
@ -324,6 +329,8 @@ sub _check_is_bug_group {
return $_[1] ? 1 : 0;
}
sub _check_icon_url { return $_[1] ? clean_text($_[1]) : undef; }
1;
__END__
@ -344,6 +351,7 @@ Bugzilla::Group - Bugzilla group class.
my $description = $group->description;
my $user_reg_exp = $group->user_reg_exp;
my $is_active = $group->is_active;
my $icon_url = $group->icon_url;
my $is_active_bug_group = $group->is_active_bug_group;
my $group_id = Bugzilla::Group::ValidateGroupName('admin', @users);

Просмотреть файл

@ -510,6 +510,9 @@ sub update_table_definitions {
# 2007-05-17 LpSolit@gmail.com - Bug 344965
_initialize_workflow($old_params);
# 2007-07-11 LpSolit@gmail.com - Bug 332149
$dbh->bz_add_column('groups', 'icon_url', {TYPE => 'TINYTEXT'});
################################################################
# New --TABLE-- changes should go *** A B O V E *** this point #
################################################################

Просмотреть файл

@ -800,6 +800,24 @@ sub can_set_flag {
|| $self->in_group_id($flag_type->grant_group->id)) ? 1 : 0;
}
sub direct_group_membership {
my $self = shift;
my $dbh = Bugzilla->dbh;
if (!$self->{'direct_group_membership'}) {
my $gid = $dbh->selectcol_arrayref('SELECT id
FROM groups
INNER JOIN user_group_map
ON groups.id = user_group_map.group_id
WHERE user_id = ?
AND isbless = 0',
undef, $self->id);
$self->{'direct_group_membership'} = Bugzilla::Group->new_from_list($gid);
}
return $self->{'direct_group_membership'};
}
# visible_groups_inherited returns a reference to a list of all the groups
# whose members are visible to this user.
sub visible_groups_inherited {
@ -2026,6 +2044,11 @@ is in any of the groups input to flatten_group_membership by querying the
user_group_map for any user with DIRECT or REGEXP membership IN() the list
of groups returned.
=item C<direct_group_membership>
Returns a reference to an array of group objects. Groups the user belong to
by group inheritance are excluded from the list.
=item C<visible_groups_inherited>
Returns a list of all groups whose members should be visible to this user.

Просмотреть файл

@ -244,12 +244,18 @@ if ($action eq 'new') {
my $desc = CheckGroupDesc($cgi->param('desc'));
my $regexp = CheckGroupRegexp($cgi->param('regexp'));
my $isactive = $cgi->param('isactive') ? 1 : 0;
# This is an admin page. The URL is considered safe.
my $icon_url;
if ($cgi->param('icon_url')) {
$icon_url = clean_text($cgi->param('icon_url'));
trick_taint($icon_url);
}
# Add the new group
$dbh->do('INSERT INTO groups
(name, description, isbuggroup, userregexp, isactive)
VALUES (?, ?, 1, ?, ?)',
undef, ($name, $desc, $regexp, $isactive));
(name, description, isbuggroup, userregexp, isactive, icon_url)
VALUES (?, ?, 1, ?, ?, ?)',
undef, ($name, $desc, $regexp, $isactive, $icon_url));
my $gid = $dbh->bz_last_key('groups', 'id');
my $admin = Bugzilla::Group->new({name => 'admin'})->id();
@ -565,6 +571,10 @@ sub doGroupChanges {
}
}
if (defined $cgi->param('icon_url')) {
$group->set_icon_url($cgi->param('icon_url'));
}
my $changes = $group->update();
my $sth_insert = $dbh->prepare('INSERT INTO group_group_map