} if (isset($Error["paperId"]) && $Error["paperId"] != $prow->paperId) { $Error = array(); } } $prow = null; if (!$newPaper) { loadRows(); } // paper actions if (isset($_REQUEST["setrevpref"]) && $prow && check_post()) { PaperActions::setReviewPreference($prow); loadRows(); } if (isset($_REQUEST["setfollow"]) && $prow && check_post()) { PaperActions::set_follow($prow); loadRows(); } if ($prow && isset($_GET["m"]) && $_GET["m"] === "api" && isset($_GET["fn"]) && isset(SiteLoader::$api_map[$_GET["fn"]])) { $Qreq = make_qreq(); SiteLoader::call_api($Qreq->fn, $Me, $Qreq, $prow); json_exit(["ok" => false, "error" => "Internal error."]); } // check paper action if (isset($_REQUEST["checkformat"]) && $prow && $Conf->setting("sub_banal")) { $ajax = defval($_REQUEST, "ajax", 0); $cf = new CheckFormat(); $dt = HotCRPDocument::parse_dtype(@$_REQUEST["dt"]); if ($dt === null) { $dt = @$_REQUEST["final"] ? DTYPE_FINAL : DTYPE_SUBMISSION; }
if (!$paperTable->editrrow || !$Me->is_my_review($paperTable->editrrow) && !$Me->can_administer($prow)) { Conf::msg_error("This review was not assigned to you, so you cannot confirm your intention to write it."); } else { if ($paperTable->editrrow->reviewModified <= 0) { Dbl::qe_raw("update PaperReview set reviewModified=1 where reviewId=" . $paperTable->editrrow->reviewId . " and coalesce(reviewModified,0)<=0"); } $Conf->confirmMsg("Thank you for confirming your intention to finish this review. You can download the paper and review form below."); loadRows(); } } // paper actions if (isset($_REQUEST["clickthrough"]) && check_post()) { PaperActions::save_clickthrough(); } if (isset($_REQUEST["setrevpref"]) && check_post()) { PaperActions::setReviewPreference($prow); loadRows(); } // can we view/edit reviews? $viewAny = $Me->can_view_review($prow, null, null); $editAny = $Me->can_review($prow, null); // can we see any reviews? if (!$viewAny && !$editAny) { if ($whyNotPaper = $Me->perm_view_paper($prow)) { errorMsgExit(whyNotText($whyNotPaper, "view")); } if (!isset($_REQUEST["reviewId"]) && !isset($_REQUEST["ls"])) { Conf::msg_error("You can’t see the reviews for this paper. " . whyNotText($Me->perm_view_review($prow, null, null), "review")); go(hoturl("paper", "p={$prow->paperId}")); } }
function savePreferences($Qreq) { global $Conf, $Me, $OK, $reviewer, $incorrect_reviewer; if ($incorrect_reviewer) { Conf::msg_error("Preferences not saved."); return; } $setting = array(); $error = false; $pmax = 0; foreach ($Qreq as $k => $v) { if (strlen($k) > 7 && $k[0] == "r" && substr($k, 0, 7) == "revpref" && ($p = cvtint(substr($k, 7))) > 0) { if ($pref = parse_preference($v)) { $setting[$p] = $pref; $pmax = max($pmax, $p); } else { $error = true; } } } if ($error) { Conf::msg_error("Preferences must be small positive or negative integers."); } if ($pmax == 0 && !$error) { Conf::msg_error("No reviewer preferences to update."); } if ($pmax == 0) { return; } $deletes = array(); for ($p = 1; $p <= $pmax; $p++) { if (isset($setting[$p])) { $p0 = $p; while (isset($setting[$p + 1])) { ++$p; } if ($p0 == $p) { $deletes[] = "paperId={$p0}"; } else { $deletes[] = "paperId between {$p0} and {$p}"; } } } if (count($deletes)) { $Conf->qe("delete from PaperReviewPreference where contactId={$reviewer} and (" . join(" or ", $deletes) . ")"); } $q = array(); for ($p = 1; $p <= $pmax; $p++) { if (($pref = get($setting, $p)) && ($pref[0] || $pref[1] !== null)) { $q[] = array($p, $reviewer, $pref[0], $pref[1]); } } PaperActions::save_review_preferences($q); if ($OK) { $Conf->confirmMsg("Preferences saved."); redirectSelf(); } }
static function setpref_api($user, $qreq, $prow) { global $Conf; $cid = $user->contactId; if ($user->allow_administer($prow) && $qreq->reviewer && ($x = cvtint($qreq->reviewer)) > 0) { $cid = $x; } if ($v = parse_preference($qreq->pref)) { if (PaperActions::save_review_preferences([[$prow->paperId, $cid, $v[0], $v[1]]])) { $j = ["ok" => true, "response" => "Saved"]; } else { $j = ["ok" => false]; } $j["value"] = unparse_preference($v); } else { $j = ["ok" => false, "error" => "Bad preference"]; } json_exit($j); }