forked from science-ation/science-ation
197 lines
7.2 KiB
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 " ";
|
|
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 " ";
|
|
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 " <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 " <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;
|
|
}
|
|
|
|
?>
|