public static function register($fdef) { PaperColumn::register($fdef); self::$registered[] = $fdef; }
function echo_unparse_display() { $this->set_my_conflicts(); $bypaper = array(); foreach ($this->assigners as $assigner) { if ($text = $assigner->unparse_display($this)) { $c = $assigner->contact; if ($c && !isset($c->sorter)) { Contact::set_sorter($c); } arrayappend($bypaper[$assigner->pid], (object) array("text" => $text, "sorter" => $c ? $c->sorter : $text)); } } AutoassignmentPaperColumn::$header = "Assignment"; $assinfo = array(); PaperColumn::register(new AutoassignmentPaperColumn()); foreach ($bypaper as $pid => $list) { uasort($list, "Contact::compare"); $t = ""; foreach ($list as $x) { $t .= ($t ? ", " : "") . '<span class="nw">' . $x->text . '</span>'; } if (isset($this->my_conflicts[$pid])) { if ($this->my_conflicts[$pid] !== true) { $t = '<em>Hidden for conflict</em>'; } else { $t = PaperList::wrapChairConflict($t); } } $assinfo[$pid] = $t; } ksort($assinfo); AutoassignmentPaperColumn::$info = $assinfo; if ($this->unparse_search) { $query_order = "(" . $this->unparse_search . ") THEN HEADING:none " . join(" ", array_keys($assinfo)); } else { $query_order = count($assinfo) ? join(" ", array_keys($assinfo)) : "NONE"; } foreach ($this->unparse_columns as $k => $v) { $query_order .= " show:{$k}"; } $query_order .= " show:autoassignment"; $search = new PaperSearch($this->contact, array("t" => defval($_REQUEST, "t", "s"), "q" => $query_order)); $plist = new PaperList($search); echo $plist->table_html("reviewers", ["nofooter" => 1]); $deltarev = new AssignmentCountSet(); foreach ($this->assigners as $assigner) { $assigner->account($deltarev); } if (count(array_intersect_key($deltarev->bypc, pcMembers()))) { $summary = []; $tagger = new Tagger($this->contact); $nrev = new AssignmentCountSet(); $deltarev->rev && $nrev->load_rev(); $deltarev->lead && $nrev->load_lead(); $deltarev->shepherd && $nrev->load_shepherd(); foreach (pcMembers() as $p) { if ($deltarev->get($p->contactId)->ass) { $t = '<div class="ctelt"><div class="ctelti'; if ($k = $p->viewable_color_classes($this->contact)) { $t .= ' ' . $k; } $t .= '"><span class="taghl">' . $this->contact->name_html_for($p) . "</span>: " . plural($deltarev->get($p->contactId)->ass, "assignment") . self::review_count_report($nrev, $deltarev, $p, "After assignment: ") . "<hr class=\"c\" /></div></div>"; $summary[] = $t; } } if (count($summary)) { echo "<div class=\"g\"></div>\n", "<h3>Summary</h3>\n", '<div class="pc_ctable">', join("", $summary), "</div>\n"; } } }