From 13e1a253ddac7e34ea8a8c1529c5c710ab4020df Mon Sep 17 00:00:00 2001 From: JT Smith Date: Sat, 10 May 2003 15:38:47 +0000 Subject: [PATCH] Added the ability to set set scratch variables from the web interface. --- lib/WebGUI/Operation.pm | 1 + lib/WebGUI/Operation/Scratch.pm | 31 +++++++++++++++++++++++++++++++ lib/WebGUI/Session.pm | 26 ++++++++++++++++++++++++-- 3 files changed, 56 insertions(+), 2 deletions(-) create mode 100644 lib/WebGUI/Operation/Scratch.pm diff --git a/lib/WebGUI/Operation.pm b/lib/WebGUI/Operation.pm index bfe13e5ca..130980451 100644 --- a/lib/WebGUI/Operation.pm +++ b/lib/WebGUI/Operation.pm @@ -21,6 +21,7 @@ use WebGUI::Operation::Package; use WebGUI::Operation::Page; use WebGUI::Operation::ProfileSettings; use WebGUI::Operation::Root; +use WebGUI::Operation::Scratch; use WebGUI::Operation::Search; use WebGUI::Operation::Settings; use WebGUI::Operation::Statistics; diff --git a/lib/WebGUI/Operation/Scratch.pm b/lib/WebGUI/Operation/Scratch.pm new file mode 100644 index 000000000..f74630a14 --- /dev/null +++ b/lib/WebGUI/Operation/Scratch.pm @@ -0,0 +1,31 @@ +package WebGUI::Operation::Scratch; + +#------------------------------------------------------------------- +# WebGUI is Copyright 2001-2003 Plain Black LLC. +#------------------------------------------------------------------- +# Please read the legal notices (docs/legal.txt) and the license +# (docs/license.txt) that came with this distribution before using +# this software. +#------------------------------------------------------------------- +# http://www.plainblack.com info@plainblack.com +#------------------------------------------------------------------- + +use Exporter; +use strict; +use WebGUI::Session; + +our @ISA = qw(Exporter); +our @EXPORT = qw(&www_setScratch &www_deleteScratch); + +#------------------------------------------------------------------- +sub www_deleteScratch { + WebGUI::Session::deleteScratch("www_".$session{user}{scratchName}); +} + +#------------------------------------------------------------------- +sub www_setScratch { + WebGUI::Session::setScratch("www_".$session{form}{scratchName},$session{form}{scratchValue}); +} + + +1; diff --git a/lib/WebGUI/Session.pm b/lib/WebGUI/Session.pm index 6f65ab0a6..5c97845b7 100644 --- a/lib/WebGUI/Session.pm +++ b/lib/WebGUI/Session.pm @@ -237,6 +237,29 @@ sub convertVisitorToUser { #------------------------------------------------------------------- +=head2 deleteScratch ( name ) + +Deletes a scratch variable. + +=over + +=item name + +The name of the scratch variable. + +=back + +=cut + +sub deleteScratch { + my ($name) = @_; + return "" unless ($session{var}{sessionId} ne "" && $name ne ""); + WebGUI::SQL->write("delete from userSessionScratch where sessionId=".quote($session{var}{sessionId})." and name=".quote($name)); + $session{scratch}{$name} = ""; +} + +#------------------------------------------------------------------- + =head2 end ( sessionId ) Removes the specified user session from memory and database. @@ -550,8 +573,7 @@ sub setScratch { my ($name, $value) = @_; return "" unless ($session{var}{sessionId} ne "" && $name ne "" && defined $value); if ($value eq "-delete-" || (defined $value && $value eq "")) { - WebGUI::SQL->write("delete from userSessionScratch where sessionId=".quote($session{var}{sessionId}) - ." and name=".quote($name)); + deleteScratch($name); $value = ""; } elsif ($session{scratch}{$name} ne "") { WebGUI::SQL->write("update userSessionScratch set value=".quote($value)."