コード例 #1
0
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');
}
コード例 #2
0
ファイル: forms.php プロジェクト: BogusCurry/pmwiki
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;
}