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

140 lines
3.7 KiB
PHP

<?php
// File name: request.inc.php
// Description: PHP subroutine to handle the user requests
// Date: 2006-04-03
// Author: imacat <imacat@pristine.com.tw>
// Copyright: Copyright (C) 2006-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/chkfunc.inc.php";
require_once "monica/formfunc.inc.php";
require_once "monica/gettext.inc.php";
require_once "monica/guest.inc.php";
require_once "monica/sql.inc.php";
// Settings
if (!defined("USER_REQ_EXPIRE")) {
define("USER_REQ_EXPIRE", 72);
}
// fetch_curreq: Fetch the current request
function fetch_curreq()
{
// The error status
static $error = null;
// Fetched before
if (array_key_exists("REQUEST", $GLOBALS)) {
return $error;
}
// Obtain the current form
$FORM =& curform();
// No item specified
if (!array_key_exists("req", $FORM)) {
$error = array("msg"=>NC_("Please specify the request."),
"isform"=>false);
return $error;
}
$sn =& $FORM["req"];
// Find the record
if (!check_sn($sn)) {
$error = array("msg"=>NC_("Invalid request S/N: %s."),
"margs"=>array($FORM["req"]),
"isform"=>false);
return $error;
}
$cols = array();
$select = "SELECT * FROM userreq WHERE sn=$sn;\n";
$result = sql_query($select);
if (sql_num_rows($result) != 1) {
$error = array("msg"=>NC_("Invalid request S/N: %s."),
"margs"=>array($FORM["req"]),
"isform"=>false);
return $error;
}
$row = sql_fetch_assoc($result);
// Obtain the request arguments
$row["_args"] = $row["args"];
parse_str($row["_args"], $row["args"]);
// Obtain the user information
if (!is_null($row["usr"])) {
$row["_usr"] = $row["usr"];
$select = "SELECT * FROM users WHERE sn=" . $row["_usr"] . ";\n";
$result = sql_query($select);
$row["usr"] = sql_fetch_assoc($result);
}
// Local extension
if (function_exists("fetch_curreq_script")) {
$row = fetch_curreq_script($row);
}
$GLOBALS["REQUEST"] = $row;
is_form(true);
if ( !array_key_exists("step", curform())
&& array_key_exists("step", $row["args"])) {
form_step($row["args"]["step"]);
}
// OK
return null;
}
// is_userreq: If a request is requested
function is_userreq($isreq = null)
{
// Cache the result
static $cache;
// Use "isreq" to alter the cache
if (!is_null($isreq)) {
// A status is provided
if (is_array($isreq)) {
if (array_key_exists("isreq", $isreq)) {
$cache = $isreq["isreq"];
settype($cache, "boolean");
}
// A scalar value
} else {
$cache = $isreq;
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("req", $FORM)) {
$cache = false;
return $cache;
}
// "isreq" was specified
$status =& retrieve_status();
if (is_array($status) && array_key_exists("isreq", $status)) {
$cache = $status["isreq"];
return $cache;
}
// Yes, we have a request here
$cache = true;
return $cache;
}
// expire_userreq: Expire user requests
function expire_userreq()
{
$delete = "DELETE FROM userreq"
. " WHERE expire IS NOT NULL"
. " AND expire<now();\n";
gsql_query($delete);
return;
}
?>