$main::lxdebug->leave_sub();
}
+sub active_session_ids {
+ my $self = shift;
+ my $dbh = $self->dbconnect;
+
+ my $query = qq|SELECT id FROM auth.session|;
+
+ my @ids = selectall_array_query($::form, $dbh, $query);
+
+ return @ids;
+}
+
sub expire_sessions {
$main::lxdebug->enter_sub();
use SL::DBUtils;
use SL::DB::MetaSetup::CsvImportReport;
+use SL::DB::Manager::CsvImportReport;
__PACKAGE__->meta->add_relationships(
rows => {
},
);
-__PACKAGE__->meta->make_manager_class;
__PACKAGE__->meta->initialize;
sub folded_rows {
--- /dev/null
+package SL::DB::Manager::CsvImportReport;
+
+use strict;
+
+use base qw(SL::DB::Helper::Manager);
+
+sub object_class { 'SL::DB::CsvImportReport' }
+
+__PACKAGE__->make_manager_methods;
+
+sub cleanup {
+ my ($self) = @_;
+
+ $::auth->active_session_ids;
+
+ # get expired reports
+ my $objects = $self->get_all(query => [
+ session_id => [
+ not => [ $::auth->active_session_ids ]
+ ]
+ ]);
+
+ $_->destroy for @$objects;
+
+ # get reports for the active session that aren't the latest
+ $objects = $self->get_all(
+ query => [ session_id => $::auth->get_session_id, ],
+ order_by => [ 'id' ],
+ );
+
+ # skip the last one
+ for (0 .. $#$objects - 1) {
+ $objects->[$_]->destroy;
+ }
+}
+
+1;
+