first run on new asset system

This commit is contained in:
JT Smith 2004-12-17 05:41:22 +00:00
parent f7dd3b0577
commit 382ced9ffe
27 changed files with 785 additions and 374 deletions

View file

@ -15,6 +15,7 @@ our $STATUS = "gamma";
use strict qw(vars subs);
use Tie::CPHash;
use WebGUI::Affiliate;
use WebGUI::Asset;
use WebGUI::Cache;
use WebGUI::ErrorHandler;
use WebGUI::Grouping;
@ -29,55 +30,6 @@ use WebGUI::URL;
use WebGUI::PassiveProfiling;
#-------------------------------------------------------------------
sub _generatePage {
my $content = shift;
if ($session{form}{op} eq "" && $session{setting}{trackPageStatistics} && $session{form}{wid} ne "new") {
WebGUI::SQL->write("insert into pageStatistics (dateStamp, userId, username, ipAddress, userAgent, referer,
pageId, pageTitle, wobjectId, wobjectFunction) values (".time().",".quote($session{user}{userId})
.",".quote($session{user}{username}).",
".quote($session{env}{REMOTE_ADDR}).", ".quote($session{env}{HTTP_USER_AGENT}).",
".quote($session{env}{HTTP_REFERER}).", ".quote($session{page}{pageId}).",
".quote($session{page}{title}).", ".quote($session{form}{wid}).", ".quote($session{form}{func}).")");
}
my $output = WebGUI::Style::process($content);
if ($session{setting}{showDebug} || ($session{form}{debug}==1 && WebGUI::Grouping::isInGroup(3))) {
$output .= WebGUI::ErrorHandler::showDebug();
}
return $output;
}
#-------------------------------------------------------------------
sub _getPageInfo {
my $sql = "select * from page where ";
my $url = shift || $ENV{PATH_INFO};
$url = lc($url);
$url =~ s/\/$//;
$url =~ s/^\///;
$url =~ s/\'//;
$url =~ s/\"//;
my $pageData;
if ($url ne "") {
$pageData = WebGUI::SQL->quickHashRef($sql."urlizedTitle=".quote($url));
if ($pageData->{subroutine} eq "") {
if($ENV{"MOD_PERL"}) {
my $r = Apache->request;
if(defined($r)) {
$r->custom_response(404, $url);
$r->status(404);
}
} else {
$session{http}{status} = '404';
}
$pageData = WebGUI::SQL->quickHashRef($sql."pageId=".quote($session{setting}{notFoundPage}));
}
} else {
$pageData = WebGUI::SQL->quickHashRef($sql."pageId=".quote($session{setting}{defaultPage}));
}
$session{page} = $pageData;
return $pageData;
}
#-------------------------------------------------------------------
sub _processOperations {
my ($cmd, $output);
@ -105,56 +57,32 @@ sub _processOperations {
sub page {
my $webguiRoot = shift;
my $configFile = shift;
my $useExistingSession = shift; # used for static page generation functions where you may generate more than one page at a time.
my $pageUrl = shift;
my $useExistingSession = shift; # used for static page generation functions where you may generate more than one asset at a time.
my $assetUrl = shift;
my $fastcgi = shift;
WebGUI::Session::open($webguiRoot,$configFile,$fastcgi) unless ($useExistingSession);
my $page = _getPageInfo($pageUrl);
my $output = _processOperations();
if ($output ne "") {
$output = _generatePage($output);
} else {
my $useCache = (
$session{form}{op} eq "" &&
$session{form}{func} eq "" &&
(
( $session{page}{cacheTimeout} > 10 && $session{user}{userId} !=1) ||
( $session{page}{cacheTimeoutVisitor} > 10 && $session{user}{userId} == 1)
) &&
not $session{var}{adminOn}
);
my $cache;
if ($useCache) {
$cache = WebGUI::Cache->new("page_".$session{page}{pageId}."_".$session{user}{userId});
$output = $cache->get;
if ($output eq "") {
my $asset = WebGUI::Asset->newByUrl($assetUrl);
my $method = "view";
if (exists $session{form}{func}) {
$method = $session{form}{func};
}
unless ($output) {
my $cmd = "use ".$page->{subroutinePackage};
eval ($cmd);
WebGUI::ErrorHandler::fatalError("Couldn't compile page package: ".$page->{subroutinePackage}.". Root cause: ".$@) if ($@);
my $params = eval $page->{subroutineParams};
WebGUI::ErrorHandler::fatalError("Couldn't interpret page params: ".$page->{subroutineParams}.". Root cause: ".$@) if ($@);
$cmd = $page->{subroutinePackage}."::".$page->{subroutine};
$output = eval{&$cmd($params)};
WebGUI::ErrorHandler::fatalError("Couldn't execute page command: ".$page->{subroutine}.". Root cause: ".$@) if ($@);
if (WebGUI::HTTP::getMimeType() eq "text/html") {
$output = _generatePage($output);
}
my $ttl;
if ($session{user}{userId} == 1) {
$ttl = $session{page}{cacheTimeoutVisitor};
} else {
$ttl = $session{page}{cacheTimeout};
}
$cache->set($output, $ttl) if ($useCache && !WebGUI::HTTP::isRedirect());
WebGUI::PassiveProfiling::addPage(); # add wobjects on page to passive profile log
$method = "www_".$method;
$output = $asset->$method();
if ($output eq "" && $method ne "view") {
$output = $asset->www_view;
}
WebGUI::ErrorHandler::fatalError("Couldn't call method ".$method." on asset for ".$asset->get("url")." (".$asset->getId."). Root cause: ".$!) if ($!);
}
WebGUI::Affiliate::grabReferral(); # process affilliate tracking request
if (WebGUI::HTTP::isRedirect() && !$useExistingSession) {
$output = WebGUI::HTTP::getHeader();
} else {
$output = WebGUI::HTTP::getHeader().$output;
if ($session{setting}{showDebug} || ($session{form}{debug}==1 && WebGUI::Grouping::isInGroup(3))) {
$output .= WebGUI::ErrorHandler::showDebug();
}
}
# This allows an operation or wobject to write directly to the browser.
$output = undef if ($session{page}{empty});