# Selima Website Content Management System # DataVars.pm: The core constants and variables. # Copyright (c) 2003-2020 imacat. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # Author: imacat # First written: 2003-03-24 package Selima::DataVars; use 5.008; use strict; use warnings; use base qw(Exporter); use vars qw(@EXPORT %EXPORT_TAGS @EXPORT_OK); BEGIN { @EXPORT = qw(); %EXPORT_TAGS = ( absuri => [qw(ABSURI_SKIP_FRAGMENT)], addcol => [qw(ADDCOL_INSERT ADDCOL_UPDATE ADDCOL_NOTIMESTAMP)], author => [qw($AUTHOR $COPYRIGHT)], db => [qw($DBH $DBI_TYPE DBI_NONE DBI_POSTGRESQL DBI_MYSQL DBI_FEATHER_VIEW %DBILOGIN)], dataman => [qw($THIS_TABLE %CURRENT %REQUEST %PREVIEW)], env => [qw($IS_CGI $IS_MODPERL $IS_MP2 $IS_PERLIS)], forms => [qw(%SCRIPTS FORM_THIS FORM_USERS FORM_GROUPS FORM_USERMEM FORM_GROUPMEM FORM_USERPREF FORM_SCPTPRIV FORM_PIC FORM_PAGES FORM_NEWS FORM_LINKCAT FORM_LINKS FORM_ACCTSUBJ FORM_ACCTTRX FORM_CAPTCHA)], groups => [qw(SU_GROUP ADMIN_GROUP ALLUSERS_GROUP GUEST_GROUP)], hostconf=> [qw($VIRTUAL_HOST $HTTPS_HOST $NOLOGIN)], input => [qw(%USER_INPUT $POST $GET $UPLOAD %COOKIES $SESSION $AUTHINFO)], l10n => [qw($DEFAULT_LANG @ALL_LINGUAS $LH $CLH $ALH $LOCALEDIR COMMON_DOMAIN COMMON_LOCALEDIR)], lastmod => [qw($LAST_MODIFIED)], libdir => [qw($SITE_LIBDIR COMMON_LIBDIR)], list => [qw($PAGEBAR_RANGE)], lninfo => [qw(LN_NAME LN_CHARSET LN_FILENAME LN_LOCALE LN_DATABASE LN_HTMLID LN_SPACE_BREAK LN_COUNTRY_FIRST LN_DESC LN_DESC_CURLC LN_DESC_SELFLC LN_SWITCH_TITLE)], mail => [qw(SMTP_HOST)], output => [qw($CONTENT_TYPE $NO_AUTO_OUTPUT %NEWCOOKIES %HTTP_HEADERS $PAGE_PARAM $ALT_PAGE_PARAM)], proctime=> [qw($LOGTIME $T_START)], rebuild => [qw(@REBUILD_TABLES %REBUILD_LABELS)], requri => [qw($DOC_ROOT $ROOT_DIFF $REQUEST_PATH $REQUEST_FILE $REQUEST_URI $REQUEST_FILEQS $REQUEST_SCHEME $REQUEST_HOST $REQUEST_HOSTPORT $REQUEST_HOSTPATH $REQUEST_FULLURI)], scptconf=> [qw($THIS_FILE $MAIN)], siteconf=> [qw($PACKAGE $WEBMASTER $SITENAME_ABBR)], user => [qw(%USERPREF)], ); @EXPORT_OK = qw(); my %seen; %seen = qw(); foreach my $tag (keys %EXPORT_TAGS) { push @EXPORT_OK, grep !$seen{$_}++, @{$EXPORT_TAGS{$tag}}; } $EXPORT_TAGS{"all"} = [@EXPORT_OK]; # Prototype declaration sub clear(); } use vars qw($AUTHOR $COPYRIGHT); use vars qw($DBH $DBI_TYPE %DBILOGIN); use vars qw($THIS_TABLE %CURRENT %REQUEST); use vars qw($IS_CGI $IS_MODPERL $IS_MP2 $IS_PERLIS); use vars qw(%SCRIPTS); use vars qw($VIRTUAL_HOST $HTTPS_HOST $NOLOGIN); use vars qw(%USER_INPUT $POST $GET $UPLOAD %COOKIES $SESSION $AUTHINFO); use vars qw($DEFAULT_LANG @ALL_LINGUAS $LH $CLH $ALH); use vars qw($LOCALEDIR); use vars qw($LAST_MODIFIED); use vars qw($SITE_LIBDIR); use vars qw($PAGEBAR_RANGE); use vars qw($CONTENT_TYPE $NO_AUTO_OUTPUT %NEWCOOKIES %HTTP_HEADERS); use vars qw($PAGE_PARAM $ALT_PAGE_PARAM); use vars qw($LOGTIME $T_START); use vars qw(@REBUILD_TABLES %REBUILD_LABELS); use vars qw($DOC_ROOT $ROOT_DIFF $REQUEST_PATH $REQUEST_FILE); use vars qw($REQUEST_URI $REQUEST_FILEQS $REQUEST_SCHEME $REQUEST_HOST); use vars qw($REQUEST_HOSTPORT $REQUEST_HOSTPATH $REQUEST_FULLURI); use vars qw($THIS_FILE $MAIN); use vars qw($PACKAGE $WEBMASTER $SITENAME_ABBR); use vars qw(%USERPREF); use constant ABSURI_SKIP_FRAGMENT => 1; use constant ADDCOL_INSERT => 0; use constant ADDCOL_UPDATE => 1; use constant ADDCOL_NOTIMESTAMP => 0; use constant DBI_NONE => ""; use constant DBI_POSTGRESQL => "PostgreSQL"; use constant DBI_MYSQL => "MySQL"; use constant DBI_FEATHER_VIEW => "view"; use constant FORM_THIS => 0; use constant FORM_USERS => 1; use constant FORM_GROUPS => 2; use constant FORM_USERPRIV => 3; use constant FORM_USERMEM => 4; use constant FORM_GROUPMEM => 5; use constant FORM_USERPREF => 6; use constant FORM_SCPTPRIV => 7; use constant FORM_PIC => 8; use constant FORM_PAGES => 9; use constant FORM_NEWS => 10; use constant FORM_LINKCAT => 11; use constant FORM_LINKS => 12; use constant FORM_ACCTSUBJ => 13; use constant FORM_ACCTTRX => 14; # The column name of the CAPTCHA # This is used to deceive the spambots use constant FORM_CAPTCHA => "lastname"; use constant SU_GROUP => "root"; use constant ADMIN_GROUP => "admin"; use constant ALLUSERS_GROUP => "users"; use constant GUEST_GROUP => "guests"; use constant COMMON_DOMAIN => "selima"; use constant COMMON_LOCALEDIR => $ENV{"DOCUMENT_ROOT"} . "/../../locale"; use constant COMMON_LIBDIR => $ENV{"DOCUMENT_ROOT"} . "/../../lib/perl5"; use constant LN_NAME => 0; use constant LN_CHARSET => 1; use constant LN_FILENAME => 2; use constant LN_LOCALE => 3; use constant LN_DATABASE => 4; use constant LN_HTMLID => 5; use constant LN_SPACE_BREAK => 6; #use constant LN_IGNORE_CASE => 7; use constant LN_COUNTRY_FIRST => 8; use constant LN_DESC => 9; use constant LN_DESC_CURLC => 10; use constant LN_DESC_SELFLC => 11; use constant LN_SWITCH_TITLE => 12; use constant SMTP_HOST => "localhost"; # Check the environment type in advance. These variables does not change # at all even under mod_perl. # GATEWAY_INTERFACE is not available yet when this script is loaded $IS_CGI = exists $ENV{"GATEWAY_INTERFACE"} || exists $ENV{"MOD_PERL"}; $IS_MODPERL = exists $ENV{"MOD_PERL"}; $IS_MP2 = exists $ENV{"MOD_PERL_API_VERSION"} && $ENV{"MOD_PERL_API_VERSION"} >= 2; $IS_PERLIS = exists $ENV{"PERLXS"} && $ENV{"PERLXS"} eq "PerlIS"; # clear: Clear the data variables sub clear() { local ($_, %_); # Reset all the data variables undef $AUTHINFO; undef $AUTHOR; undef $COPYRIGHT; undef $DBH; undef $DBI_TYPE; %DBILOGIN = qw(); undef $THIS_TABLE; %CURRENT = qw(); %REQUEST = qw(); %SCRIPTS = qw(); undef $VIRTUAL_HOST; undef $HTTPS_HOST; undef $NOLOGIN; %USER_INPUT = qw(); undef $POST; undef $GET; undef $UPLOAD; %COOKIES = qw(); undef $DEFAULT_LANG; @ALL_LINGUAS = qw(); undef $LH; undef $CLH; undef $ALH; undef $LOCALEDIR; undef $LAST_MODIFIED; undef $SITE_LIBDIR; undef $PAGEBAR_RANGE; undef $CONTENT_TYPE; undef $NO_AUTO_OUTPUT; %NEWCOOKIES = qw(); %HTTP_HEADERS = qw(); undef $PAGE_PARAM; undef $ALT_PAGE_PARAM; undef $LOGTIME; undef $T_START; @REBUILD_TABLES = qw(); %REBUILD_LABELS = qw(); undef $DOC_ROOT; undef $ROOT_DIFF; undef $REQUEST_PATH; undef $REQUEST_FILE; undef $REQUEST_URI; undef $REQUEST_FILEQS; undef $REQUEST_SCHEME; undef $REQUEST_HOST; undef $REQUEST_HOSTPORT; undef $REQUEST_HOSTPATH; undef $REQUEST_FULLURI; undef $SESSION; undef $THIS_FILE; undef $MAIN; undef $PACKAGE; undef $WEBMASTER; undef $SITENAME_ABBR; %USERPREF = qw(); return; } return 1;