#!/usr/bin/perl
use strict;
use warnings;
use CGI;
use CGI::Carp qw(fatalsToBrowser);
use DBI;
use vars qw($form);
#####################################################
#Import our custom modules used in the main site #
#####################################################
BEGIN {push (@INC,"modules/site");
push (@INC,"modules/custom");
}
use databaseFunctions;
use moduleSecurity;
use forms;
use template;
########################
#Connect to Database #
########################
our $db = new databaseFunctions; #declare a new database object
$db->connect(); #Connect to the database
########################
#Do Form Stuff #
########################
our $form = new CGI;
#We need to find out what URL the user is calling and see if its in our
#Portal List
my $queryString = "SELECT portal from portalUrls where url like '\%$ENV{'HTTP_HOST'}'";
my $dbSelect = $db->query($queryString);
print "Content-type: text/plain\n\n"; #This will be removed, and other header stuff will be added to each module itself
if($dbSelect->{0}{portal} ==0) {
print "No Document Found";
}
else {
#The Portal was found, now to see if its active
$queryString = "SELECT active,defaultModule from portalSettings where id =" . $dbSelect->{0}{portal};
$dbSelect = $db->query($queryString);
if($dbSelect->{0}{active} eq "n") {
#This is where we would normally print a page saying the portal is temporarily unavailable
#But for now, this will do
print "At this time the site you have requested is unavailable. Please check back later";
}
else {
#The Portal is Active. That means defaultModule is available
#We need to check if this module is allowed to be used without authentication
my $secCheck = new moduleSecurity();
my $secReturn = $secCheck->checkModule($dbSelect->{0}{defaultModule});
my $templateFile = "site/main";
my $tpl = new template;
my $returnedtpl = $tpl->parse($templateFile,"print");
if($secReturn eq "y") {
print "Security Required";
}
else {
#my $module = $dbSelect->{0}{defaultModule};
require "$dbSelect->{0}{defaultModule}.pm";
my $returned = $dbSelect->{0}{defaultModule}->mainModule;
print $returned;
}
}
}
####
my $templateFile = "site/main";
my $tpl = new template;
my $returnedtpl = $tpl->parse($templateFile,"print");
##
##
Some ****
<%include variable="var1"%>
<%include module="mod2"%>
Some More ****
<%include template="site/inctemp"%>
Some Random ****
<%include menu="menu1"%>
##
##
package template;
use DBI;
use strict;
use warnings;
use variables;
BEGIN{ push(@INC,"modules/site");
push(@INC,"modules/custom");
}
sub new {
my ($class) = @_;
my $self = {_template => undef, _method => undef, _filehandle=>undef};
bless $self,$class;
return $self;
}
sub parse {
#use String::Random;
#my $ran = new String::Random;
my $returnTPL= "";
my ($self,$template,$method) = @_;
$self->{_template} = $template if defined($template);
$self->{_method} = $method if defined($method);
#my $filehandle = $ran->randregex('\w\w\w\');
$self->{_filehandle} = "a121";
if(!(-e "templates/$self->{_template}.tpl")) {
#template does not exists;
print "Error... No such template exists";
}
else {
#template does exist
open(tpl,"templates/$self->{_template}.tpl");
my $x=0;
while() {
if($_ =~ /\<\%include/) {
#We found a template request, now we need to find what it is
if($_ =~ /\<\%include\s?(\w.*)\=[\"\']([a-zA-Z0-9\/].*)[\"\']\%\>/) {
my $type = $1;
my $val = $2;
if($type =~ /variable/i) {
my $vars = variables->get();
$_ =~ s/<\%include\s?(\w.*)\=[\"\']([a-zA-Z0-9].*)[\"\']\%\>/$vars->{$val}/;
}
if($type =~ /template/i) {
#create a new template instance so this template
#doesn't get deleted
my $innertpl = new template;
my $_innertpl = $innertpl->parse($val,"return");
print $_innertpl;
#$_ =~ s/<\%include\s?(\w.*)\=[\"\']([a-zA-Z0-9\/].*)[\"\']\%\>/$_innertpl/;
}
if($type =~ /menu/i) {
#query the database for the menu in question
#Butcher, and fix
my $menu = "The Menu Items";
$_ =~ s/<\%include\s?(\w.*)\=[\"\']([a-zA-Z0-9].*)[\"\']\%\>/$menu/;
}
if($type =~ /module/i) {
#Activate the modules include function
require "$val.pm";
my $returnedData = $val->includeModule();
$_ =~ s/<\%include\s?(\w.*)\=[\"\']([a-zA-Z0-9].*)[\"\']\%\>/$returnedData/;
}
}
}
if($self->{_method} eq "print") {
print $_;
}
if($self->{_method} eq "return") {
$returnTPL = join("",$returnTPL,$_);
#print $returnTPL;
}
}
close(tpl);
}
if($self->{_method} eq "return") {
return $returnTPL;
}
}
1;