Index: docs/upgrades/upgrade_7.3.10-7.3.11.pl =================================================================== --- docs/upgrades/upgrade_7.3.10-7.3.11.pl (revision 3783) +++ docs/upgrades/upgrade_7.3.10-7.3.11.pl (working copy) @@ -20,6 +20,8 @@ my $session = start(); # this line required +addUserSessionLengthFields($session); + # upgrade functions go here finish($session); # this line required @@ -32,8 +34,14 @@ # # and here's our code #} +#------------------------------------------------- +sub addUserSessionLengthFields { + my $session = shift; + print "\tAdding Session Length fields to userLoginLog table in database.\n" unless ($quiet); + $session->db->write("alter table userLoginLog add column sessionId varchar(22) binary"); + $session->db->write("alter table userLoginLog add column lastPageViewed bigint unsigned"); +} - # ---- DO NOT EDIT BELOW THIS LINE ---- #------------------------------------------------- Index: lib/WebGUI/Auth.pm =================================================================== --- lib/WebGUI/Auth.pm (revision 3783) +++ lib/WebGUI/Auth.pm (working copy) @@ -93,12 +93,14 @@ #------------------------------------------------------------------- sub _logLogin { my $self = shift; - $self->session->db->write("insert into userLoginLog values (?,?,?,?,?)", + $self->session->db->write("insert into userLoginLog values (?,?,?,?,?,?,?)", [ $_[0], $_[1], $self->session->datetime->time(), $self->session->env->getIp, - $self->session->env->get("HTTP_USER_AGENT") ] + $self->session->env->get("HTTP_USER_AGENT"), + $self->session->getId, + $self->session->datetime->time()] ); } Index: lib/WebGUI/Operation/LoginHistory.pm =================================================================== --- lib/WebGUI/Operation/LoginHistory.pm (revision 3783) +++ lib/WebGUI/Operation/LoginHistory.pm (working copy) @@ -46,7 +46,16 @@ $row[$i] .= ''.$data{status}.''; $row[$i] .= ''.$session->datetime->epochToHuman($data{timeStamp},"%H:%n%p %M/%D/%y").''; $row[$i] .= ''.$data{ipAddress}.''; - $row[$i] .= ''.$data{userAgent}.''; + $row[$i] .= ''.$data{userAgent}.''; + $row[$i] .= ''.$data{sessionId}.''; + if ($data{lastPageViewed}) { + $row[$i] .= ''.$session->datetime->epochToHuman($data{lastPageViewed},"%H:%n%p %M/%D/%y").''; + my ($interval, $units) = $session->datetime->secondsToInterval($data{lastPageViewed} - $data{timeStamp}); + $row[$i] .= "$interval $units"; + } else { + $row[$i] .= ""; + $row[$i] .= ""; + } $i++; } $sth->finish; @@ -57,7 +66,10 @@ $output .= ''.$i18n->get(434).''; $output .= ''.$i18n->get(429).''; $output .= ''.$i18n->get(431).''; - $output .= ''.$i18n->get(433).''; + $output .= ''.$i18n->get(433).''; + $output .= ''.$i18n->echo("Session ID").''; + $output .= ''.$i18n->echo("Last Page Viewed").''; + $output .= ''.$i18n->echo("Session Length").''; $output .= $p->getPage($session->form->process("pn")); $output .= ''; $output .= $p->getBar($session->form->process("pn")); Index: lib/WebGUI/Operation/User.pm =================================================================== --- lib/WebGUI/Operation/User.pm (revision 3783) +++ lib/WebGUI/Operation/User.pm (working copy) @@ -579,6 +579,8 @@ '.$i18n->get(454).' '.$i18n->get(429).' '.$i18n->get(434).' + '.$i18n->echo("Last Page Viewed").' + '.$i18n->echo("Session Length").' '; my $p = doUserSearch($session,"listUsers",1); foreach my $data (@{$p->getPageData}) { @@ -589,7 +591,7 @@ $output .= ''.$data->{email}.''; $output .= ''.$session->datetime->epochToHuman($data->{dateCreated},"%z").''; $output .= ''.$session->datetime->epochToHuman($data->{lastUpdated},"%z").''; - my ($lastLoginStatus, $lastLogin) = $session->db->quickArray("select status,timeStamp from userLoginLog where + my ($lastLoginStatus, $lastLogin, $lastPageViewed) = $session->db->quickArray("select status,timeStamp,lastPageViewed from userLoginLog where userId=".$session->db->quote($data->{userId})." order by timeStamp DESC"); if ($lastLogin) { $output .= ''.$session->datetime->epochToHuman($lastLogin).''; @@ -601,6 +603,14 @@ } else { $output .= ' - '; } + if ($lastPageViewed) { + $output .= ' '.$session->datetime->epochToHuman($lastPageViewed).''; + my ($interval, $units) = $session->datetime->secondsToInterval($lastPageViewed - $lastLogin); + $output .= "$interval $units"; + } else { + $output .= " - "; + $output .= " - "; + } $output .= ''; } $output .= ''; Index: lib/WebGUI/Session/Var.pm =================================================================== --- lib/WebGUI/Session/Var.pm (revision 3783) +++ lib/WebGUI/Session/Var.pm (working copy) @@ -185,6 +185,7 @@ $self->{_var}{expires} = $session->datetime->time() + $session->setting->get("sessionTimeout"); $self->session->{_sessionId} = $self->{_var}{sessionId}; $session->db->setRow("userSession","sessionId",$self->{_var}); + $session->db->write("update userLoginLog set lastPageViewed=? where sessionId=?", [$session->datetime->time(), $sessionId]); } else { ##Start a new default session with the requested, non-existant id. $self->start(1,$sessionId); }