first run on new asset system
This commit is contained in:
parent
f7dd3b0577
commit
382ced9ffe
27 changed files with 785 additions and 374 deletions
104
lib/WebGUI.pm
104
lib/WebGUI.pm
|
|
@ -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});
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue