bugzilla-4intranet/extensions/custis/lib/CustisBuglistHooks.pm

79 lines
2.3 KiB
Perl
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#!/usr/bin/perl
# Хуки в список багов
package CustisBuglistHooks;
use strict;
use Bugzilla::Search;
use Bugzilla::Util;
sub buglist_static_columns
{
my ($args) = @_;
my $columns = $args->{columns};
my $dbh = Bugzilla->dbh;
# CustIS Bug 71955 - first comment to the bug
$columns->{comment0} = {
title => "First Comment",
};
$columns->{lastcommenter} = {
title => "Last Commenter",
};
### Testopia ###
$columns->{test_cases} = {
title => "Test cases",
name => "(SELECT ".$dbh->sql_group_concat("case_id", "', '")." FROM (SELECT DISTINCT tcb.case_id FROM test_case_bugs tcb WHERE tcb.bug_id=bugs.bug_id) t)",
};
### end Testopia ###
# Нужно для SuperWorkTime, однако эта необходимость следует
# из неидеальности buglist.cgi - он не выводит баги объектами
$columns->{product_notimetracking} = {
name => 'map_products.notimetracking',
joins => $columns->{product}->{joins},
nobuglist => 1,
nocharts => 1,
};
$columns->{relevance}->{title} = 'Relevance';
return 1;
}
sub buglist_columns
{
my ($args) = @_;
my $columns = $args->{columns};
# CustIS Bug 71955 - first comment to the bug
# FIXME можно сделать JOIN'ом по bug_when=creation_ts
# но тогда дополнительно надо COALESCE на подзапрос с isprivate
# в случае isprivate.
my $hint = '';
my $dbh = Bugzilla->dbh;
if ($dbh->isa('Bugzilla::DB::Mysql'))
{
$hint = ' FORCE INDEX (longdescs_bug_id_idx)';
}
my $priv = (Bugzilla->user->is_insider ? "" : "AND ldc0.isprivate=0 ");
$columns->{comment0}->{name} =
"(SELECT thetext FROM longdescs ldc0$hint WHERE ldc0.bug_id = bugs.bug_id $priv".
" ORDER BY ldc0.bug_when LIMIT 1)";
my $login = 'ldp0.login_name';
if (!Bugzilla->user->id)
{
$login = $dbh->sql_string_until($login, $dbh->quote('@'));
}
$columns->{lastcommenter}->{name} =
"(SELECT $login FROM longdescs ldc0$hint".
" INNER JOIN profiles ldp0 ON ldp0.userid=ldc0.who WHERE ldc0.bug_id = bugs.bug_id $priv".
" ORDER BY ldc0.bug_when DESC LIMIT 1)";
return 1;
}
1;
__END__