default to a session cookie instead of setting an explicit timeout, weird timezone...
[freeside.git] / FS / FS / port.pm
index ee4611d..c26ca85 100644 (file)
@@ -52,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.
@@ -91,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.
 
@@ -104,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');
   ;
@@ -113,59 +113,41 @@ 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;
 }
 
 =item session
 
 }
 
 =item session
 
-Returns the currently open session, or if no session is currently open, the
-most recent session.  See L<FS::session>.
+Returns the currently open session on this port, or if no session is currently
+open, the most recent session.  See L<FS::session>.
 
 =cut
 
 
 =cut
 
-
+sub session {
+  my $self = shift;
+  qsearchs('session', { 'portnum' => $self->portnum }, '*',
+                     'ORDER BY login DESC LIMIT 1' );
+}
 
 =back
 
 
 =back
 
-=head1 VERSION
-
-$Id: port.pm,v 1.2 2000-12-03 13:44:05 ivan Exp $
-
 =head1 BUGS
 
 =head1 BUGS
 
-The author forgot to customize this manpage.
+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.
+
+If you think the above refers multiple user logins you need to read the
+manpages again.
 
 =head1 SEE ALSO
 
 L<FS::Record>, schema.html from the base documentation.
 
 
 =head1 SEE ALSO
 
 L<FS::Record>, schema.html from the base documentation.
 
-=head1 HISTORY
-
-ivan@voicenet.com 97-jul-1
-
-added hfields
-ivan@sisd.com 97-nov-13
-
-$Log: port.pm,v $
-Revision 1.2  2000-12-03 13:44:05  ivan
-beginnings of web status for session monitor
-
-Revision 1.1  2000/10/27 20:18:32  ivan
-oops, also necessary for session monitor
-
-Revision 1.1  1999/08/04 08:03:03  ivan
-move table subclass examples out of production directory
-
-Revision 1.4  1998/12/29 11:59:57  ivan
-mostly properly OO, some work still to be done with svc_ stuff
-
-Revision 1.3  1998/11/15 04:33:00  ivan
-updates for newest versoin
-
-Revision 1.2  1998/11/15 03:48:49  ivan
-update for current version
-
-
 =cut
 
 1;
 =cut
 
 1;