default to a session cookie instead of setting an explicit timeout, weird timezone...
[freeside.git] / httemplate / edit / process / agent_type.cgi
index 4e98cf1..ad5963b 100755 (executable)
@@ -1,5 +1,13 @@
-<!-- $Id: agent_type.cgi,v 1.4 2002-02-09 18:24:01 ivan Exp $ -->
-<%
+%if ( $error ) {
+%  $cgi->param('error', $error);
+<% $cgi->redirect(popurl(2). "agent_type.cgi?". $cgi->query_string ) %>
+%} else {
+<% $cgi->redirect(popurl(3). "browse/agent_type.cgi") %>
+%}
+<%init>
+
+die "access denied"
+  unless $FS::CurrentUser::CurrentUser->access_right('Configuration');
 
 my $typenum = $cgi->param('typenum');
 my $old = qsearchs('agent_type',{'typenum'=>$typenum}) if $typenum;
@@ -12,44 +20,16 @@ my $new = new FS::agent_type ( {
 
 my $error;
 if ( $typenum ) {
-  $error=$new->replace($old);
+  $error = $new->replace($old);
 } else {
-  $error=$new->insert;
-  $typenum=$new->getfield('typenum');
+  $error    = $new->insert;
+  $typenum  = $new->getfield('typenum');
 }
 
-if ( $error ) {
-  $cgi->param('error', $error);
-  print $cgi->redirect(popurl(2). "agent_type.cgi?". $cgi->query_string );
-} else {
-
-  foreach my $part_pkg (qsearch('part_pkg',{})) {
-    my($pkgpart)=$part_pkg->getfield('pkgpart');
-
-    my($type_pkgs)=qsearchs('type_pkgs',{
-        'typenum' => $typenum,
-        'pkgpart' => $pkgpart,
-    });
-    if ( $type_pkgs && ! $cgi->param("pkgpart$pkgpart") ) {
-      my($d_type_pkgs)=$type_pkgs; #need to save $type_pkgs for below.
-      $error=$d_type_pkgs->delete;
-      die $error if $error;
-
-    } elsif ( $cgi->param("pkgpart$pkgpart")
-              && ! $type_pkgs
-    ) {
-      #ok to clobber it now (but bad form nonetheless?)
-      $type_pkgs=new FS::type_pkgs ({
-        'typenum' => $typenum,
-        'pkgpart' => $pkgpart,
-      });
-      $error= $type_pkgs->insert;
-      die $error if $error;
-    }
-
-  }
-
-  print $cgi->redirect(popurl(3). "browse/agent_type.cgi");
-}
+  $error ||= $new->process_m2m(
+    'link_table'   => 'type_pkgs',
+    'target_table' => 'part_pkg',
+    'params'       => scalar($cgi->Vars)
+  );
 
-%>
+</%init>