| Perlbug documentation | Contained in the Perlbug distribution. |
Perlbug::Object::Group - Group class
Perlbug bug class.
For inherited methods, see Perlbug::Object::Object
use Perlbug::Object::Group;
my $o_grp = Perlbug::Object::Group->new();
print $o_grp->read('docs')->format('a');
Create new Group object:
my $o_group = Perlbug::Object::Group->new();
Check if name is unique
my $o_grp = $o_grp->create(\%data);
html formatter for individual group entries for placement
my $h_grp= $o_grp->htmlify($h_grp);
Update group data via web interface, accepts relations via param('_opts')
$oid = $o_grp->webupdate(\%cgidata, $oid);
Group formatter for all occasions...
Lean (list) ascii format for groups:
my ($top, $format, @args) = $o_grp->FORMAT_l(\%data);
ascii format for groups:
my ($top, $format, @args) = $o_grp->FORMAT_a(\%data);
ASCII format for groups:
my ($top, $format, @args) = $o_grp->FORMAT_A(\%data);
Lean (list) html format for groups:
my ($top, $format, @args) = $o_grp->FORMAT_L(\%data);
html format for groups:
my ($top, $format, @args) = $o_grp->FORMAT_h(\%data);
HTML format for groups:
my ($top, $format, @args) = $o_grp->FORMAT_H(\%data);
Richard Foley perlbug@rfi.net 2000
| Perlbug documentation | Contained in the Perlbug distribution. |
# Perlbug bug record handler # (C) 1999 Richard Foley RFI perlbug@rfi.net # $Id: Group.pm,v 1.29 2002/01/25 16:12:59 richardf Exp $ #
package Perlbug::Object::Group; use strict; use vars qw($VERSION @ISA); $VERSION = do { my @r = (q$Revision: 1.29 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r }; $|=1;
use Data::Dumper; use Perlbug::Base; use Perlbug::Object; @ISA = qw(Perlbug::Object);
sub new { my $proto = shift; my $class = ref($proto) || $proto; my $o_base = (ref($_[0])) ? shift : Perlbug::Base->new; my $self = Perlbug::Object->new( $o_base, 'name' => 'Group', 'from' => [qw()], 'to' => [qw(address bug user)], ); bless($self, $class); }
sub create { my $self = shift; my $h_data = shift || $self->_oref('data'); my $proposed = $$h_data{'name'}; my ($extant) = $self->ids("name = '$proposed'"); if ($extant) { $self->debug(0, 'disallowed group data: '.Dumper($h_data)) if $Perlbug::DEBUG; $h_data = undef; print "<h3>\nCan't create a non-unique name($proposed) while extant($extant)!\n</h3><hr>\n"; } $self->SUPER::create($h_data) if $h_data; return $self; }
sub htmlify { my $self = shift; my $h_grp= shift; my $req = shift || 'admin'; return undef unless ref($h_grp) eq 'HASH'; my %grp = %{$h_grp}; my $cgi = $self->base->cgi(); my $gid = $grp{'groupid'}; my $name = my $stat = $grp{'name'}; %grp = %{$self->SUPER::htmlify($h_grp)}; ($grp{'groupid'}) = $self->href('group_id', [$gid], $gid, $stat); $grp{'groupid'} =~ s/format\=h/format\=H/gi; ($grp{'name'}) = $self->href('group_id', [$gid], $name, $stat); my $o_usr = $self->object('user'); if ($self->base->isadmin && $self->base->current('format') ne 'L' && $req ne 'noadmin') { $grp{'addaddress'} = $cgi->textfield(-'name' => $gid.'_addaddress', -'value' => '', -'size' => 45, -'maxlength' => 99, -'override' => 1); $grp{'addabugid'} = $cgi->textfield(-'name' => $gid.'_addabugid', -'value' => '', -'size' => 12, -'maxlength' => 12, -'override' => 1); $grp{'description'} = $cgi->textfield(-'name' => $gid.'_description', -'value' => $grp{'description'}, -'size' => 45, -'maxlength' => 99, -'override' => 1); $grp{'name'} = $cgi->textfield(-'name' => $gid.'_name', -'value' => $name, -'size' => 15, -'maxlength' => 15); $grp{'select'} = $cgi->checkbox(-'name'=>'groupids', -'checked' => '', -'value'=> $gid, -'label' => '', -'override' => 1); $grp{'user_ids'} = $o_usr->choice($gid.'_userids', $self->rel_ids('user')).$grp{'user_ids'}; } # print '<pre>'.Dumper(\%grp).'</pre>'; return \%grp; }
sub webupdate { my $self = shift; my $h_data = shift; my $oid = shift; my $cgi = shift || $self->base->cgi(); if (!(ref($h_data) eq 'HASH')) { $self->error("requires data hash ref($h_data) to update ".ref($self)." data via the web!"); } else { if ($self->read($oid)->READ) { $self->debug(0, "oid: ".$self->oid) if $Perlbug::DEBUG; my $pri = $self->attr('primary_key'); $$h_data{$pri} = $oid; my $i_updated = $self->update($h_data)->UPDATED; # internal debugging if ($i_updated == 1) { $self->SUPER::webupdate($h_data, $oid); } } } return $oid; }
# --------------------------------------------------------- #
sub FORMAT_l { # my $self = shift; my $d = shift; # my @args = ( $$d{'name'}, $$d{'groupid'}, $$d{'user_count'}, $$d{'bug_count'}, $$d{'address_count'}, $$d{'created'}, ); my $top = qq| Name GroupID Admins Bugs Ccs Created -------------------------------------------------------------------------------|; my $format = qq| @<<<<<<<< @<<<<< @<<<< @<<<<<< @<<<< @<<<<<<<<<<<<<<<<<<< |; return ($top, $format, @args); }
sub FORMAT_a { # my $self = shift; my $d = shift; # my @args = ( $$d{'name'}, $$d{'groupid'}, $$d{'user_count'}, $$d{'bug_count'}, $$d{'address_count'}, $$d{'created'}, $$d{'ts'}, $$d{'description'}, ); my $top = qq| Name GroupID Admins Bugs Ccs Created Modified -------------------------------------------------------------------------------|; my $format = qq| @<<<<<<<< @<<<<< @<<<< @<<<<<< @<<<< @<<<<<<<<<<<<<<<<<<< @<<<<<<<<<<<<<<<< @<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< |; return ($top, $format, @args); }
sub FORMAT_A { # my $self = shift; my $d = shift; # my @args = ( $$d{'name'}, $$d{'groupid'}, $$d{'user_count'}, $$d{'bug_count'}, $$d{'address_count'}, $$d{'created'}, $$d{'ts'}, $$d{'description'}, $$d{'user_ids'}, $$d{'address_ids'}, $$d{'bug_ids'}, $$d{'bug_ids'}, ); my $top = qq| Name GroupID Admins Bugs Ccs Created Modified -------------------------------------------------------------------------------|; my $format = qq| @<<<<<<<< @<<<<< @<<<< @<<<<<< @<<<< @<<<<<<<<<<<<<<<<<<< @<<<<<<<<<<<<<<<< @<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< Admins: @<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< Addresses: @* Bugids: @* |; return ($top, $format, @args); }
sub FORMAT_L { # my $self = shift; my $d = shift; # my @args = ( $$d{'select'}, $$d{'name'}, $$d{'groupid'}, $$d{'user_count'}, $$d{'bug_count'}, $$d{'address_count'}, $$d{'description'}, $$d{'created'}, ); my $top = qq|<tr> <td><b> </b></td> <td><b>Name</b></td> <td><b>GroupID</b></td> <td><b>Admins</b></td> <td><b>Bugs</b></td> <td><b>Ccs</b></td> <td><b>Description</b></td> <td><b>Created</b></td> </tr>|; my $format = '<tr><td>'.join(' </td><td>', @args).' <td></tr>'; return ($top, $format, @args); }
sub FORMAT_h { # my $self = shift; my $d = shift; # my @args = ( $$d{'select'}, $$d{'name'}, $$d{'groupid'}, $$d{'user_count'}, $$d{'bug_count'}, $$d{'address_count'}, $$d{'description'}, $$d{'created'}, $$d{'ts'}, ); my $top = qq|<tr> <td><b> </b></td> <td><b>Name</b></td> <td><b>GroupID</b></td> <td><b>Admins</b></td> <td><b>Bugs</b></td> <td><b>Ccs</b></td> <td><b>Description</b></td> <td><b>Created</b></td> <td><b>Modified</b></td> </tr>|; $^W = 0; my $format = '<tr><td>'.join(' </td><td>', @args).' <td></tr>'; return ($top, $format, @args); }
sub FORMAT_H { # my $self = shift; my $d = shift; # my @args = ( $$d{'select'}, $$d{'name'}, $$d{'groupid'}, $$d{'user_count'}, $$d{'bug_count'}, $$d{'address_count'}, $$d{'description'}, $$d{'created'}, $$d{'ts'}, ); my $top = qq|<tr> <td><b> </b></td> <td><b>Name</b></td> <td><b>GroupID</b></td> <td><b>Admins</b></td> <td><b>Bugs</b></td> <td><b>Ccs</b></td> <td><b>Description</b></td> <td><b>Created</b></td> <td><b>Modified</b></td> </tr>|; my $format = '<tr><td>'.join(' </td><td>', @args).' <td></tr>'; $format .= qq| <tr> <td><b>Admins:</b></td><td colspan=8>$$d{'user_names'}</td> </tr> <tr> <td><b>Ccs:</b></td> <td colspan=8>$$d{'address_names'}</td> </tr> |; $format .= qq| <tr> <td><b>Add Address:</b></td> <td colspan=8>$$d{'addaddress'}</td> </tr> <tr> <td><b>Add Bugid:</b></td> <td colspan=8>$$d{'addabugid'}</td> </tr> | if $self->base->isadmin; return ($top, $format, @args); }
# 1;