summaryrefslogtreecommitdiffstats
path: root/Bugzilla/Keyword.pm
diff options
context:
space:
mode:
authormkanat%bugzilla.org <>2006-06-01 09:23:17 +0200
committermkanat%bugzilla.org <>2006-06-01 09:23:17 +0200
commit24a02ebf00c318c3406fc4c4f38a8f93480b0548 (patch)
tree7680b275b7ea3e00a221d5a62e4a43ea42169752 /Bugzilla/Keyword.pm
parent24a97437dccabbe0778e2e4f8330b47aefda428d (diff)
downloadbugzilla-24a02ebf00c318c3406fc4c4f38a8f93480b0548.tar.gz
bugzilla-24a02ebf00c318c3406fc4c4f38a8f93480b0548.tar.xz
Bug 329377: Bugzilla::Object base class for objects
Patch By Max Kanat-Alexander <mkanat@bugzilla.org> r=LpSolit, r=kevin.benton, a=justdave
Diffstat (limited to 'Bugzilla/Keyword.pm')
-rw-r--r--Bugzilla/Keyword.pm137
1 files changed, 9 insertions, 128 deletions
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<new($param)>
-
- 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<new_from_list(\@id_list)>
-
- 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<Bugzilla::Keyword> objects.
-
-=back
+This implements all standard C<Bugzilla::Object> methods. See
+L<Bugzilla::Object> for more details.
=head1 SUBROUTINES
-=over
-
-=item C<get_all_keywords()>
+This is only a list of subroutines specific to C<Bugzilla::Keyword>.
+See L<Bugzilla::Object> for more subroutines that this object
+implements.
- Description: Returns all keywords from the database.
-
- Params: none.
-
- Returns: A list of C<Bugzilla::Keyword> objects,
- or an empty list if there are none.
+=over
=item C<keyword_count()>