1package Magus::Category; 2# 3# Copyright (c) 2007,2008 Chris Reinhardt. All rights reserved. 4# 5# Redistribution and use in source and binary forms, with or without 6# modification, are permitted provided that the following conditions are 7# met: 8# 9# 1. Redistributions of source code must retain the above copyright notice 10# this list of conditions and the following disclaimer. 11# 12# 2. Redistributions in binary form must reproduce the above copyright 13# notice, this list of conditions and the following disclaimer in the 14# documentation and/or other materials provided with the distribution. 15# 16# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 17# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY 18# AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 19# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 20# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 21# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 22# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 23# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 24# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 25# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26# 27 28# 29# MAINTAINER= ctriv@MidnightBSD.org 30# 31 32use strict; 33use warnings; 34use base qw(Magus::DBI); 35 36 37__PACKAGE__->table('categories'); 38__PACKAGE__->columns(Essential => qw/id category/); 39__PACKAGE__->has_many(ports => [ 'Magus::PortCategory' => 'port']); 40 41 42=head2 $cat->distinct_ports 43 44Returns an arrayref of port names. These are the distinct ports 45belonging to this cateogory, without duplicates. 46 47=cut 48sub distinct_ports { 49 my ($self) = @_; 50 51 my $dbh = $self->db_Main; 52 53 return $dbh->selectcol_arrayref( 54 "SELECT DISTINCT(ports.name) FROM ports,port_categories pc WHERE ports.id=pc.port AND pc.category=?", 55 undef, 56 $self->id 57 ); 58} 59 60 61 621; 63__END__ 64 65