science-ation/admin/judges_schedulerconfig_check.inc.php

197 lines
7.2 KiB
PHP

<?
function checkPrerequisites()
{
global $config;
$q=mysql_query("SELECT * FROM judges_schedulerconfig WHERE year='".$config['FAIRYEAR']."' ORDER BY var");
$schedulerconfig=array();
while($r=mysql_fetch_object($q))
{
$schedulerconfig[$r->var]=$r->val;
}
echo i18n("Based on your configuration data above, here are some calculations");
echo "<br />";
$totalteams=0;
$catq=mysql_query("SELECT * FROM projectcategories WHERE year='{$config['FAIRYEAR']}' ORDER BY mingrade");
while($catr=mysql_fetch_object($catq))
{
echo "<h3>$catr->category</h3>";
echo "<table>";
echo "<tr><th>Division</th><th>Projects</th><th>Teams</th></tr>";
if($config['filterdivisionbycategory']=="yes")
$divq=mysql_query("SELECT projectdivisions.* FROM projectdivisions,projectcategoriesdivisions_link WHERE projectdivisions.year='{$config['FAIRYEAR']}' AND projectcategoriesdivisions_link.projectcategories_id='$catr->id' AND projectcategoriesdivisions_link.projectdivisions_id=projectdivisions.id AND projectcategoriesdivisions_link.year='".$config['FAIRYEAR']."' ORDER BY id");
else
$divq=mysql_query("SELECT * FROM projectdivisions WHERE year='{$config['FAIRYEAR']}' ORDER BY id");
echo mysql_error();
while($divr=mysql_fetch_object($divq))
{
$langq=mysql_query("SELECT * FROM languages WHERE active='Y'");
while($langr=mysql_fetch_object($langq))
{
$numq=mysql_query("SELECT COUNT(id) AS num FROM projects WHERE projectcategories_id='$catr->id' AND projectdivisions_id='$divr->id' AND year='{$config['FAIRYEAR']}' AND language='$langr->lang'");
$numr=mysql_fetch_object($numq);
echo "<tr><td>".i18n($divr->division)." ($langr->lang)</td>";
echo "<td align=\"center\">$numr->num</td>";
$numteams=ceil($numr->num/$schedulerconfig['max_projects_per_team']*$schedulerconfig['num_times_judged']);
if($numteams<$schedulerconfig['num_times_judged']) $numteams=$schedulerconfig['num_times_judged'];
if($numr->num==0) $numteams=0;
echo "<td align=\"center\">$numteams</td>";
$totalteams+=$numteams;
echo "</tr>";
}
}
echo "</table>";
echo "<br />";
echo "<br />";
}
echo "<b>";
echo "Total judging teams required: $totalteams";
echo "<br />";
$minjudges=($totalteams*$schedulerconfig['min_judges_per_team']);
$maxjudges=($totalteams*$schedulerconfig['max_judges_per_team']);
echo "Minimum number of judges required: $minjudges";
echo "<br />";
echo "Maximum number of judges acceptable: $maxjudges";
echo "<br />";
$jq=mysql_query("SELECT COUNT(judges.id) AS num FROM judges,judges_years WHERE complete='yes' AND judges_years.year='{$config['FAIRYEAR']}' AND judges_years.judges_id=judges.id");
$jr=mysql_fetch_object($jq);
$currentjudges=$jr->num;
echo "Current number of registered judges: $currentjudges";
echo "<br />";
echo "<br />";
$ok=true;
if($currentjudges<$minjudges)
{
echo error(i18n("You do not have sufficient number of judges based on your parameters"));
echo "&nbsp;&nbsp;";
echo "<a href=\"judges_schedulerconfig.php\">".i18n("Update Scheduler Configuration")."</a> (".i18n("or get more judges!").")";
$ok=false;
}
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
$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;
if($config['filterdivisionbycategory']=="yes")
{
$q=mysql_query("SELECT * FROM projectcategoriesdivisions_link WHERE year='".$config['FAIRYEAR']."' ORDER BY id");
while($r=mysql_fetch_object($q))
$catdiv[$r->projectcategories_id][]=$r->projectdivisions_id;
}
$foundawards="";
$notfoundawards="";
$foundteams="";
foreach($div AS $d_id=>$d_division)
{
foreach($cat AS $c_id=>$c_category)
{
if($config['filterdivisionbycategory']=="yes")
{
if(!in_array($d_id,$catdiv[$c_id]))
continue;
}
$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_id'
AND award_awards_projectdivisions.projectdivisions_id='$d_id'
AND award_awards.award_types_id='1'
");
echo mysql_error();
if(mysql_num_rows($q)!=1)
{
while($r=mysql_fetch_object($q))
print_r($r);
$notfoundawards.="$c_category - $d_division, ";
$ok=false;
}
else
{
$r=mysql_fetch_object($q);
$foundawards.="$c_category - $d_division, ";
//if we found an award thats good, but it would be bad if there's already a judges team
//that is assigned to the award, so now lets check the judges teams to see if ones assigned
//to this award.
$q=mysql_query("SELECT judges_teams.num,judges_teams.name
FROM judges_teams,
judges_teams_awards_link
WHERE
judges_teams_awards_link.award_awards_id='$r->id'
AND judges_teams.year='".$config['FAIRYEAR']."'
AND judges_teams_awards_link.judges_teams_id=judges_teams.id");
if(mysql_num_rows($q))
{
$r=mysql_fetch_object($q);
$ok=false;
$foundteams.=i18n("(%1) %2, ",array($r->num,$r->name));
}
}
}
}
$notfoundawards=substr($notfoundawards,0,-2);
$foundawards=substr($foundawards,0,-2);
$foundteams=substr($foundteams,0,-2);
if($notfoundawards)
{
echo error(i18n("Cannot find awards for: %1. These awards must be created first",array($notfoundawards)));
echo "&nbsp;&nbsp;";
echo "<a href=\"awards.php\">".i18n("Awards Manager")."</a>";
}
if($foundawards)
echo happy(i18n("Found awards for: %1",array($foundawards)));
if($foundteams)
{
echo error(i18n("Found judging teams that are currently assigned to divisional awards: %1. These teams must be removed first",array($foundteams)));
echo "&nbsp;&nbsp;<a href=\"judges_teams.php\">".i18n("Judging Teams Manager")."</a>";
}
else
echo happy(i18n("No judging teams are assigned to divisional awards (good!)"));
//now check if we have enough timeslots available...
$q=mysql_query("SELECT COUNT(id) AS num FROM judges_timeslots WHERE year='".$config['FAIRYEAR']."' AND allowdivisional='yes'");
$r=mysql_fetch_object($q);
$numslots=$r->num;
if($numslots<$schedulerconfig['max_projects_per_team'])
{
echo error(i18n("You do not have enough judging timeslots available for divisional judging. Please create more timeslots first. Available: %1, Required: %2",array($numslots,$schedulerconfig['max_projects_per_team'])));
echo "&nbsp;&nbsp;<a href=\"judges_timeslots.php\">".i18n("Timeslot Manager")."</a>";
$ok=false;
}
else
{
echo happy(i18n("You have sufficient timeslots available. Available: %1, Required: %2",array($numslots,$schedulerconfig['max_projects_per_team'])));
}
//asdf
return $ok;
}
?>