# This Source Code Form is subject to the terms of the Mozilla Public # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. # # This Source Code Form is "Incompatible With Secondary Licenses", as # defined by the Mozilla Public License, v. 2.0. package Bugzilla::Attachment::Database; use 5.10.1; use strict; use warnings; use Bugzilla::Util qw(trick_taint); sub new { return bless({}, shift); } sub store { my ($self, $attach_id, $data) = @_; my $dbh = Bugzilla->dbh; my $sth = $dbh->prepare("INSERT INTO attach_data (id, thedata) VALUES ($attach_id, ?)"); trick_taint($data); $sth->bind_param(1, $data, $dbh->BLOB_TYPE); $sth->execute(); } sub retrieve { my ($self, $attach_id) = @_; my $dbh = Bugzilla->dbh; my ($data) = $dbh->selectrow_array( "SELECT thedata FROM attach_data WHERE id = ?", undef, $attach_id ); return $data; } sub remove { my ($self, $attach_id) = @_; my $dbh = Bugzilla->dbh; $dbh->do( "DELETE FROM attach_data WHERE id = ?", undef, $attach_id ); } sub exists { my ($self, $attach_id) = @_; my $dbh = Bugzilla->dbh; my ($exists) = $dbh->selectrow_array( "SELECT 1 FROM attach_data WHERE id = ?", undef, $attach_id ); return !!$exists; } 1;