summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorivan <ivan>2002-02-10 21:30:05 +0000
committerivan <ivan>2002-02-10 21:30:05 +0000
commit686c4dd420f19c596e7c4b1a3980e5121c007c32 (patch)
treedaddea047882229bcd6e23370b8eb0fdc7bf52c0
parent7e3eb82f87c371785544b706b7347c7edde2b593 (diff)
add new package definitions to all agent types by default
config option to restore current behaviour (must explicitly add new package definitions to each agent type) closes: Bug#324
-rw-r--r--FS/FS/Conf.pm7
-rw-r--r--FS/FS/part_pkg.pm50
-rw-r--r--conf/agent_defaultpkg0
3 files changed, 55 insertions, 2 deletions
diff --git a/FS/FS/Conf.pm b/FS/FS/Conf.pm
index 20ec1380e..f68d84e8b 100644
--- a/FS/FS/Conf.pm
+++ b/FS/FS/Conf.pm
@@ -730,6 +730,13 @@ httemplate/docs/config.html
'type' => 'checkbox',
},
+ {
+ 'key' => 'agent_defaultpkg',
+ 'section' => 'UI',
+ 'description' => 'Setting this option will cause new packages to be available to all agent types by default.',
+ 'type' => 'checkbox',
+ },
+
);
1;
diff --git a/FS/FS/part_pkg.pm b/FS/FS/part_pkg.pm
index 29257c0cb..86af95432 100644
--- a/FS/FS/part_pkg.pm
+++ b/FS/FS/part_pkg.pm
@@ -2,8 +2,11 @@ package FS::part_pkg;
use strict;
use vars qw( @ISA );
-use FS::Record qw( qsearch );
+use FS::Record qw( qsearch dbh );
use FS::pkg_svc;
+use FS::agent_type;
+use FS::type_pkgs;
+use FS::Conf;
@ISA = qw( FS::Record );
@@ -105,6 +108,49 @@ sub clone {
Adds this billing item definition to the database. If there is an error,
returns the error, otherwise returns false.
+=cut
+
+sub insert {
+ my $self = shift;
+
+ local $SIG{HUP} = 'IGNORE';
+ local $SIG{INT} = 'IGNORE';
+ local $SIG{QUIT} = 'IGNORE';
+ local $SIG{TERM} = 'IGNORE';
+ local $SIG{TSTP} = 'IGNORE';
+ local $SIG{PIPE} = 'IGNORE';
+
+ my $oldAutoCommit = $FS::UID::AutoCommit;
+ local $FS::UID::AutoCommit = 0;
+ my $dbh = dbh;
+
+ my $error = $self->SUPER::insert;
+ if ( $error ) {
+ $dbh->rollback if $oldAutoCommit;
+ return $error;
+ }
+
+ my $conf = new FS::Conf;
+
+ if ( $conf->exists('agent_defaultpkg') ) {
+ foreach my $agent_type ( qsearch('agent_type', {} ) ) {
+ my $type_pkgs = new FS::type_pkgs({
+ 'typenum' => $agent_type->typenum,
+ 'pkgpart' => $self->pkgpart,
+ });
+ my $error = $type_pkgs->insert;
+ if ( $error ) {
+ $dbh->rollback if $oldAutoCommit;
+ return $error;
+ }
+ }
+ }
+
+ $dbh->commit or die $dbh->errstr if $oldAutoCommit;
+
+ '';
+}
+
=item delete
Currently unimplemented.
@@ -182,7 +228,7 @@ sub svcpart {
=head1 VERSION
-$Id: part_pkg.pm,v 1.6 2002-01-28 06:57:23 ivan Exp $
+$Id: part_pkg.pm,v 1.7 2002-02-10 21:30:05 ivan Exp $
=head1 BUGS
diff --git a/conf/agent_defaultpkg b/conf/agent_defaultpkg
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/conf/agent_defaultpkg