Files
selima-perl/lib/php/monica/formfunc.inc.php
2026-03-10 21:31:43 +08:00

156 lines
3.7 KiB
PHP

<?php
// File name: formfunc.inc.php
// Description: PHP subroutine to manuplate forms
// Date: 2002-11-11
// Author: imacat <imacat@pristine.com.tw>
// Copyright: Copyright (C) 2002-2007 Pristine Communications
// Set the include path
if (!defined("INCPATH_SET")) {
require_once dirname(__FILE__) . "/incpath.inc.php";
}
// Referenced subroutines
require_once "monica/callform.inc.php";
require_once "monica/cgiemu.inc.php";
// get_or_post: whether the form data came from $_GET or $_POST
function &get_or_post()
{
if ($_SERVER["REQUEST_METHOD"] == "POST") {
return $_POST;
} else {
return $_GET;
}
}
// curform: Obtain the current form, either from the sent form or
// from the suspended form
function &curform()
{
$FORM =& get_or_post();
if ( defined("USE_SUSPEND_FORM") && USE_SUSPEND_FORM &&
array_key_exists("formid", $FORM)) {
$FORM =& retrieve_form();
}
return $FORM;
}
// is_form: If a form is requested
function is_form($isform = null)
{
// Cache the result
static $cache;
// Use "isform" to alter the cache
if (!is_null($isform)) {
// A status is provided
if (is_array($isform)) {
if (array_key_exists("isform", $isform)) {
$cache = $isform["isform"];
settype($cache, "boolean");
}
// A scalar value
} else {
$cache = $isform;
settype($cache, "boolean");
}
}
// Return the cache
if (isset($cache)) {
return $cache;
}
// Obtain the current form
$FORM =& curform();
// No valid form infomation
if (!array_key_exists("form", $FORM)) {
$cache = false;
return $cache;
}
// "isform" was specified
$status =& retrieve_status();
if (is_array($status) && array_key_exists("isform", $status)) {
$cache = $status["isform"];
return $cache;
}
// Yes, we need a form here
$cache = true;
return $cache;
}
// form_type: Return the form name (new, cur, del, listpref... etc)
function form_type($type = null)
{
// Cache the result
static $cache;
// Set the form type
if (!is_null($type)) {
$cache = $type;
}
// Return the cache
if (isset($cache)) {
return $cache;
}
// Obtain the current form
$FORM =& curform();
// Form type specified in arguments
if (array_key_exists("form", $FORM)) {
$cache = $FORM["form"];
// No form source is found
} else {
$cache = null;
}
return $cache;
}
// form_step: Return the form step number
function form_step($step = null)
{
// Cache the result
static $cache;
// Set the form step
if (!is_null($step)) {
$cache = $step;
}
// Return the cache
if (isset($cache)) {
return $cache;
}
// Obtain the current form
$FORM =& curform();
// Form type specified in arguments
if (array_key_exists("step", $FORM)) {
$cache = $FORM["step"];
// No form source is found
} else {
$cache = 1;
}
// Steps that are not sane are considered as 1
if (!is_int($cache)) {
// Text strings may be convertable
if (is_string($cache)) {
if (preg_match("/^\d+$/", $cache)) {
// Convert its type to integer
settype($cache, "integer");
} else {
$cache = 1;
}
// Others are not convertable
} else {
$cache = 1;
}
}
// "nextstep" specified
$status =& retrieve_status();
if ( is_array($status)
&& array_key_exists("nextstep", $status)
&& $status["nextstep"]) {
$cache++;
}
return $cache;
}
?>