diff --git a/docs/upgrades/upgrade_4.7.0-4.8.0.sql b/docs/upgrades/upgrade_4.7.0-4.8.0.sql index 3f9738503..85231f60e 100644 --- a/docs/upgrades/upgrade_4.7.0-4.8.0.sql +++ b/docs/upgrades/upgrade_4.7.0-4.8.0.sql @@ -14,6 +14,7 @@ alter table Article drop column alignImage; INSERT INTO template VALUES (1,'Default Article','\r\n
\r\n \" align=\"right\" border=\"0\">\r\n\r\n\r\n\r\n

\r\n\r\n\r\n\r\n \r\n

\">\r\n \r\n\r\n\r\n\r\n\r\n\r\n

\r\n
\r\n\r\n\r\n

\r\n \r\n \r\n
\"> ()\">
\r\n\r\n','Article'); INSERT INTO template VALUES (2,'Center Image','\r\n

\" border=\"0\">
\r\n
\r\n\r\n\r\n

\r\n\r\n\r\n\r\n \r\n

\">\r\n \r\n\r\n\r\n\r\n\r\n\r\n\r\n

\r\n \r\n \r\n
\"> ()\">
\r\n\r\n','Article'); INSERT INTO template VALUES (3,'Left Align Image','\r\n
\r\n \" align=\"left\" border=\"0\">\r\n\r\n\r\n\r\n

\r\n\r\n\r\n\r\n \r\n

\">\r\n \r\n\r\n\r\n\r\n\r\n\r\n

\r\n
\r\n\r\n\r\n

\r\n \r\n \r\n
\"> ()\">
\r\n\r\n','Article'); +create table userSessionScratch (sessionId varchar(60), name varchar(35), value varchar(255)); diff --git a/lib/WebGUI/Session.pm b/lib/WebGUI/Session.pm index a04e8ebe0..e03a3a4db 100644 --- a/lib/WebGUI/Session.pm +++ b/lib/WebGUI/Session.pm @@ -251,6 +251,10 @@ sub open { ### session variables (from userSession table) $session{var} = _getSessionVars($session{cookie}{wgSession},$session{dbh},$session{setting}{sessionTimeout}); ###---------------------------- + ### session scratch variables (from userSessionScratch table) + $session{scratch} = WebGUI::SQL->buildHashRef("select name,value from userSessionScratch + where sessionId=".quote($session{var}{sessionId})); + ###---------------------------- ### current user's account and profile information (from users and userProfileData tables) $session{user} = _getUserInfo($session{var}{userId},$session{dbh}); if ($session{env}{MOD_PERL}) { @@ -298,6 +302,26 @@ sub setCookie { push @{$session{header}{cookie}}, $session{cgi}->cookie(-name=>$_[0], -value=>$_[1], -expires=>'+10y', -path=>'/'); } +#------------------------------------------------------------------- + +=head2 setScratch ( name, value ) + + Sets a scratch variable for this user session. + +=cut + +sub setScratch { + return "" unless ($session{var}{sessionId}); + if ($session{scratch}{$_[0]}) { + WebGUI::SQL->write("update userSessionScratch set value=".quote($_[1])." + where sessionId=".quote($session{var}{sessionId})." and name=".quote($_[0])); + } else { + WebGUI::SQL->write("insert into userSessionScratch (sessionId,name,value) values + (".quote($session{var}{sessionId}).", ".quote($_[0]).", ".quote($_[1]).")"); + } + $session{scratch}{$_[0]} = $_[1]; +} + #------------------------------------------------------------------- sub start { my ($sessionId); diff --git a/sbin/Hourly/DeleteExpiredSessions.pm b/sbin/Hourly/DeleteExpiredSessions.pm index b8c40062e..b8c61889d 100644 --- a/sbin/Hourly/DeleteExpiredSessions.pm +++ b/sbin/Hourly/DeleteExpiredSessions.pm @@ -16,6 +16,11 @@ use WebGUI::SQL; #------------------------------------------------------------------- sub process { + my $sth = WebGUI::SQL->read("select sessionId from userSession where expires<".time()); + while (my ($sessionId) = $sth->array) { + WebGUI::SQL->write("delete from userSessionScratch where sessionId=".quote($sessionId)); + } + $sth->finish; WebGUI::SQL->write("delete from userSession where expires<".time()); }