more session related bug fixes

This commit is contained in:
JT Smith 2006-01-14 21:54:44 +00:00
parent b1ab07d24f
commit 72956a255e
2 changed files with 50 additions and 40 deletions

View file

@ -15,14 +15,11 @@ package WebGUI::SQL;
=cut
use DBI;
use Exporter;
use strict;
use Tie::IxHash;
use WebGUI::SQL::Resultset;
use WebGUI::Utility;
our @ISA = qw(Exporter);
our @EXPORT = qw(&quote &getNextId &quoteAndJoin);
=head1 NAME
Package WebGUI::SQL
@ -35,7 +32,7 @@ Package for interfacing with SQL databases. This package implements Perl DBI fun
use WebGUI::SQL;
$db = $self->session->db->connect($dsn, $user, $pass, $session);
$db = WebGUI::SQL->connect($session,$dsn, $user, $pass);
$db->disconnect;
$sth = $db->prepare($sql);
@ -61,8 +58,8 @@ Package for interfacing with SQL databases. This package implements Perl DBI fun
$dbh = $db->getSlave;
$id = $db->getNextId("someId");
$string = $db->$self->session->db->quote($string);
$string = $db->$self->session->db->quoteAndJoin(\@array);
$string = $db->quote($string);
$string = $db->quoteAndJoin(\@array);
=head1 METHODS
@ -270,7 +267,7 @@ The value to search for in the key column.
sub deleteRow {
my ($self, $table, $key, $keyValue) = @_;
$self->session->db->write("delete from $table where ".$key."=".$self->$self->session->db->quote($keyValue));
$self->write("delete from $table where ".$key."=".$self->quote($keyValue));
}
@ -379,7 +376,7 @@ The value to search for in the key column.
sub getRow {
my ($self, $table, $key, $keyValue) = @_;
my $row = $self->session->db->quickHashRef("select * from $table where ".$key."=".$self->$self->session->db->quote($keyValue));
my $row = $self->quickHashRef("select * from $table where ".$key."=".$self->quote($keyValue));
return $row;
}
@ -546,14 +543,14 @@ Any scalar variable that needs to be escaped to be inserted into the database.
sub quote {
my $self = shift;
my $value = shift;
return $self->dbh->$self->session->db->quote($value);
return $self->dbh->quote($value);
}
#-------------------------------------------------------------------
=head2 quoteAndJoin ( arrayRef )
Returns a comma seperated string quoted and ready for insert/select into/from the database. This is typically used for a statement like "select * from someTable where field in (".$self->session->db->quoteAndJoin(\@strings).")".
Returns a comma seperated string quoted and ready for insert/select into/from the database. This is typically used for a statement like "select * from someTable where field in (".$db->quoteAndJoin(\@strings).")".
B<NOTE:> This is not a regular method, but is an exported subroutine.
@ -568,7 +565,7 @@ sub quoteAndJoin {
my $arrayRef = shift;
my @newArray;
foreach my $value (@$arrayRef) {
push(@newArray,$self->$self->session->db->quote($value));
push(@newArray,$self->quote($value));
}
return join(",",@newArray);
}
@ -663,7 +660,7 @@ sub setRow {
my (@pairs);
foreach my $key (keys %{$data}) {
unless ($key eq $keyColumn) {
push(@pairs, $key.'='.$self->$self->session->db->quote($data->{$key}));
push(@pairs, $key.'='.$self->quote($data->{$key}));
}
}
if ($pairs[0] ne "") {

View file

@ -73,7 +73,7 @@ sub audit {
my $self = shift;
my $message = shift;
$Log::Log4perl::caller_depth++;
$self->info($self->{_session}->user->username." (".$self->{_session}->user->userId.") ".$message);
$self->info($self->session->user->username." (".$self->session->user->userId.") ".$message);
$Log::Log4perl::caller_depth--;
}
@ -88,12 +88,12 @@ Returns true if the user meets the condition to see debugging information and de
sub canShowDebug {
my $self = shift;
return 0 unless ($self->{_session}->setting->get("showDebug"));
return 1 if ($self->{_session}->setting->get("debugIp") eq "");
my @ips = split(" ",$self->{_session}->setting->get("debugIp"));
return 0 unless ($self->session->setting->get("showDebug"));
return 1 if ($self->session->setting->get("debugIp") eq "");
my @ips = split(" ",$self->session->setting->get("debugIp"));
my $ok = 0;
foreach my $ip (@ips) {
if ($self->{_session}->env("REMOTE_ADDR") =~ /^$ip/) {
if ($self->session->env("REMOTE_ADDR") =~ /^$ip/) {
$ok = 1;
last;
}
@ -111,14 +111,14 @@ Returns true if the user meets the conditions to see performance indicators and
sub canShowPerformanceIndicators {
my $self = shift;
my $mask = $self->{_session}->setting->get("debugIp");
my $ip = $self->{_session}->env("REMOTE_ADDR");
my $mask = $self->session->setting->get("debugIp");
my $ip = $self->session->env("REMOTE_ADDR");
return (
(
$self->{_session}->setting->get("showPerformanceIndicators")
$self->session->setting->get("showPerformanceIndicators")
) && (
$ip =~ /^$mask/ ||
$self->{_session}->setting->get("debugIp") eq ""
$self->session->setting->get("debugIp") eq ""
)
);
}
@ -140,7 +140,7 @@ sub debug {
my $self = shift;
my $message = shift;
$self->getLogger->debug($message);
$self->{_session}->stow->set("debug_debug") = $self->{_session}->stow->get("debug_debug").$message."\n";
$self->session->stow->set("debug_debug", $self->session->stow->get("debug_debug").$message."\n");
}
@ -161,7 +161,7 @@ sub error {
my $message = shift;
$self->getLogger->error($message);
$self->getLogger->debug("Stack trace for ERROR ".$message."\n".$self->getStackTrace());
$self->{_session}->stow->set("debug_error", $self->{_session}->stow->get("debug_error").$message."\n");
$self->session->stow->set("debug_error", $self->session->stow->get("debug_error").$message."\n");
}
@ -176,25 +176,25 @@ Adds a FATAL type message to the log, outputs an error message to the user, and
sub fatal {
my $self = shift;
my $message = shift;
$self->{_session}->http->setStatus("500","Server Error");
Apache2::RequestUtil->request->content_type('text/html') if ($self->{_session}->request);
$self->session->http->setStatus("500","Server Error");
Apache2::RequestUtil->request->content_type('text/html') if ($self->session->request);
$self->getLogger->fatal($message);
$self->getLogger->debug("Stack trace for FATAL ".$message."\n".$self->getStackTrace());
print $self->{_session}->http->getHeader if ($self->{_session}->request);
print $self->session->http->getHeader if ($self->session->request);
unless ($self->canShowDebug()) {
#NOTE: You can't internationalize this because with some types of errors that would cause an infinite loop.
print "<h1>Problem With Request</h1>
We have encountered a problem with your request. Please use your back button and try again.
If this problem persists, please contact us with what you were trying to do and the time and date of the problem.";
print '<br />'.$self->{_session}->setting("companyName");
print '<br />'.$self->{_session}->setting("companyEmail");
print '<br />'.$self->{_session}->setting("companyURL");
print '<br />'.$self->session->setting("companyName");
print '<br />'.$self->session->setting("companyEmail");
print '<br />'.$self->session->setting("companyURL");
} else {
print "<h1>WebGUI Fatal Error</h1><p>Something unexpected happened that caused this system to fault.</p>\n";
print "<p>".$message."</p>\n";
print $self->showDebug();
}
$self->{_session}->close();
$self->session->close();
die $message;
}
@ -224,7 +224,7 @@ Returns a text message containing all of the session variables.
sub getSessionVars {
my $self = shift;
my $data;
while (my ($section, $hash) = each %{$self->{_session}}) {
while (my ($section, $hash) = each %{$self->session}) {
if (ref $hash eq 'HASH') {
while (my ($key, $value) = each %$hash) {
if (ref $value eq 'ARRAY') {
@ -285,7 +285,7 @@ sub info {
my $self = shift;
my $message = shift;
$self->getLogger->info($message);
$self->{_session}->stow->set("debug_info") = $self->{_session}->stow->get("debug_info").$message."\n";
$self->session->stow->set("debug_info") = $self->session->stow->get("debug_info").$message."\n";
}
#-------------------------------------------------------------------
@ -327,12 +327,25 @@ sub security {
my $self = shift;
my $message = shift;
$Log::Log4perl::caller_depth++;
$self->warn($self->{_session}->user->username." (".$self->{_session}->user->userId.") connecting from "
.$self->{_session}->env("REMOTE_ADDR")." attempted to ".$message);
$self->warn($self->session->user->username." (".$self->session->user->userId.") connecting from "
.$self->session->env("REMOTE_ADDR")." attempted to ".$message);
$log::Log4perl::caller_depth--;
}
#-------------------------------------------------------------------
=head2 session ( )
Returns a reference to the current session.
=cut
sub session {
my $self = shift;
return $self->{_session};
}
#-------------------------------------------------------------------
=head2 showDebug ( )
@ -343,16 +356,16 @@ Creates an HTML formatted string
sub showDebug {
my $self = shift;
my $text = $self->{_session}->stow->get('debug_error');
my $text = $self->session->stow->get('debug_error');
$text =~ s/\n/\<br \/\>\n/g;
my $output = 'beginDebug<br /><div style="background-color: #800000;color: #ffffff;">'.$text."</div>\n";
$text = $self->{_session}->stow->get('debug_warn');
$text = $self->session->stow->get('debug_warn');
$text =~ s/\n/\<br \/\>\n/g;
$output .= '<div style="background-color: #ffdddd;color: #000000;">'.$text."</div>\n";
$text = $self->{_session}->stow->get('debug_info');
$text = $self->session->stow->get('debug_info');
$text =~ s/\n/\<br \/\>\n/g;
$output .= '<div style="background-color: #ffffdd;color: #000000;">'.$text."</div>\n";
$text = $self->{_session}->stow->get('debug_debug');
$text = $self->session->stow->get('debug_debug');
$text =~ s/\n/\<br \/\>\n/g;
$output .= '<div style="background-color: #dddddd;color: #000000;">'.$text."</div>\n";
$text = $self->getSessionVars();
@ -379,7 +392,7 @@ sub warn {
my $self = shift;
my $message = shift;
$self->getLogger->warn($message);
$self->{_session}->stow->set("debug_warn", $self->{_session}->stow->get("debug_warn").$message."\n");
$self->session->stow->set("debug_warn", $self->session->stow->get("debug_warn").$message."\n");
}