yow. fix up group handling
authorivan <ivan>
Sun, 6 Aug 2006 20:21:32 +0000 (20:21 +0000)
committerivan <ivan>
Sun, 6 Aug 2006 20:21:32 +0000 (20:21 +0000)
FS/FS/svc_Common.pm
FS/FS/svc_acct.pm
httemplate/edit/svc_acct.cgi

index fdb4132..17942c7 100644 (file)
@@ -72,7 +72,7 @@ sub new {
 }
 
 #empty default
-sub _fieldhandlers { (); }
+sub _fieldhandlers { {}; }
 
 sub virtual_fields {
 
@@ -475,7 +475,7 @@ sub setx {
   my $self = shift;
   my $x = shift;
   my @x = ref($x) ? @$x : ($x);
-  my $coderef = scalar(@_) ? shift : {};
+  my $coderef = scalar(@_) ? shift : $self->_fieldhandlers;
 
   my $error =
     $self->ut_numbern('svcnum')
index e7d2b37..c50dfd5 100644 (file)
@@ -192,11 +192,11 @@ sub _fieldhandlers {
   {
     #false laziness with edit/svc_acct.cgi
     'usergroup' => sub { 
-                         my $usergroup = shift;
-                         if ( ref($usergroup) eq 'ARRAY' ) {
-                           $usergroup;
-                         } elsif ( length($usergroup) ) {
-                           [ split(/\s*,\s*/, $usergroup) ];
+                         my( $self, $groups ) = @_;
+                         if ( ref($groups) eq 'ARRAY' ) {
+                           $groups;
+                         } elsif ( length($groups) ) {
+                           [ split(/\s*,\s*/, $groups) ];
                          } else {
                            [];
                          }
index 8d50aed..14d6759 100755 (executable)
@@ -70,11 +70,20 @@ unless ( $svcnum || $cgi->param('error') ) { #adding
 
   $svc_acct->set_default_and_fixed( {
     #false laziness w/svc-acct::_fieldhandlers
-    'usergroup' => sub { return $_[0] if ref($_[0]) eq 'ARRAY';
-                         @groups = split(/\s*,\s*/, shift );
-                         \@groups;
-                       },
-  } );
+    'usergroup' => sub { 
+                         my( $self, $groups ) = @_;
+                         if ( ref($groups) eq 'ARRAY' ) {
+                           @groups = @$groups;
+                           $groups;
+                         } elsif ( length($groups) ) {
+                           @groups = split(/\s*,\s*/, $groups);
+                           [ @groups ];
+                         } else {
+                           @groups = ();
+                           [];
+                         }
+    }
+  );
 
 }