if ($cgi->param('rebuildvotecache')) {
Status('vote_cache_rebuild_start');
- $dbh->bz_lock_tables('bugs WRITE', 'votes READ');
+ $dbh->bz_start_transaction();
$dbh->do(q{UPDATE bugs SET votes = 0});
my $sth_update = $dbh->prepare(q{UPDATE bugs
SET votes = ?
while (my ($id, $v) = $sth->fetchrow_array) {
$sth_update->execute($v, $id);
}
- $dbh->bz_unlock_tables();
+ $dbh->bz_commit_transaction();
Status('vote_cache_rebuild_end');
}
if ($cgi->param('remove_invalid_bug_references')) {
Status('bug_reference_deletion_start');
- $dbh->bz_lock_tables('attachments WRITE', 'bug_group_map WRITE',
- 'bugs_activity WRITE', 'cc WRITE',
- 'dependencies WRITE', 'duplicates WRITE',
- 'flags WRITE', 'keywords WRITE',
- 'longdescs WRITE', 'votes WRITE', 'bugs READ');
+ $dbh->bz_start_transaction();
foreach my $pair ('attachments/', 'bug_group_map/', 'bugs_activity/', 'cc/',
'dependencies/blocked', 'dependencies/dependson',
}
}
- $dbh->bz_unlock_tables();
+ $dbh->bz_commit_transaction();
Status('bug_reference_deletion_end');
}
if ($cgi->param('remove_invalid_attach_references')) {
Status('attachment_reference_deletion_start');
- $dbh->bz_lock_tables('attachments WRITE', 'attach_data WRITE');
+ $dbh->bz_start_transaction();
my $attach_ids =
$dbh->selectcol_arrayref('SELECT attach_data.id
join(',', @$attach_ids) . ')');
}
- $dbh->bz_unlock_tables();
+ $dbh->bz_commit_transaction();
Status('attachment_reference_deletion_end');
}
Status('keyword_cache_start');
if ($cgi->param('rebuildkeywordcache')) {
- $dbh->bz_lock_tables('bugs write', 'keywords read', 'keyworddefs read');
+ $dbh->bz_start_transaction();
}
my $query = q{SELECT keywords.bug_id, keyworddefs.name
}
if ($cgi->param('rebuildkeywordcache')) {
- $dbh->bz_unlock_tables();
+ $dbh->bz_commit_transaction();
}
}
if ($cgi->param('remove_invalid_flags')) {
Status('flag_deletion_start');
my @flag_ids = map {$_->[0]} @invalid_flags;
- $dbh->bz_lock_tables('flags WRITE');
# Silently delete these flags, with no notification to requesters/setters.
$dbh->do('DELETE FROM flags WHERE id IN (' . join(',', @flag_ids) .')');
- $dbh->bz_unlock_tables();
Status('flag_deletion_end');
}
else {
# Update the user's password in the profiles table and delete the token
# from the tokens table.
- $dbh->bz_lock_tables('profiles WRITE', 'tokens WRITE');
+ $dbh->bz_start_transaction();
$dbh->do(q{UPDATE profiles
SET cryptpassword = ?
WHERE userid = ?},
undef, ($cryptedpassword, $userid) );
$dbh->do('DELETE FROM tokens WHERE token = ?', undef, $::token);
- $dbh->bz_unlock_tables();
+ $dbh->bz_commit_transaction();
Bugzilla->logout_user_by_id($userid);
# Update the user's login name in the profiles table and delete the token
# from the tokens table.
- $dbh->bz_lock_tables('profiles WRITE', 'tokens WRITE');
+ $dbh->bz_start_transaction();
$dbh->do(q{UPDATE profiles
SET login_name = ?
WHERE userid = ?},
$dbh->do('DELETE FROM tokens WHERE token = ?', undef, $::token);
$dbh->do(q{DELETE FROM tokens WHERE userid = ?
AND tokentype = 'emailnew'}, undef, $userid);
- $dbh->bz_unlock_tables();
+ $dbh->bz_commit_transaction();
# The email address has been changed, so we need to rederive the groups
my $user = new Bugzilla::User($userid);
# check to see if it has been altered
if($actualemail ne $old_email) {
- $dbh->bz_lock_tables('profiles WRITE');
$dbh->do(q{UPDATE profiles
SET login_name = ?
WHERE userid = ?},
undef, ($old_email, $userid));
- $dbh->bz_unlock_tables();
# email has changed, so rederive groups
# Note that this is done _after_ the tables are unlocked
$vars->{'new_email'} = $new_email;
Bugzilla::Token::Cancel($::token, $vars->{'message'}, $vars);
- $dbh->bz_lock_tables('tokens WRITE');
$dbh->do(q{DELETE FROM tokens WHERE userid = ?
AND tokentype = 'emailold' OR tokentype = 'emailnew'},
undef, $userid);
- $dbh->bz_unlock_tables();
# Return HTTP response headers.
print $cgi->header();
# for products that only allow one vote per bug). In that case, we still
# need to clear the user's votes from the database.
my %affected;
- $dbh->bz_lock_tables('bugs WRITE', 'bugs_activity WRITE',
- 'votes WRITE', 'longdescs WRITE',
- 'products READ', 'fielddefs READ');
+ $dbh->bz_start_transaction();
# Take note of, and delete the user's old votes from the database.
my $bug_list = $dbh->selectcol_arrayref('SELECT bug_id FROM votes
my $confirmed = CheckIfVotedConfirmed($id, $who);
push (@updated_bugs, $id) if $confirmed;
}
- $dbh->bz_unlock_tables();
+ $dbh->bz_commit_transaction();
$vars->{'type'} = "votes";
$vars->{'mailrecipients'} = { 'changer' => Bugzilla->user->login };