244 lines
7.4 KiB
Perl
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;
|