summaryrefslogtreecommitdiffstats
path: root/extensions/Review/lib/Util.pm
diff options
context:
space:
mode:
Diffstat (limited to 'extensions/Review/lib/Util.pm')
-rw-r--r--extensions/Review/lib/Util.pm71
1 files changed, 32 insertions, 39 deletions
diff --git a/extensions/Review/lib/Util.pm b/extensions/Review/lib/Util.pm
index a8744079d..61d4e9117 100644
--- a/extensions/Review/lib/Util.pm
+++ b/extensions/Review/lib/Util.pm
@@ -17,12 +17,12 @@ use Bugzilla;
our @EXPORT = qw( rebuild_review_counters );
sub rebuild_review_counters {
- my ($callback) = @_;
- my $dbh = Bugzilla->dbh;
+ my ($callback) = @_;
+ my $dbh = Bugzilla->dbh;
- $dbh->bz_start_transaction;
+ $dbh->bz_start_transaction;
- my $rows = $dbh->selectall_arrayref("
+ my $rows = $dbh->selectall_arrayref("
SELECT flags.requestee_id AS user_id,
flagtypes.name AS flagtype,
COUNT(*) as count
@@ -32,55 +32,48 @@ sub rebuild_review_counters {
WHERE flags.status = '?'
AND flagtypes.name IN ('review', 'feedback', 'needinfo')
GROUP BY flags.requestee_id, flagtypes.name
- ", { Slice => {} });
+ ", {Slice => {}});
- my ($count, $total, $current) = (1, scalar(@$rows), { id => 0 });
- foreach my $row (@$rows) {
- $callback->($count++, $total) if $callback;
- if ($row->{user_id} != $current->{id}) {
- _update_profile($dbh, $current) if $current->{id};
- $current = { id => $row->{user_id} };
- }
- $current->{$row->{flagtype}} = $row->{count};
+ my ($count, $total, $current) = (1, scalar(@$rows), {id => 0});
+ foreach my $row (@$rows) {
+ $callback->($count++, $total) if $callback;
+ if ($row->{user_id} != $current->{id}) {
+ _update_profile($dbh, $current) if $current->{id};
+ $current = {id => $row->{user_id}};
}
- _update_profile($dbh, $current) if $current->{id};
+ $current->{$row->{flagtype}} = $row->{count};
+ }
+ _update_profile($dbh, $current) if $current->{id};
- foreach my $field (qw( review feedback needinfo )) {
- _fix_negatives($dbh, $field);
- }
+ foreach my $field (qw( review feedback needinfo )) {
+ _fix_negatives($dbh, $field);
+ }
- $dbh->bz_commit_transaction;
+ $dbh->bz_commit_transaction;
}
sub _fix_negatives {
- my ($dbh, $field) = @_;
- my $user_ids = $dbh->selectcol_arrayref(
- "SELECT userid FROM profiles WHERE ${field}_request_count < 0"
- );
- return unless @$user_ids;
- $dbh->do(
- "UPDATE profiles SET ${field}_request_count = 0 WHERE " . $dbh->sql_in('userid', $user_ids)
- );
- foreach my $user_id (@$user_ids) {
- Bugzilla->memcached->clear({ table => 'profiles', id => $user_id });
- }
+ my ($dbh, $field) = @_;
+ my $user_ids = $dbh->selectcol_arrayref(
+ "SELECT userid FROM profiles WHERE ${field}_request_count < 0");
+ return unless @$user_ids;
+ $dbh->do("UPDATE profiles SET ${field}_request_count = 0 WHERE "
+ . $dbh->sql_in('userid', $user_ids));
+ foreach my $user_id (@$user_ids) {
+ Bugzilla->memcached->clear({table => 'profiles', id => $user_id});
+ }
}
sub _update_profile {
- my ($dbh, $data) = @_;
- $dbh->do("
+ my ($dbh, $data) = @_;
+ $dbh->do("
UPDATE profiles
SET review_request_count = ?,
feedback_request_count = ?,
needinfo_request_count = ?
- WHERE userid = ?",
- undef,
- $data->{review} || 0,
- $data->{feedback} || 0,
- $data->{needinfo} || 0,
- $data->{id}
- );
- Bugzilla->memcached->clear({ table => 'profiles', id => $data->{id} });
+ WHERE userid = ?", undef, $data->{review} || 0, $data->{feedback} || 0,
+ $data->{needinfo} || 0, $data->{id});
+ Bugzilla->memcached->clear({table => 'profiles', id => $data->{id}});
}
1;