예제 #1
0
    }
    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;
    }
예제 #2
0
    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();
    }
}
예제 #4
0
 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);
 }