<? function judges_scheduler_check_timeslots() { global $config; $q=mysql_query("SELECT * FROM judges_timeslots WHERE ". " year='".$config['FAIRYEAR']."'". " AND `type`='divisional1'" ); if(mysql_num_rows($q)) { $round=mysql_fetch_object($q); $q=mysql_query("SELECT * FROM judges_timeslots WHERE round_id='$round->id' AND type='timeslot'"); return mysql_num_rows($q); } else return 0; } function judges_scheduler_check_timeslots_sa() { global $config; $rows = 0; $q=mysql_query("SELECT * FROM judges_timeslots WHERE ". " year='".$config['FAIRYEAR']."'". " AND `type`='special'" ); if(mysql_num_rows($q)) { while(( $round=mysql_fetch_object($q))) { $rq=mysql_query("SELECT * FROM judges_timeslots WHERE round_id='$round->id' AND type='timeslot'"); $rows += mysql_num_rows($rq); } } return $rows; } function judges_scheduler_check_awards() { global $config; $q=mysql_query("SELECT * FROM projectdivisions WHERE year='".$config['FAIRYEAR']."' ORDER BY id"); while($r=mysql_fetch_object($q)) $div[$r->id]=$r->division; $q=mysql_query("SELECT * FROM projectcategories WHERE year='".$config['FAIRYEAR']."' ORDER BY id"); while($r=mysql_fetch_object($q)) $cat[$r->id]=$r->category; $dkeys = array_keys($div); $ckeys = array_keys($cat); if($config['filterdivisionbycategory']=="yes") { $q=mysql_query("SELECT * FROM projectcategoriesdivisions_link WHERE year='".$config['FAIRYEAR']."' ORDER BY projectdivisions_id,projectcategories_id"); $divcat=array(); while($r=mysql_fetch_object($q)) { $divcat[]=array("c"=>$r->projectcategories_id,"d"=>$r->projectdivisions_id); } } else { $divcat=array(); foreach($dkeys AS $d) { foreach($ckeys AS $c) { $divcat[]=array("c"=>$c,"d"=>$d); } } } $missing_awards = array(); foreach($divcat AS $dc) { $d=$dc['d']; $c=$dc['c']; $q=mysql_query("SELECT award_awards.id FROM award_awards, award_awards_projectcategories, award_awards_projectdivisions WHERE award_awards.year='{$config['FAIRYEAR']}' AND award_awards_projectcategories.year='{$config['FAIRYEAR']}' AND award_awards_projectdivisions.year='{$config['FAIRYEAR']}' AND award_awards.id=award_awards_projectcategories.award_awards_id AND award_awards.id=award_awards_projectdivisions.award_awards_id AND award_awards_projectcategories.projectcategories_id='$c' AND award_awards_projectdivisions.projectdivisions_id='$d' AND award_awards.award_types_id='1' "); echo mysql_error(); if(mysql_num_rows($q)!=1) { $missing_awards[] = "{$cat[$c]} - {$div[$d]} (".i18n("%1 found",array(mysql_num_rows($q))).")"; } } return $missing_awards; } function judges_scheduler_check_jdivs() { global $config; $q=mysql_query("SELECT DISTINCT jdiv_id FROM judges_jdiv "); $rows = mysql_num_rows($q); return $rows; } function judges_scheduler_check_judges() { global $config; $ok = 1; $jdiv = array(); $q=mysql_query("SELECT * FROM judges_jdiv ORDER BY jdiv_id"); while($r=mysql_fetch_object($q)) { /* Ignore any div/cat with jdiv 0 */ if($r->jdiv_id == 0) continue; $d = $r->projectdivisions_id; $c = $r->projectcategories_id; $l = $r->lang; $qp = mysql_query("SELECT COUNT(projects.id) as cnt FROM projects, registrations WHERE ". " projects.year='".$config['FAIRYEAR']."' AND ". " projectdivisions_id='$d' AND ". " projectcategories_id='$c' AND ". " language='$l' AND " . " registrations.id = projects.registrations_id " . getJudgingEligibilityCode() ); $qr = mysql_fetch_object($qp); $jdiv[$r->jdiv_id]['num_projects']['total'] += $qr->cnt; $jdiv[$r->jdiv_id]['num_projects'][$l] += $qr->cnt; $projectlanguagetotal[$l]+=$qr->cnt; $projecttotal+=$qr->cnt; } $totalteams['total'] = 0; echo "<table border=1 width=\"85%\"><tr><th></th>". "<th colspan=\"".(count($config['languages'])+1)."\">".i18n("Projects")."</th>". "<th>".i18n("Required Teams")."</th></tr>"; echo "<tr>"; echo "<th></th><th>".i18n("Total")."</th>"; foreach($config['languages'] AS $lkey=>$lname) echo "<th>$lkey</th>"; echo "<th></th>"; echo "</tr>\n"; foreach($jdiv AS $jdiv_id=>$jd) { $c = $jd['num_projects']['total']; //total judge teams calculation $t['total']=ceil($c/$config['max_projects_per_team']*$config['times_judged']); if($t['total'] < $config['times_judged'] && $c>0) $t['total'] = $config['times_judged']; $jdiv[$jdiv_id]['num_jteams']['total'] = $t['total']; $totalteams['total']+=$t['total']; echo "<tr><td>Judging Division Group $jdiv_id</td>"; echo "<td align=\"center\">$c</td>"; $langstr=""; foreach($config['languages'] AS $lkey=>$lname) { $clang=($jd['num_projects'][$lkey]?$jd['num_projects'][$lkey]:0); echo "<td align=\"center\">$clang</td>"; } echo "<td align=\"center\">{$t['total']}</td>"; echo "</tr>"; } echo "</table>"; echo "<br />"; echo "<b>"; echo i18n("Total judging teams required: %1",array($totalteams['total'])); echo "<br />"; echo "<br />"; $minjudges['total']=($totalteams['total']*$config['min_judges_per_team']); $maxjudges['total']=($totalteams['total']*$config['max_judges_per_team']); echo i18n("Minimum number of judges required: %1",array($minjudges['total']))."<br />"; foreach($config['languages'] AS $lkey=>$lname) { if($minjudges['total'] && $projecttotal) $minjudges[$lkey]=round($projectlanguagetotal[$lkey]/$projecttotal*$minjudges['total']); else $minjudges[$lkey]=0; echo " ".i18n("Minimum number of %1 judges required: %2",array($lname,$minjudges[$lkey]))."<br />"; } echo i18n("Maximum number of judges needed: %1",array($maxjudges['total'])); echo "<br />"; echo "<br />"; /* $jq=mysql_query("SELECT COUNT(judges.id) AS num FROM judges,judges_years WHERE complete='yes' AND deleted='no' AND judges_years.year='{$config['FAIRYEAR']}' AND judges_years.judges_id=judges.id"); $jr=mysql_fetch_object($jq); $currentjudges=$jr->num;*/ /* FIXME: this his highly inefficient :), but won't be done very often */ $judges = judges_load_all(); $currentjudges = count($judges); echo "Current number of registered judges: $currentjudges"; echo "</b>"; echo "<br />"; if($currentjudges<$minjudges['total']) { echo error(i18n("You do not have sufficient number of total judges based on your parameters")); $ok=false; } foreach($config['languages'] AS $lkey=>$lname) { $lcount=0; foreach($judges AS $j) { foreach($j['languages'] AS $jlang) { if($jlang==$lkey) $lcount++; } } $currentjudges=$lcount; echo " <b>".i18n("Current number of registered judges that can judge in %1: %2",array($lname,$currentjudges))."</b>"; echo "<br />"; if($currentjudges<$minjudges[$lkey]) { echo error(i18n("You do not have sufficient number of %1 judges based on your parameters",array($lname))); $ok=false; } } if(!$ok) { echo " "; echo "<a href=\"judges_schedulerconfig.php\">".i18n("Update Scheduler Configuration")."</a> (".i18n("or get more judges!").")"; } else echo happy(i18n("You have a sufficient number of judges based on your parameters")); //now check if we can find a divisional award for each division and category return $ok; } ?>