return true; } if (($Qreq->update || $Qreq->submitfinal) && check_post($Qreq)) { // choose action $action = "update"; if ($Qreq->submitfinal && !$newPaper) { $action = "final"; } else { if ($Qreq->submitpaper && ($prow && $prow->size > 0 || $Qreq->_FILES->paperUpload || opt("noPapers"))) { $action = "submit"; } } $ps = new PaperStatus($Me); $opj = $prow ? $ps->paper_json($prow) : null; $pj = PaperStatus::clone_json($opj); PaperSaver::apply_all($Me, $pj, $opj, $Qreq, $action); $diffs = PaperSaver::all_diffs($pj, $opj); // check deadlines if ($newPaper) { // we know that can_start_paper implies can_finalize_paper $whyNot = $Me->perm_start_paper(); } else { if ($action == "final") { $whyNot = $Me->perm_submit_final_paper($prow); } else { $whyNot = $Me->perm_update_paper($prow); if ($whyNot && $action == "submit" && empty($diffs)) { $whyNot = $Me->perm_finalize_paper($prow); } } }