$paperTable = new PaperTable($prow, make_qreq(), "assign"); $paperTable->initialize(false, false); confHeader(); // begin form and table $loginUrl = hoturl_post("assign", "p={$prow->paperId}"); $paperTable->paptabBegin(); // reviewer information $proposals = null; if (setting("extrev_chairreq")) { if ($Me->allow_administer($prow)) { $q = ""; } else { $q = " and requestedBy={$Me->contactId}"; } $result = Dbl::qe_raw("select name, ReviewRequest.email, firstName as reqFirstName, lastName as reqLastName, ContactInfo.email as reqEmail, requestedBy, reason, reviewRound from ReviewRequest join ContactInfo on (ContactInfo.contactId=ReviewRequest.requestedBy) where ReviewRequest.paperId={$prow->paperId}" . $q); $proposals = edb_orows($result); } $t = reviewTable($prow, $rrows, null, null, "assign", $proposals); $t .= reviewLinks($prow, $rrows, null, null, "assign", $allreviewslink); if ($t !== "") { echo '<hr class="papcard_sep" />', $t; } // PC assignments if ($Me->can_administer($prow)) { $result = Dbl::qe_raw("select ContactInfo.contactId,\n PaperConflict.conflictType,\n PaperReview.reviewType,\n coalesce(preference, 0) as reviewerPreference,\n expertise as reviewerExpertise,\n coalesce(allReviews,'') as allReviews,\n coalesce(PRR.paperId,0) as refused\n from ContactInfo\n left join PaperConflict on (PaperConflict.contactId=ContactInfo.contactId and PaperConflict.paperId={$prow->paperId})\n left join PaperReview on (PaperReview.contactId=ContactInfo.contactId and PaperReview.paperId={$prow->paperId})\n left join PaperReviewPreference on (PaperReviewPreference.contactId=ContactInfo.contactId and PaperReviewPreference.paperId={$prow->paperId})\n left join (select PaperReview.contactId, group_concat(reviewType separator '') as allReviews from PaperReview join Paper on (Paper.paperId=PaperReview.paperId and timeWithdrawn<=0) group by PaperReview.contactId) as AllReviews on (AllReviews.contactId=ContactInfo.contactId)\n left join PaperReviewRefused PRR on (PRR.paperId={$prow->paperId} and PRR.contactId=ContactInfo.contactId)\n where (ContactInfo.roles&" . Contact::ROLE_PC . ")!=0\n group by ContactInfo.contactId"); $pcx = array(); while ($row = edb_orow($result)) { $pcx[$row->contactId] = $row; } // PC conflicts row echo '<hr class="papcard_sep" />', Ht::form($loginUrl, array("id" => "ass")), '<div class="aahc">', "<h3 style=\"margin-top:0\">PC review assignments</h3>", '<p>';
if (isset($_REQUEST["pap"])) { foreach ($_REQUEST["pap"] as $p) { if (($p = cvtint($p)) > 0 && isset($allowed_papers[$p])) { $papersel[] = $p; } } } else { $papersel = array_keys($allowed_papers); } if (count($papersel) == 0) { unset($papersel); } } if ($getaction == "nameemail" && isset($papersel) && $Me->isPC) { $result = $Conf->qe("select firstName first, lastName last, email, affiliation from ContactInfo where " . paperselPredicate($papersel) . " order by lastName, firstName, email"); $people = edb_orows($result); downloadCSV($people, array("first", "last", "email", "affiliation"), "users", array("selection" => true)); } function urlencode_matches($m) { return urlencode($m[0]); } if ($getaction == "pcinfo" && isset($papersel) && $Me->privChair) { assert($Conf->sversion >= 73); $result = $Conf->qe("select firstName first, lastName last, email,\n preferredEmail preferred_email, affiliation,\n voicePhoneNumber phone,\n collaborators, defaultWatch, roles, disabled, contactTags tags, data,\n group_concat(concat(topicId,':'," . $Conf->query_topic_interest() . ")) topic_interest\n from ContactInfo\n left join TopicInterest on (TopicInterest.contactId=ContactInfo.contactId and TopicInterest.interest is not null)\n where " . paperselPredicate($papersel) . "\n group by ContactInfo.contactId order by lastName, firstName, email"); // NB This format is expected to be parsed by profile.php's bulk upload. $topics = $Conf->topic_map(); $people = array(); $has = (object) array("topics" => array()); while ($row = edb_orow($result)) { if ($row->phone) {
private static function contacts_by($what) { $cb = array(); foreach (edb_orows(Dbl::qe("select " . AssignerContacts::$query . " from ContactInfo")) as $c) { $cb[$c->{$what}] = $c; } return $cb; }
private function get_reviews() { global $Conf; if ($this->rrow) { $rrows = array($this->rrow); } else { $result = Dbl::qe("select PaperReview.*,\n ContactInfo.firstName, ContactInfo.lastName, ContactInfo.email\n from PaperReview\n join ContactInfo on (ContactInfo.contactId=PaperReview.contactId)\n where PaperReview.paperId=" . $this->row->paperId . " order by reviewOrdinal"); $rrows = edb_orows($result); } // save old au_seerev setting, and reset it so authors can see them. if (!($au_seerev = $Conf->au_seerev)) { $Conf->au_seerev = Conf::AUSEEREV_YES; } $text = ""; $rf = ReviewForm::get(); foreach ($rrows as $row) { if ($row->reviewSubmitted && $this->permissionContact->can_view_review($this->row, $row, false)) { $text .= $rf->pretty_text($this->row, $row, $this->permissionContact, $this->no_send) . "\n"; } } $Conf->au_seerev = $au_seerev; if ($text === "" && $au_seerev == Conf::AUSEEREV_UNLESSINCOMPLETE && count($rrows)) { $text = "[Reviews are hidden since you have incomplete reviews of your own.]\n"; } return $text; }