#!/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;