function HandlePmForm($pagename, $auth = 'read') { global $PmFormPostPatterns, $PmFormTemplatesFmt, $MessagesFmt, $PmFormRedirectFunction; $post_opt = RequestArgs($_POST); $pat = array_keys($PmFormPostPatterns); $rep = array_values($PmFormPostPatterns); foreach ($post_opt as $k => $v) { $post_opt[$k] = preg_replace($pat, $rep, $v); } $target = @$post_opt['target']; $target_opt = PmFormConfig($pagename, $target); if (!$target_opt) { return HandleDispatch($pagename, 'browse', "\$[Unknown target] {$target}"); } ## Now, get the message template we will use $msgtmpl = RetrieveAuthSection($pagename, @$target_opt['fmt'], $PmFormTemplatesFmt); $opt = array_merge($post_opt, $target_opt); $template_opt = PmFormTemplateDefaults($pagename, $msgtmpl, $opt); $opt = array_merge($template_opt, $post_opt, $target_opt); $safe_opt = array_merge($template_opt, $target_opt); $errors = PmFormTemplateRequires($pagename, $msgtmpl, $opt); if (!$errors && @$safe_opt['saveto']) { $errors = PmFormSave($pagename, $msgtmpl, $opt, $safe_opt); } if (!$errors && @$safe_opt['mailto']) { $errors = PmFormMail($pagename, $msgtmpl, $opt, $safe_opt); } if ($errors) { foreach ((array) $errors as $errmsg) { $errmsg = htmlspecialchars($errmsg, ENT_NOQUOTES); $MessagesFmt[] = "<div class='wikimessage'>{$errmsg}</div>"; } return HandleDispatch($pagename, 'browse'); } # $GLOBALS['EnableRedirect'] = 0; if (@$opt['successpage']) { Redirect(MakePageName($pagename, $opt['successpage'])); } # Redirect($pagename, '{$PageUrl}?pmform=success'); $PmFormRedirectFunction($pagename, '{$PageUrl}?pmform=success'); }
function RequestArgs($req = NULL) { if (is_null($req)) $req = array_merge($_GET, $_POST); foreach ($req as $k => $v) { if (is_array($v)) $req[$k] = RequestArgs($v); else $req[$k] = stripmagic($req[$k]); } return $req; }