$errid = isset($update["errid"]) && ctype_alnum("" . $update["errid"]) ? $update["errid"] : false;
        if ($errid && $Conf->setting("ignoreupdate_{$errid}", 0) > time()) {
            $ok = false;
        }
        if ($ok) {
            $m = "<div class='xmerror'";
            if ($errid) {
                $m .= " id='softwareupdate_{$errid}'";
            }
            $m .= " style='font-size:smaller'><div class='dod'><strong>WARNING: Upgrade your HotCRP installation.</strong>";
            if (isset($update["vulnid"]) && is_numeric($update["vulnid"])) {
                $m .= " (HotCRP-Vulnerability-" . $update["vulnid"] . ")";
            }
            $m .= "</div>";
            if (isset($update["message"]) && is_string($update["message"])) {
                $m .= "<div class='bigid'>" . CleanHTML::clean($update["message"], $error) . "</div>";
            }
            if (isset($update["to"]) && is_string($update["to"])) {
                $m .= "<div class='bigid'>First unaffected commit: " . htmlspecialchars($update["to"]);
                if ($errid) {
                    $m .= " <span class='barsep'>·</span> " . "<a href='#' onclick='return check_version.ignore(\"{$errid}\")'>Ignore for two days</a>";
                }
                $m .= "</div>";
            }
            $messages[] = $m . "</div>\n";
            $_SESSION["updatecheck"] = 0;
        }
    }
}
if (!count($messages)) {
    echo "{\"ok\":true}\n";