default to a session cookie instead of setting an explicit timeout, weird timezone...
[freeside.git] / FS / FS / port.pm
index c1bdee9..c26ca85 100644 (file)
@@ -4,6 +4,7 @@ use strict;
 use vars qw( @ISA );
 use FS::Record qw( qsearchs );
 use FS::nas;
 use vars qw( @ISA );
 use FS::Record qw( qsearchs );
 use FS::nas;
+use FS::session;
 
 @ISA = qw(FS::Record);
 
 
 @ISA = qw(FS::Record);
 
@@ -26,6 +27,8 @@ FS::port - Object methods for port records
 
   $error = $record->check;
 
 
   $error = $record->check;
 
+  $session = $port->session;
+
 =head1 DESCRIPTION
 
 An FS::port object represents an individual port on a NAS.  FS::port inherits
 =head1 DESCRIPTION
 
 An FS::port object represents an individual port on a NAS.  FS::port inherits
@@ -49,7 +52,7 @@ from FS::Record.  The following fields are currently supported:
 
 =item new HASHREF
 
 
 =item new HASHREF
 
-Creates a new port.  To add the example to the database, see L<"insert">.
+Creates a new port.  To add the port to the database, see L<"insert">.
 
 Note that this stores the hash reference, not a distinct copy of the hash it
 points to.  You can ask the object for a copy with the I<hash> method.
 
 Note that this stores the hash reference, not a distinct copy of the hash it
 points to.  You can ask the object for a copy with the I<hash> method.
@@ -88,7 +91,7 @@ returns the error, otherwise returns false.
 
 =item check
 
 
 =item check
 
-Checks all fields to make sure this is a valid example.  If there is
+Checks all fields to make sure this is a valid port.  If there is
 an error, returns the error, otherwise returns false.  Called by the insert
 and replace methods.
 
 an error, returns the error, otherwise returns false.  Called by the insert
 and replace methods.
 
@@ -101,7 +104,7 @@ sub check {
   my $self = shift;
   my $error =
     $self->ut_numbern('portnum')
   my $self = shift;
   my $error =
     $self->ut_numbern('portnum')
-    || $self->ut_ipn('ipn')
+    || $self->ut_ipn('ip')
     || $self->ut_numbern('nasport')
     || $self->ut_number('nasnum');
   ;
     || $self->ut_numbern('nasport')
     || $self->ut_number('nasnum');
   ;
@@ -110,46 +113,40 @@ sub check {
     unless $self->ip || $self->nasport;
   return "Unknown nasnum"
     unless qsearchs('nas', { 'nasnum' => $self->nasnum } );
     unless $self->ip || $self->nasport;
   return "Unknown nasnum"
     unless qsearchs('nas', { 'nasnum' => $self->nasnum } );
-  ''; #no error
+  $self->SUPER::check;
 }
 
 }
 
-=back
-
-=head1 VERSION
-
-$Id: port.pm,v 1.1 2000-10-27 20:18:32 ivan Exp $
-
-=head1 BUGS
-
-The author forgot to customize this manpage.
-
-=head1 SEE ALSO
-
-L<FS::Record>, schema.html from the base documentation.
+=item session
 
 
-=head1 HISTORY
+Returns the currently open session on this port, or if no session is currently
+open, the most recent session.  See L<FS::session>.
 
 
-ivan@voicenet.com 97-jul-1
+=cut
 
 
-added hfields
-ivan@sisd.com 97-nov-13
+sub session {
+  my $self = shift;
+  qsearchs('session', { 'portnum' => $self->portnum }, '*',
+                     'ORDER BY login DESC LIMIT 1' );
+}
 
 
-$Log: port.pm,v $
-Revision 1.1  2000-10-27 20:18:32  ivan
-oops, also necessary for session monitor
+=back
 
 
-Revision 1.1  1999/08/04 08:03:03  ivan
-move table subclass examples out of production directory
+=head1 BUGS
 
 
-Revision 1.4  1998/12/29 11:59:57  ivan
-mostly properly OO, some work still to be done with svc_ stuff
+The session method won't deal well if you have multiple open sessions on a
+port, for example if your RADIUS server drops B<stop> records.  Suggestions for
+how to deal with this sort of lossage welcome; should we close the session
+when we get a new session on that port?  Tag it as invalid somehow?  Close it
+one second after it was opened?  *sigh*  Maybe FS::session shouldn't let you
+create overlapping sessions, at least folks will find out their logging is
+dropping records.
 
 
-Revision 1.3  1998/11/15 04:33:00  ivan
-updates for newest versoin
+If you think the above refers multiple user logins you need to read the
+manpages again.
 
 
-Revision 1.2  1998/11/15 03:48:49  ivan
-update for current version
+=head1 SEE ALSO
 
 
+L<FS::Record>, schema.html from the base documentation.
 
 =cut
 
 
 =cut