function parse($sv, $si) { global $Conf; if (!$sv->newv("resp_active")) { return false; } $old_roundnames = $Conf->resp_round_list(); $roundnames = array(1); $roundnames_set = array(); if (isset($sv->req["resp_roundname"])) { $rname = trim(get_s($sv->req, "resp_roundname")); if ($rname === "" || $rname === "none" || $rname === "1") { /* do nothing */ } else { if ($rerror = Conf::resp_round_name_error($rname)) { $sv->set_error("resp_roundname", $rerror); } else { $roundnames[0] = $rname; $roundnames_set[strtolower($rname)] = 0; } } } for ($i = 1; isset($sv->req["resp_roundname_{$i}"]); ++$i) { $rname = trim(get_s($sv->req, "resp_roundname_{$i}")); if ($rname === "" && get($old_roundnames, $i)) { $rname = $old_roundnames[$i]; } if ($rname === "") { continue; } else { if ($rerror = Conf::resp_round_name_error($rname)) { $sv->set_error("resp_roundname_{$i}", $rerror); } else { if (get($roundnames_set, strtolower($rname)) !== null) { $sv->set_error("resp_roundname_{$i}", "Response round name “" . htmlspecialchars($rname) . "” has already been used."); } else { $roundnames[] = $rname; $roundnames_set[strtolower($rname)] = $i; } } } } foreach ($roundnames_set as $i) { $isuf = $i ? "_{$i}" : ""; if (($v = parse_value($sv, "resp_open{$isuf}", Si::get("resp_open"))) !== null) { $sv->save("resp_open{$isuf}", $v <= 0 ? null : $v); } if (($v = parse_value($sv, "resp_done{$isuf}", Si::get("resp_done"))) !== null) { $sv->save("resp_done{$isuf}", $v <= 0 ? null : $v); } if (($v = parse_value($sv, "resp_grace{$isuf}", Si::get("resp_grace"))) !== null) { $sv->save("resp_grace{$isuf}", $v <= 0 ? null : $v); } if (($v = parse_value($sv, "resp_words{$isuf}", Si::get("resp_words"))) !== null) { $sv->save("resp_words{$isuf}", $v < 0 ? null : $v); } if (($v = parse_value($sv, "msg.resp_instrux{$isuf}", Si::get("msg.resp_instrux"))) !== null) { $sv->save("msg.resp_instrux{$isuf}", $v); } } if (count($roundnames) > 1 || $roundnames[0] !== 1) { $sv->save("resp_rounds", join(" ", $roundnames)); } else { $sv->save("resp_rounds", null); } return false; }