From 8b20bebc32ca984d17e978b5fb814c3c8d0801ac Mon Sep 17 00:00:00 2001 From: JT Smith Date: Fri, 3 Nov 2006 21:29:57 +0000 Subject: [PATCH] merging 7.1.4 changes --- docs/changelog/7.x.x.txt | 2 ++ lib/WebGUI.pm | 48 +++++++++++++++++++------------------- lib/WebGUI/Asset.pm | 14 +++++------ lib/WebGUI/Session/Http.pm | 8 +++++-- 4 files changed, 38 insertions(+), 34 deletions(-) diff --git a/docs/changelog/7.x.x.txt b/docs/changelog/7.x.x.txt index cec973988..c29fc4ca9 100644 --- a/docs/changelog/7.x.x.txt +++ b/docs/changelog/7.x.x.txt @@ -31,6 +31,8 @@ - fix: WebGUI::Text::splitCsv no longer removes trailing empty fields - fix: Product add-to-group would always try to add a user to a group - Made many minor changes recommended by Perl::Critic. + - Made many minor code efficiency changes. + - fix: Two cookies and incorrect Last-Modified date in HTTP header 7.1.3 - fix: SQLReport now returns error if can't find DatabaseLink diff --git a/lib/WebGUI.pm b/lib/WebGUI.pm index b086b3447..77e1687ff 100644 --- a/lib/WebGUI.pm +++ b/lib/WebGUI.pm @@ -93,42 +93,42 @@ sub contentHandler { ### Open new or existing user session based on user-agent's cookie. my $request = Apache2::Request->new($r); my $session = WebGUI::Session->open($s->dir_config('WebguiRoot'),$configFile, $request, $s); + my ($env, $http, $setting, $output, $errorHandler, $config) = $session->quick(qw(env http setting output errorHandler config)); if ($session->env->get("HTTP_X_MOZ") eq "prefetch") { # browser prefetch is a bad thing - $session->http->setStatus("403","We don't allow prefetch, because it increases bandwidth, hurts stats, and can break web sites."); - $session->http->sendHeader; - } elsif ($session->setting->get("specialState") eq "upgrading") { + $http->setStatus("403","We don't allow prefetch, because it increases bandwidth, hurts stats, and can break web sites."); + $http->sendHeader; + } elsif ($setting->get("specialState") eq "upgrading") { upgrading($session); } else { - my $output = processOperations($session); - if ($output ne "") { + my $out = processOperations($session); + if ($out ne "") { # do nothing because we have operation output to display - $output = undef if ($output eq "chunked"); - } elsif ($session->setting->get("specialState") eq "init") { - $output = setup($session); - } elsif ($session->errorHandler->canShowPerformanceIndicators) { + $out = undef if ($out eq "chunked"); + } elsif ($setting->get("specialState") eq "init") { + $out = setup($session); + } elsif ($errorHandler->canShowPerformanceIndicators) { my $t = [Time::HiRes::gettimeofday()]; - $output = page($session); + $out = page($session); $t = Time::HiRes::tv_interval($t) ; - if ($output =~ /<\/title>/) { - $output =~ s/<\/title>/ : ${t} seconds<\/title>/i; + if ($out =~ /<\/title>/) { + $out =~ s/<\/title>/ : ${t} seconds<\/title>/i; } else { # Kludge. - my $mimeType = $session->http->getMimeType(); + my $mimeType = $http->getMimeType(); if ($mimeType eq 'text/css') { - $session->output->print("\n/* Page generated in $t seconds. */\n"); + $output->print("\n/* Page generated in $t seconds. */\n"); } elsif ($mimeType eq 'text/html') { - $session->output->print("\nPage generated in $t seconds.\n"); + $output->print("\nPage generated in $t seconds.\n"); } else { # Don't apply to content when we don't know how # to modify it semi-safely. } } } else { - $output = page($session); + $out = page($session); } - $session->http->setCookie($session->config->getCookieName,$session->var->getId, $session->config->getCookieTTL, $session->config->get("cookieDomain")) unless $session->var->getId eq $session->http->getCookies->{$session->config->getCookieName}; - my $filename = $session->http->getStreamedFile(); - if ((defined $filename) && ($session->config->get("enableStreamingUploads") eq "1")) { + my $filename = $http->getStreamedFile(); + if ((defined $filename) && ($config->get("enableStreamingUploads") eq "1")) { my $ct = guess_media_type($filename); my $oldContentType = $r->content_type($ct); if ($r->sendfile($filename) ) { @@ -137,11 +137,11 @@ sub contentHandler { $r->content_type($oldContentType); } } - $session->http->sendHeader(); - unless ($session->http->isRedirect()) { - $session->output->print($output); - if ($session->errorHandler->canShowDebug()) { - $session->output->print($session->errorHandler->showDebug(),1); + $http->sendHeader(); + unless ($http->isRedirect()) { + $output->print($out); + if ($errorHandler->canShowDebug()) { + $output->print($errorHandler->showDebug(),1); } } WebGUI::Affiliate::grabReferral($session); # process affiliate tracking request diff --git a/lib/WebGUI/Asset.pm b/lib/WebGUI/Asset.pm index a8a9a057c..c15a21e02 100644 --- a/lib/WebGUI/Asset.pm +++ b/lib/WebGUI/Asset.pm @@ -182,22 +182,20 @@ Returns error messages if a user can't view due to publishing problems, otherwis sub checkView { my $self = shift; return $self->session->privilege->noAccess() unless $self->canView; - if ($self->session->var->isAdminOn && $self->get("state") =~ /^trash/) { # show em trash - $self->session->http->setRedirect($self->getUrl("func=manageTrash")); + my ($var, $http) = $self->session->quick(qw(var http)); + if ($var->isAdminOn && $self->get("state") =~ /^trash/) { # show em trash + $http->setRedirect($self->getUrl("func=manageTrash")); return "redirect"; - } elsif ($self->session->var->isAdminOn && $self->get("state") =~ /^clipboard/) { # show em clipboard - $self->session->http->setRedirect($self->getUrl("func=manageClipboard")); + } elsif ($var->isAdminOn && $self->get("state") =~ /^clipboard/) { # show em clipboard + $http->setRedirect($self->getUrl("func=manageClipboard")); return "redirect"; } elsif ($self->get("state") ne "published" && $self->get("state") ne "archived") { # tell em it doesn't exist anymore - $self->session->http->setStatus("410"); + $http->setStatus("410"); my $notFound = WebGUI::Asset->getNotFound($self->session); $self->session->asset($notFound); return $notFound->www_view; } $self->logView(); - # must find a way to do this next line better - my $cookieName = $self->session->config->getCookieName; - $self->session->http->setCookie($cookieName,$self->session->var->getId, $self->session->config->getCookieTTL, $self->session->config->get("cookieDomain")) unless $self->session->var->getId eq $self->session->http->getCookies->{$cookieName}; return undef; } diff --git a/lib/WebGUI/Session/Http.pm b/lib/WebGUI/Session/Http.pm index 148540595..3247aa777 100644 --- a/lib/WebGUI/Session/Http.pm +++ b/lib/WebGUI/Session/Http.pm @@ -249,9 +249,13 @@ sub sendHeader { return undef if ($self->{_http}{noHeader}); return $self->_sendMinimalHeader if $self->session->dbNotAvailable; - my ($request, $datetime) = $self->session->quick(qw(request datetime)); + my ($request, $datetime, $config, $var) = $self->session->quick(qw(request datetime config var)); return undef unless $request; - my $userId = $self->session->var->get("userId"); + my $userId = $var->get("userId"); + + # send webgui session cookie + my $cookieName = $config->getCookieName; + $self->setCookie($cookieName,$var->getId, $config->getCookieTTL, $config->get("cookieDomain")) unless $var->getId eq $self->getCookies->{$cookieName}; $self->setNoHeader(1); my %params;