forked from science-ation/science-ation
199 lines
5.8 KiB
PHP
199 lines
5.8 KiB
PHP
<?
|
|
/*
|
|
This file is part of the 'Science Fair In A Box' project
|
|
SFIAB Website: http://www.sfiab.ca
|
|
|
|
Copyright (C) 2005 Sci-Tech Ontario Inc <info@scitechontario.org>
|
|
Copyright (C) 2005 James Grant <james@lightbox.org>
|
|
|
|
This program is free software; you can redistribute it and/or
|
|
modify it under the terms of the GNU General Public
|
|
License as published by the Free Software Foundation, version 2.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program; see the file COPYING. If not, write to
|
|
the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
|
Boston, MA 02111-1307, USA.
|
|
*/
|
|
?>
|
|
<?
|
|
|
|
$preferencechoices=array(
|
|
-2=>"Very Low",
|
|
-1=>"Low",
|
|
0=>"Indifferent",
|
|
1=>"Medium",
|
|
2=>"High"
|
|
);
|
|
|
|
|
|
|
|
function personalStatus()
|
|
{
|
|
global $config;
|
|
$required_fields=array("firstname","lastname","address","city","postalcode","phonehome","email");
|
|
|
|
$q=mysql_query("SELECT * FROM judges WHERE id='".$_SESSION['judges_id']."'");
|
|
|
|
while($r=mysql_fetch_object($q))
|
|
{
|
|
foreach ($required_fields AS $req)
|
|
{
|
|
if(!$r->$req)
|
|
{
|
|
return "incomplete";
|
|
}
|
|
}
|
|
}
|
|
|
|
//and they also have to select at least one language to judge in
|
|
$q=mysql_query("SELECT COUNT(judges_id) AS num FROM judges_languages WHERE judges_id='".$_SESSION['judges_id']."'");
|
|
$r=mysql_fetch_object($q);
|
|
if($r->num==0)
|
|
return "incomplete";
|
|
|
|
|
|
//if it made it through without returning incomplete, then we must be complete
|
|
return "complete";
|
|
}
|
|
|
|
function expertiseStatus()
|
|
{
|
|
global $config;
|
|
|
|
/* If the judging special awards are active, and the judge has
|
|
* selected "I am a special awards judge", then disable this */
|
|
if($config['judges_specialaward_only_enable'] == 'yes') {
|
|
return "complete";
|
|
}
|
|
|
|
//and they need to rank all of the age categories
|
|
$q=mysql_query("SELECT COUNT(id) AS num FROM projectcategories WHERE year='".$config['FAIRYEAR']."'");
|
|
$r=mysql_fetch_object($q);
|
|
$numcats=$r->num;
|
|
|
|
$q=mysql_query("SELECT COUNT(id) AS num FROM judges_catpref WHERE year='".$config['FAIRYEAR']."' AND judges_id='".$_SESSION['judges_id']."'");
|
|
$r=mysql_fetch_object($q);
|
|
$numprefs=$r->num;
|
|
|
|
if($numcats!=$numprefs)
|
|
return "incomplete";
|
|
|
|
//easiest check here is to check the number of divisions, then check the number of entries
|
|
//that they have in the judges_expertise table. If they are the same, then we're good to go
|
|
//if they are different, they forgot to fill one out (because it only gets inserted if a value)
|
|
//is choosen, and they are always ALL removed before each update
|
|
|
|
$q=mysql_query("SELECT COUNT(id) AS num FROM projectdivisions WHERE year='".$config['FAIRYEAR']."'");
|
|
$r=mysql_fetch_object($q);
|
|
$numdivisions=$r->num;
|
|
|
|
$q=mysql_query("SELECT COUNT(id) AS num FROM judges_expertise WHERE projectdivisions_id IS NOT NULL AND judges_id='".$_SESSION['judges_id']."' AND year='".$config['FAIRYEAR']."'");
|
|
$r=mysql_fetch_object($q);
|
|
$numjudgesexpertise=$r->num;
|
|
|
|
if($numdivisions == $numjudgesexpertise)
|
|
return "complete";
|
|
else
|
|
return "incomplete";
|
|
}
|
|
|
|
function specialawardStatus()
|
|
{
|
|
global $config;
|
|
|
|
/* Complete if:
|
|
* - judge has selected (none) "no special award preferences"
|
|
* - judge has selected (pref) "i would like to specify awards", and has
|
|
* selected between min and max preferences
|
|
* - judge has selected "i am a special awards judge, and has
|
|
* selected an award */
|
|
|
|
$q = mysql_query("SELECT typepref FROM judges WHERE
|
|
id='{$_SESSION['judges_id']}'");
|
|
if(mysql_num_rows($q) != 1) return "incomplete";
|
|
$r = mysql_fetch_object($q);
|
|
|
|
$qq = mysql_query("SELECT COUNT(id) AS num FROM judges_specialaward_sel
|
|
WHERE judges_id='{$_SESSION['judges_id']}'
|
|
AND year={$config['FAIRYEAR']}");
|
|
$rr = mysql_fetch_object($qq);
|
|
$awards_selected = $rr->num;
|
|
|
|
switch($r->typepref) {
|
|
case "speconly": /* Judge for special award */
|
|
/* They may judge more than one award, so don't limit them
|
|
* to one */
|
|
if($awards_selected >= 1) return "complete";
|
|
break;
|
|
|
|
case "pref": /* Special award preferences specified */
|
|
default:
|
|
if( ($awards_selected >= $config['judges_specialaward_min'])
|
|
&&($awards_selected <= $config['judges_specialaward_max']) ){
|
|
return "complete";
|
|
}
|
|
break;
|
|
}
|
|
|
|
return "incomplete";
|
|
}
|
|
|
|
|
|
//authenticate based on email address and registration number from the SESSION
|
|
if(! ($_SESSION['email'] && $_SESSION['judges_id']) )
|
|
{
|
|
header("Location: register_judges.php");
|
|
exit;
|
|
}
|
|
|
|
$q=mysql_query("SELECT * FROM judges WHERE email='".$_SESSION['email']."' AND id='".$_SESSION['judges_id']."' AND deleted='no'");
|
|
echo mysql_error();
|
|
|
|
if(mysql_num_rows($q)==0)
|
|
{
|
|
header("Location: register_judges.php?action=logout");
|
|
exit;
|
|
}
|
|
$judgeinfo=mysql_fetch_object($q);
|
|
|
|
|
|
//only check for password expiry if we are NOT on the change password page, otherwise we create endless redirect loops
|
|
if(!strstr($_SERVER['PHP_SELF'],"register_judges_password.php"))
|
|
{
|
|
//check for expired password
|
|
$q=mysql_query("SELECT id FROM judges WHERE email='".$_SESSION['email']."' AND id='".$_SESSION['judges_id']."' AND deleted='no' AND passwordexpiry<=NOW()");
|
|
if(mysql_num_rows($q))
|
|
{
|
|
$_SESSION['judges_password_expired']=true;
|
|
header("Location: register_judges_password.php");
|
|
}
|
|
}
|
|
|
|
|
|
//ji = judgeinfo record from database (select * from judges where id='whatever')
|
|
function updateJudgeCompleteStatus($ji)
|
|
{
|
|
if( personalStatus()=="complete" &&
|
|
expertiseStatus()=="complete"
|
|
)
|
|
$complete="yes";
|
|
else
|
|
$complete="no";
|
|
|
|
if($complete!=$ji->complete)
|
|
{
|
|
mysql_query("UPDATE judges SET complete='$complete' WHERE id='".$ji->id."'");
|
|
}
|
|
}
|
|
|
|
//finally, if everything else is good, update their 'overall status' if it needs to be
|
|
updateJudgeCompleteStatus($judgeinfo);
|
|
|
|
?>
|