From 24a02ebf00c318c3406fc4c4f38a8f93480b0548 Mon Sep 17 00:00:00 2001 From: "mkanat%bugzilla.org" <> Date: Thu, 1 Jun 2006 07:23:17 +0000 Subject: Bug 329377: Bugzilla::Object base class for objects Patch By Max Kanat-Alexander r=LpSolit, r=kevin.benton, a=justdave --- Bugzilla/Keyword.pm | 137 ++++------------------------------------------------ 1 file changed, 9 insertions(+), 128 deletions(-) (limited to 'Bugzilla/Keyword.pm') diff --git a/Bugzilla/Keyword.pm b/Bugzilla/Keyword.pm index 946d43c14..6ba72479c 100644 --- a/Bugzilla/Keyword.pm +++ b/Bugzilla/Keyword.pm @@ -18,8 +18,7 @@ use strict; package Bugzilla::Keyword; -use Bugzilla::Util; -use Bugzilla::Error; +use base qw(Bugzilla::Object); ############################### #### Initialization #### @@ -31,100 +30,18 @@ use constant DB_COLUMNS => qw( keyworddefs.description ); -my $columns = join(", ", DB_COLUMNS); - -sub new { - my $invocant = shift; - my $class = ref($invocant) || $invocant; - my $self = {}; - bless($self, $class); - return $self->_init(@_); -} - -sub _init { - my $self = shift; - my ($param) = @_; - my $dbh = Bugzilla->dbh; - - my $id = $param unless (ref $param eq 'HASH'); - my $keyword; - - if (defined $id) { - detaint_natural($id) - || ThrowCodeError('param_must_be_numeric', - {function => 'Bugzilla::Keyword::_init'}); - - $keyword = $dbh->selectrow_hashref(qq{ - SELECT $columns FROM keyworddefs - WHERE id = ?}, undef, $id); - } elsif (defined $param->{'name'}) { - trick_taint($param->{'name'}); - $keyword = $dbh->selectrow_hashref(qq{ - SELECT $columns FROM keyworddefs - WHERE name = ?}, undef, $param->{'name'}); - } else { - ThrowCodeError('bad_arg', - {argument => 'param', - function => 'Bugzilla::Keyword::_init'}); - } - - return undef unless (defined $keyword); - - foreach my $field (keys %$keyword) { - $self->{$field} = $keyword->{$field}; - } - return $self; -} - -sub new_from_list { - my $class = shift; - my ($id_list) = @_; - my $dbh = Bugzilla->dbh; - - my $keywords; - if (@$id_list) { - my @detainted_ids; - foreach my $id (@$id_list) { - detaint_natural($id) || - ThrowCodeError('param_must_be_numeric', - {function => 'Bugzilla::Keyword::new_from_list'}); - push(@detainted_ids, $id); - } - $keywords = $dbh->selectall_arrayref( - "SELECT $columns FROM keyworddefs WHERE id IN (" - . join(',', @detainted_ids) . ")", {Slice=>{}}); - } else { - return []; - } - - foreach my $keyword (@$keywords) { - bless($keyword, $class); - } - return $keywords; -} +use constant DB_TABLE => 'keyworddefs'; ############################### #### Accessors ###### ############################### -sub id { return $_[0]->{'id'}; } -sub name { return $_[0]->{'name'}; } sub description { return $_[0]->{'description'}; } ############################### #### Subroutines ###### ############################### -sub get_all_keywords { - my $dbh = Bugzilla->dbh; - - my $ids = $dbh->selectcol_arrayref(q{ - SELECT id FROM keyworddefs ORDER BY name}); - - my $keywords = Bugzilla::Keyword->new_from_list($ids); - return @$keywords; -} - sub keyword_count { my ($count) = Bugzilla->dbh->selectrow_array('SELECT COUNT(*) FROM keyworddefs'); @@ -143,60 +60,24 @@ Bugzilla::Keyword - A Keyword that can be added to a bug. use Bugzilla::Keyword; - my $keyword = new Bugzilla::Keyword(1); - my $keyword = new Bugzilla::Keyword({name => 'perf'}); + my $count = Bugzilla::Keyword::keyword_count; - my $id = $keyword->id; - my $name = $keyword->name; my $description = $keyword->description; =head1 DESCRIPTION Bugzilla::Keyword represents a keyword that can be added to a bug. -=head1 METHODS - -=over - -=item C - - Description: The constructor is used to load an existing keyword - by passing a keyword id or a hash. - - Params: $param - If you pass an integer, the integer is the - keyword id from the database that we want to - read in. If you pass in a hash with 'name' key, - then the value of the name key is the name of a - keyword from the DB. - - Returns: A Bugzilla::Keyword object. - -=item C - - Description: Creates an array of Keyword objects, given an - array of ids. - - Params: \@id_list - A reference to an array of numbers, keyword ids. - If any of these are not numeric, the function - will throw an error. If any of these are not - valid keyword ids, they will simply be skipped. - - Returns: A reference to an array of C objects. - -=back +This implements all standard C methods. See +L for more details. =head1 SUBROUTINES -=over - -=item C +This is only a list of subroutines specific to C. +See L for more subroutines that this object +implements. - Description: Returns all keywords from the database. - - Params: none. - - Returns: A list of C objects, - or an empty list if there are none. +=over =item C -- cgit v1.2.3-24-g4f1b