Initial commit.

This commit is contained in:
2026-03-10 21:25:26 +08:00
commit 78739bf725
3089 changed files with 472990 additions and 0 deletions

View File

@@ -0,0 +1,115 @@
# Selima Website Content Management System
# FormFunc.pm: The form-related functions.
# Copyright (c) 2003-2018 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::FormFunc;
use 5.008;
use strict;
use warnings;
use base qw(Exporter);
use vars qw(@EXPORT @EXPORT_OK);
BEGIN {
@EXPORT = qw(get_or_post curform is_form form_type);
@EXPORT_OK = @EXPORT;
# Prototype declaration
sub get_or_post();
sub curform();
sub is_form(;$);
sub form_type();
}
use Selima::Cache qw(:formfunc);
use Selima::CallForm;
use Selima::DataVars qw(:env :input);
# get_or_post: whether we should look for form data from $GET or $POST
sub get_or_post() {
local ($_, %_);
return $FormFunc_get_or_post if defined $FormFunc_get_or_post;
$_ = $IS_MODPERL? ($IS_MP2?
Apache2::RequestUtil->request->method: Apache->request->method):
$ENV{"REQUEST_METHOD"};
return ($FormFunc_get_or_post = $_ eq "POST"? $POST: $GET);
}
# curform: Obtain the current form, either from the sent form or
# from the suspended form
sub curform() {
local ($_, %_);
return $FormFunc_curform if defined $FormFunc_curform;
$FormFunc_curform = get_or_post;
$FormFunc_curform = retrieve_form
if defined $FormFunc_curform->param("formid");
return $FormFunc_curform;
}
# is_form: whether this is a form
sub is_form(;$) {
local ($_, %_);
my ($isform, $FORM);
$isform = $_[0];
# Use "isform" to alter the cache
if (defined $isform) {
# A status is provided
if (ref $isform eq "HASH") {
$FormFunc_isform = $$isform{"isform"}? 1: 0
if exists $$isform{"isform"};
# A scalar value
} else {
$FormFunc_isform = $isform? 1: 0;
}
}
# Return the cache
return $FormFunc_isform if defined $FormFunc_isform;
# Obtain the current form
$FORM = curform;
# No valid form infomation
return ($FormFunc_isform = 0) if !defined $FORM->param("form");
# "isform" was specified
if ( defined $FORM->param("status")
&& exists ${$FORM->param("status")}{"isform"}) {
return ($FormFunc_isform = ${$FORM->param("status")}{"isform"}? 1: 0);
}
return ($FormFunc_isform = 1);
}
# form_type: Return the form name (new, cur, del, listpref... etc)
sub form_type() {
local ($_, %_);
# Return the cache
return $FormFunc_formtype if defined $FormFunc_formtype;
# Obtain the current form
$_ = curform;
# Form type specified in arguments
return ($FormFunc_formtype = $_->param("form"))
if defined $_->param("form");
# No form source is found
return ($FormFunc_formtype = -1);
}
return 1;