From 686c4dd420f19c596e7c4b1a3980e5121c007c32 Mon Sep 17 00:00:00 2001 From: ivan Date: Sun, 10 Feb 2002 21:30:05 +0000 Subject: [PATCH] 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 --- FS/FS/Conf.pm | 7 +++++++ FS/FS/part_pkg.pm | 50 ++++++++++++++++++++++++++++++++++++++++++++++++-- conf/agent_defaultpkg | 0 3 files changed, 55 insertions(+), 2 deletions(-) create mode 100644 conf/agent_defaultpkg 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 -- 2.11.0