Files
selima-perl/lib/perl5/Selima/DataVars.pm
2026-03-10 21:31:43 +08:00

244 lines
7.4 KiB
Perl

# 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 <imacat@mail.imacat.idv.tw>
# 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;