summaryrefslogtreecommitdiffstats
path: root/Bugzilla/Migrate/Flyspray.pm
diff options
context:
space:
mode:
Diffstat (limited to 'Bugzilla/Migrate/Flyspray.pm')
-rw-r--r--Bugzilla/Migrate/Flyspray.pm21
1 files changed, 17 insertions, 4 deletions
diff --git a/Bugzilla/Migrate/Flyspray.pm b/Bugzilla/Migrate/Flyspray.pm
index 9063466cc..af1b3fa01 100644
--- a/Bugzilla/Migrate/Flyspray.pm
+++ b/Bugzilla/Migrate/Flyspray.pm
@@ -283,17 +283,14 @@ sub _read_bugs {
t.date_opened,
t.last_edited_time,
t.mark_private,
- a.user_id assigned_to,
ls.status_name,
t.is_closed,
lr.resolution_name,
lv.version_name
FROM $fsdb.${fsprfx}tasks t
- LEFT OUTER JOIN $fsdb.${fsprfx}assigned a ON a.task_id = t.task_id
LEFT OUTER JOIN $fsdb.${fsprfx}list_status ls ON ls.status_id = t.item_status
LEFT OUTER JOIN $fsdb.${fsprfx}list_resolution lr ON lr.resolution_id = t.resolution_reason
LEFT OUTER JOIN $fsdb.${fsprfx}list_version lv ON lv.version_id = t.product_version
- GROUP BY t.task_id, a.task_id
ORDER BY t.task_id
");
$sth->execute();
@@ -344,15 +341,31 @@ sub _read_bugs {
};
}
+ my %bug_cc;
+
+ # assignee(s)
+ # a bug can be assigned to multiple people in FS. assign to one of them in BZ and add the rest to CC
+ my $assignee_sth = $self->{dbh}->prepare_cached("
+ SELECT user_id
+ FROM $fsdb.${fsprfx}assigned WHERE task_id = ?");
+ $assignee_sth->execute($row->{task_id});
+ if (my $row = $assignee_sth->fetchrow_hashref()) {
+ $bug->{assigned_to} = $self->_get_username($row->{user_id});
+ while (my $row = $assignee_sth->fetchrow_hashref()) {
+ $bug_cc{$self->_get_username($row->{user_id})} = 1;
+ }
+ }
+
# CC/bug watchers
my $cc_sth = $self->{dbh}->prepare_cached("
SELECT user_id
FROM $fsdb.${fsprfx}notifications WHERE task_id = ?");
$cc_sth->execute($row->{task_id});
while (my $row = $cc_sth->fetchrow_hashref()) {
- push @{$bug->{cc}}, $self->_get_username($row->{user_id});
+ $bug_cc{$self->_get_username($row->{user_id})} = 1;
}
+ $bug->{cc} = [keys %bug_cc];
# fetch comments
my $comments_sth = $self->{dbh}->prepare_cached("