.
***********************************************************************/
/*
Retrieve value of POST variable(s).
For $name passed as array $dflt is not used,
default values can be passed as values with non-numeric keys instead.
If some field have user formatted numeric value, pass float default value to
convert automatically to POSIX.
*/
function get_post($name, $dflt='')
{
if (is_array($name)) {
$ret = array();
foreach($name as $key => $dflt)
if (!is_numeric($key)) {
$ret[$key] = is_float($dflt) ? input_num($key, $dflt) : get_post($key, $dflt);
} else {
$ret[$dflt] = get_post($dflt, null);
}
return $ret;
} else
return is_float($dflt) ? input_num($name, $dflt) :
((!isset($_POST[$name]) /*|| $_POST[$name] === ''*/) ? $dflt : $_POST[$name]);
}
//---------------------------------------------------------------------------------
$form_nested = -1;
function start_form($multi=false, $dummy=false, $action="", $name="")
{
// $dummy - leaved for compatibility with 2.0 API
global $form_nested;
if (++$form_nested) return;
if ($name != "")
$name = "name='$name'";
if ($action == "")
$action = $_SERVER['PHP_SELF'];
if ($multi)
echo "
\n";
$Ajax->activate('_token');
$Ajax->activate('_confirmed');
}
function check_csrf_token()
{
if ($_SESSION['csrf_token'] != @$_POST['_token'])
{
display_error(_("Request from outside of this page is forbidden."));
error_log(_("CSRF attack detected from: ").@$_SERVER['HTTP_HOST'].' ('.@$_SERVER['HTTP_REFERER'].')');
return false;
}
return true;
}
function start_table($class=false, $extra="", $padding='2', $spacing='0')
{
echo "
\n";
}
function end_table($breaks=0)
{
echo "
\n";
output_hidden();
if ($breaks)
br($breaks);
}
function start_outer_table($class=false, $extra="", $padding='2', $spacing='0', $br=false)
{
if ($br)
br();
start_table($class, $extra, $padding, $spacing);
echo "
";
}
function meta_forward($forward_to, $params="", $timeout=0, $return=false)
{
global $Ajax;
echo "\n";
echo "
" . _("You should automatically be forwarded.");
echo " " . _("If this does not happen") . " " . "" . _("click here") . " " . _("to continue") . ".
\n";
if ($params !='') $params = '?'.$params;
$Ajax->redirect($forward_to.$params);
if (!$return) exit;
}
//-----------------------------------------------------------------------------------
// Find and replace hotkey marker.
// if $clean == true marker is removed and clean label is returned
// (for use in wiki help system), otherwise result is array of label
// with underlined hotkey letter and access property string.
//
function access_string($label, $clean=false)
{
$access = '';
$slices = array();
if (preg_match('/(.*)&([a-zA-Z0-9])(.*)/', $label, $slices))
{
$label = $clean ? $slices[1].$slices[2].$slices[3] :
$slices[1].''.$slices[2].''.$slices[3];
$access = " accesskey='".strtoupper($slices[2])."'";
}
$label = str_replace( '&&', '&', $label);
return $clean ? $label : array($label, $access);
}
function hyperlink_back($center=true, $no_menu=true, $type_no=0, $trans_no=0, $final=false)
{
global $path_to_root;
if ($center)
echo "
\n";
}
function table_section_title($msg, $colspan=2)
{
echo "
$msg
\n";
}
function table_header($labels, $params='')
{
start_row();
foreach ($labels as $label)
labelheader_cell($label, $params);
end_row();
}
//-----------------------------------------------------------------------------------
function start_row($param="")
{
if ($param != "")
echo "
\n";
else
echo "
\n";
}
function end_row()
{
echo "
\n";
}
function br($num=1)
{
for ($i = 0; $i < $num; $i++)
echo " ";
}
$ajax_divs = array();
function div_start($id='', $trigger=null, $non_ajax=false)
{
global $ajax_divs;
if ($non_ajax) { // div for non-ajax elements
array_push($ajax_divs, array($id, null));
echo "