<?php // +----------------------------------------------------------------------+ // | OpenConf | // +----------------------------------------------------------------------+ // | Copyright (c) 2002-2011 Zakon Group LLC. All Rights Reserved. | // +----------------------------------------------------------------------+ // | This source file is subject to the OpenConf License, available on | // | the OpenConf web site: www.OpenConf.com | // +----------------------------------------------------------------------+ require_once "../include.php"; beginChairSession(); oc_addJS('chair/list_scores.js'); // Filter? $filter = (isset($_SESSION[OCC_SESSION_VAR_NAME]['scoresfilter']) ? $_SESSION[OCC_SESSION_VAR_NAME]['scoresfilter'] : ''); if (isset($_POST['fsubmit']) && ($_POST['fsubmit'] == 'Filter')) { if (!isset($_POST['filter']) || empty($_POST['filter'])) { $filter = ''; } elseif (($_POST['filter'] == 'Pending') || isset($OC_acceptanceColorAR[$_POST['filter']])) { $filter = $_POST['filter']; } $_SESSION[OCC_SESSION_VAR_NAME]['scoresfilter'] = $filter; session_write_close(); } printHeader("Submission Scores",1); if (isset($_POST['asubmit']) && ($_POST['asubmit'] == 'Go')) { if (isset($_POST['subs']) && !empty($_POST['subs']) && isset($_POST['subaction']) && (($_POST['subaction'] == 'Pending') || isset($OC_acceptanceColorAR[$_POST['subaction']]))) { if ($_POST['subaction'] == 'Pending') { $accepted = 'null'; } else { $accepted = "'" . $_POST['subaction'] . "'"; } foreach ($_POST['subs'] as $sid) { if (ctype_digit($sid)) { $q = "UPDATE `" . OCC_TABLE_PAPER . "` SET `accepted`=" . $accepted . " WHERE `paperid`='" . safeSQLstr($sid) . "' LIMIT 1"; ocsql_query($q); } } } else { print '<p class="warn" style="text-align: center">Invalid change request. Were submissions selected?</p>'; } } // Get accept/reject/pending count $r = ocsql_query("SELECT `accepted`, COUNT(*) AS `count` FROM `" . OCC_TABLE_PAPER . "` GROUP BY `accepted`") or err("Unable to get score count"); if (mysql_num_rows($r) == 0) { warn('No submissions have been made yet.'); } $accCountAR = array(); while ($l = mysql_fetch_array($r)) { if (empty($l['accepted'])) { $accCountAR['Pending'] = $l['count']; } else { $accCountAR[$l['accepted']] = $l['count']; } } // Get pending papers advocate recommendation counts $advcountTotal = 0; $advCountAR = array(); if (isset($accCountAR['Pending']) && ($accCountAR['Pending'] > 0)) { $cq = "SELECT `adv_recommendation`, COUNT(`advocateid`) AS `count` FROM `" . OCC_TABLE_PAPER . "`, `" . OCC_TABLE_PAPERADVOCATE . "` WHERE `" . OCC_TABLE_PAPER . "`.`paperid`=`" . OCC_TABLE_PAPERADVOCATE . "`.`paperid` AND `" . OCC_TABLE_PAPER . "`.`accepted` IS NULL GROUP BY `adv_recommendation`"; if ($cr = ocsql_query($cq)) { while ($cl = mysql_fetch_array($cr)) { if (empty($cl['adv_recommendation'])) { $advCountAR['Pending'] = $cl['count']; } else { $advCountAR[$cl['adv_recommendation']] = $cl['count']; } $advcountTotal += $cl['count']; } } } // Select sort order $psort='<a href="'.$_SERVER['PHP_SELF'].'?s=paper">Submission ID. Title</a>'; $ssort='<a href="'.$_SERVER['PHP_SELF'].'?s=score">Score</a>'; $arsort='<a href="'.$_SERVER['PHP_SELF'].'?s=advrec">Adv Recom</a>'; $asort='<a href="'.$_SERVER['PHP_SELF'].'?s=advocate">Advocate</a>'; $pdsort='<a href="'.$_SERVER['PHP_SELF'].'?s=pcdecision">PC Decision</a>'; $stsort='<a href="'.$_SERVER['PHP_SELF'].'?s=subtype">Sub. Type</a>'; if (!isset($_GET['s'])) { $_GET['s'] = 'score'; } switch ($_GET['s']) { case 'paper': $psort="Submission ID. Title<br />" . $OC_sortImg; $sort = "`paperid`"; break; case 'advocate': $asort = "Advocate<br />" . $OC_sortImg; $sort = "`name_last`, `name_first`, `paperid`"; break; case 'advrec': $arsort = "Adv Recom<br />" . $OC_sortImg; $sort = "`adv_recommendation`, `recavg` DESC, `paperid`"; break; case 'pcdecision': $pdsort = "PC Decision<br />" . $OC_sortImg; $sort = "`accepted`, `recavg` DESC, `paperid`"; break; case 'subtype': $stsort = "Sub. Type<br />" . $OC_sortImg; $sort = "`module_oc_subtype_type`, `recavg` DESC, `paperid`"; break; case 'score': default: $ssort="Score<br />" . $OC_sortImg; $sort = "`recavg` DESC, `paperid`"; $_GET['s'] = 'score'; break; } // Display Filter $aAR = array_keys($OC_acceptanceColorAR); $aAR[] = 'Pending'; print ' <div style="text-align: center"> <form method="post" action="' . $_SERVER['PHP_SELF'] . '?s=' . safeHTMLstr($_GET['s']) . '"> Display: <select name="filter"><option value="">All</option>' . generateSelectOptions($aAR, $filter, false) . '</select> <input type="submit" name="fsubmit" value="Filter" /> </form> </div> <p /> '; $extras = ''; // extra fields to retrieve from DB if (oc_moduleActive('oc_subtype')) { $extras .= "`" . OCC_TABLE_PAPER . "`.`module_oc_subtype_type`, "; } // Get all papers and decisions $q = "SELECT `" . OCC_TABLE_PAPER . "`.`paperid`, `" . OCC_TABLE_REVIEWER . "`.`username`, " . $extras . " CONCAT_WS(' ', `" . OCC_TABLE_REVIEWER . "`.`name_first`, `" . OCC_TABLE_REVIEWER . "`.`name_last`) AS `name`, COUNT(`" . OCC_TABLE_PAPERREVIEWER . "`.`reviewerid`) AS `cr`, COUNT(`recommendation`) AS `crec`, FORMAT(AVG(`recommendation`),2) AS `recavg`, MAX(`recommendation`) AS `recmax`, MIN(`recommendation`) AS `recmin`, `title`, `accepted`, `adv_recommendation`, MIN(`completed`) AS `reviewscomplete` FROM `" . OCC_TABLE_PAPER . "` LEFT JOIN `" . OCC_TABLE_PAPERREVIEWER . "` ON `" . OCC_TABLE_PAPERREVIEWER . "`.`paperid`=`" . OCC_TABLE_PAPER . "`.`paperid` LEFT JOIN `" . OCC_TABLE_PAPERADVOCATE . "` ON `" . OCC_TABLE_PAPERADVOCATE . "`.`paperid`=`" . OCC_TABLE_PAPER . "`.`paperid` LEFT JOIN `" . OCC_TABLE_REVIEWER . "` ON `" . OCC_TABLE_REVIEWER . "`.`reviewerid`=`" . OCC_TABLE_PAPERADVOCATE . "`.`advocateid` "; switch($filter) { case '': break; case 'Pending': $q .= "WHERE (`accepted`='' OR `accepted` IS NULL) "; break; default: $q .= "WHERE `accepted`='" . safeHTMLstr($filter) . "' "; break; } $q .= "GROUP BY paperid ORDER BY $sort"; $r = ocsql_query($q) or err("Unable to get scores"); if (mysql_num_rows($r) == 0) { print '<span class="warn">No submissions available.</span><p>'; } else { print ' <table border="0" cellspacing="0" cellpadding="0"><tr><td valign="top"> <dl> <dt><strong>Links:</strong></dt> <dd><em>Score</em> – Show reviews and accept/reject submission</dd> <dd><em>Submission ID. Title</em> – Show submission info</dd> <p /> <dt><strong>Definitions:</strong></dt> <dd><em>Score</em> = average reviewer recommendation score (if no score, ignored)</dd> <dd><em>Weight</em> = Number of reviews with a recommendation score</dd> <dd>Weight<strong>*</strong> = May include reviews marked as incomplete (<a href="list_reviews.php">unassign</a>)</dd> <dd><em>Range</em> = Min - Max recommendation scores</dd> '; if ($OC_configAR['OC_paperAdvocates']) { print ' <dd><em>Adv Recom</em> = Advocate Recommendation</dd> '; if ($advcountTotal > 0) { print ' <p /> <dt><strong>Pending Submissions\' Advocate Recommendation Count:</strong></dt> <dd><p /> '; $c = 0; foreach ($OC_acceptanceValuesAR as $acc) { if ($c++ == 3) { print "<br />\n"; $c = 0; } print '<nobr>' . safeHTMLstr($acc['value']) . ' - ' . (isset($advCountAR[$acc['value']]) ? $advCountAR[$acc['value']] : 0) . '</nobr> '; } print ' None - ' . (isset($advCountAR['Pending']) ? $advCountAR['Pending'] : 0) . ' </dd> '; } } print ' </dl> </td><td><nobr> </nobr></td><td valign="top" style="border: 1px solid #333; padding: 3px;"> <strong>Legend:</strong><br /> <table border=0 cellspacing=10 cellpadding=0> '; foreach ($OC_acceptanceValuesAR as $acc) { print '<tr><td style="background-color: #' . $acc['color'] . '" class="box"> </td><td> ' . safeHTMLstr($acc['value']) . ' (' . (isset($accCountAR[$acc['value']]) ? $accCountAR[$acc['value']] : 0) . ')</td></tr>'; } print ' <tr><td bgcolor="#eeeeee" class="box"> </td><td> Pending (' . (isset($accCountAR['Pending']) ? $accCountAR['Pending'] : 0) . ')</td></tr> '; if ($OC_configAR['OC_paperAdvocates']) { print ' <tr><td bgcolor="#ffffcc" class="box"> </td><td><nobr> Decision != Recomm.</nobr></td></tr> '; } print ' </table> </td> </tr></table> <p /> <form method="post" action="' . $_SERVER['PHP_SELF'] . '?s=' . safeHTMLstr($_GET['s']) . '" name="scoresForm"> <input type="hidden" name="s" value=""> <input type="button" value="Select" onclick="selectBoxes()" /> <select name="boxselect" id="boxselect"> <option value="all">all submissions</option> <option value="pending">all pending submissions</option> <option value="gt">submissions with score >=</option> <option value="eq">submissions with score =</option> <option value="lt">submissions with score <=</option> </select> <input name="score" id="score" size="2" title="enter a score" onkeypress="return checkNumberFieldKeyPress(event)" /> <p /> <table border=0 cellspacing=1 cellpadding=3><tr class="rowheader"><th> </th><th>' . $pdsort . '</th>'; if ($OC_configAR['OC_paperAdvocates']) { print '<th>' . $arsort . '</th>'; } print '<th>' . $ssort . '</th><th>Weight</th><th>Range</th><th>' . $psort . '</th>'; if (oc_moduleActive('oc_subtype')) { print '<th>' . $stsort . '</th>'; } if ($OC_configAR['OC_paperAdvocates']) { print '<th>' . $asort . '</th>'; } print '</tr>'; while ($l = mysql_fetch_array($r)) { $advpcmatch = ''; $scorelink = 'show_scores.php?pid=' . $l['paperid'] . '&s=' . safeHTMLstr($_GET['s']); print '<tr'; if (!empty($l['accepted'])) { print ' bgcolor="#' . $OC_acceptanceColorAR[$l['accepted']] . '"><td style="background-color: #ccdddd"><input type="checkbox" name="subs[]" value="' . $l['paperid'] . '" id="subs' . $l['paperid'] . '" /></td><td align="center" onclick="document.location=\'' . $scorelink .'\'" id="decision' . $l['paperid'] . '">' . safeHTMLstr($l['accepted']) . '</td>'; if (isset($l['adv_recommendation']) && !empty($l['adv_recommendation']) && ($l['adv_recommendation'] != $l['accepted'])) { $advpcmatch = ' bgcolor=#FFFFCC'; } } else { print ' style="background-color: #eee"><td style="background-color: #ccdddd"><input type="checkbox" name="subs[]" value="' . $l['paperid'] . '" id="subs' . $l['paperid'] . '" /></td><td align="center" onclick="document.location=\'' . $scorelink .'\'" id="decision' . $l['paperid'] . '"> </td>'; } if (!empty($l['recavg'])) { $usescore = $l['recavg']; $useweight = $l['crec']; if ($l['reviewscomplete'] == 'F') { $useweight .= '*'; } else { $useweight .= ' '; } } else { $usescore = '–'; $useweight = ' '; } if ($l['recmin'] === $l['recmax']) { $userange = $l['recmin']; } else { $userange = $l['recmin'] . '-' . $l['recmax']; } if ($OC_configAR['OC_paperAdvocates']) { print '<td align="center"'. $advpcmatch . '>' . $l['adv_recommendation'] . '</td>'; } print '<td align="center"><a href="show_scores.php?pid=' . $l['paperid'].'&s=' . safeHTMLstr($_GET['s']) . '" id="subscore' . $l['paperid'] . '">' . $usescore . '</a></td><td align="center">' . $useweight . '</td><td align="center">' . $userange . '</td><td align="left"><a href="show_paper.php?pid=' . $l['paperid'] . '">' . $l['paperid'] . '. ' . safeHTMLstr($l['title']) . '</a></td>'; if (oc_moduleActive('oc_subtype')) { print '<td>' . safeHTMLstr($l['module_oc_subtype_type']) . '</td>'; } if ($OC_configAR['OC_paperAdvocates']) { print '<td title="' . safeHTMLstr($l['username']) . '">' . safeHTMLstr($l['name']) . '</td>'; } print "</tr>\n"; } print ' <tr><td colspan="10"><br /><label>Change selected to <select name="subaction">'; foreach ($OC_acceptanceValuesAR as $acc) { print '<option value="' . safeHTMLstr($acc['value']) . '">' . safeHTMLstr($acc['value']) . '</option>'; } print '<option value="Pending">Pending</option></select></label> <input type="submit" name="asubmit" value="Go" /></td></tr> </table> </form> '; } printFooter(); ?>