forked from science-ation/science-ation
2eeff8d688
Updated judge.inc.php and volunteer.inc.php - they were previously putting the complete status for a role into the user object as a separate value (eg. $user['judge_status'] = 'complete';). Updated that to put it in the user's role list directly (eg. $user['roles']['judge']['status'] = 'complete'). Updated register_participants_namecheck.php to use the user table and check the session against the normal user_auth_required.
337 lines
9.2 KiB
PHP
337 lines
9.2 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.
|
|
*/
|
|
?>
|
|
<?
|
|
|
|
function registrationFormsReceived($reg_id="")
|
|
{
|
|
if($reg_id) $rid=$reg_id;
|
|
else $rid=$_SESSION['registration_id'];
|
|
$q=mysql_query("SELECT status FROM registrations WHERE id='$rid'");
|
|
$r=mysql_fetch_object($q);
|
|
if($r->status=="complete" || $r->status=="paymentpending")
|
|
return true;
|
|
else
|
|
return false;
|
|
|
|
}
|
|
function registrationDeadlinePassed()
|
|
{
|
|
global $config;
|
|
$q=mysql_query("SELECT (NOW()<'".$config['dates']['regclose']."') AS datecheck");
|
|
$datecheck=mysql_fetch_object($q);
|
|
if($datecheck->datecheck==1)
|
|
return false;
|
|
else
|
|
return true;
|
|
|
|
}
|
|
|
|
function studentStatus($reg_id="")
|
|
{
|
|
global $config, $conference;
|
|
if($config['participant_student_personal']=="yes")
|
|
$required_fields=array("firstname","lastname","address","city","postalcode","phonehome","grade","dateofbirth","schools_id","sex");
|
|
else
|
|
$required_fields=array("firstname","lastname","grade","schools_id");
|
|
|
|
if($config['participant_student_tshirt']=="yes")
|
|
$required_fields[]="tshirt";
|
|
|
|
if($reg_id) $rid=$reg_id;
|
|
else $rid=$_SESSION['registration_id'];
|
|
|
|
$q=mysql_query("SELECT * FROM users WHERE registrations_id='$rid' AND conferences_id='".$conference['id']."'");
|
|
|
|
//if we dont have the minimum, return incomplete
|
|
if(mysql_num_rows($q)<$config['minstudentsperproject'])
|
|
return "incomplete";
|
|
|
|
while($r=mysql_fetch_object($q))
|
|
{
|
|
foreach ($required_fields AS $req)
|
|
{
|
|
if($req=="dateofbirth")
|
|
{
|
|
if($r->$req=="0000-00-00" || !$r->$req)
|
|
return "incomplete";
|
|
}
|
|
else
|
|
{
|
|
if(!$r->$req)
|
|
return "incomplete";
|
|
}
|
|
}
|
|
}
|
|
|
|
//if it made it through without returning incomplete, then we must be complete
|
|
return "complete";
|
|
}
|
|
|
|
function emergencycontactStatus($reg_id="")
|
|
{
|
|
global $conference;
|
|
$required_fields=array("firstname","lastname","relation","phone1");
|
|
|
|
if($reg_id) $rid=$reg_id;
|
|
else $rid=$_SESSION['registration_id'];
|
|
|
|
$sq=mysql_query("SELECT id FROM students WHERE registrations_id='$rid' AND conferences_id='".$conference['id']."'");
|
|
$returnval = 'complete';
|
|
while($sr=mysql_fetch_object($sq))
|
|
{
|
|
$u = user_load($sr->id);
|
|
if(!array_key_exists('emergencycontacts', $u)){
|
|
$returnval = 'incomplete';
|
|
break;
|
|
}
|
|
$oneValid = false;
|
|
foreach($u['emergencycontacts'] as $contact){
|
|
$valid = true;
|
|
foreach($rquired_fields AS $req){
|
|
if(!$contact[$req]) $valid = false;
|
|
break;
|
|
}
|
|
$oneValid |= $valid;
|
|
}
|
|
if(!$oneValid){
|
|
$returval = 'incomplete';
|
|
break;
|
|
}
|
|
}
|
|
|
|
return $returnval;
|
|
}
|
|
|
|
function projectStatus($reg_id="")
|
|
{
|
|
global $config, $conference;
|
|
$required_fields=array("title","projectcategories_id","projectdivisions_id","language","summarycountok");
|
|
|
|
if($config['participant_short_title_enable'] == 'yes')
|
|
$required_fields[] = 'shorttitle';
|
|
if($config['participant_project_summary_wordmin'] > 0)
|
|
$required_fields[] = 'summary';
|
|
if($config['participant_project_table'] == 'yes')
|
|
$requiredFields[] = 'req_table';
|
|
if($config['participant_project_electricity'] == 'yes')
|
|
$requiredFields[] = 'req_electricity';
|
|
|
|
if($reg_id) $rid=$reg_id;
|
|
else $rid=$_SESSION['registration_id'];
|
|
|
|
$q=mysql_query("SELECT * FROM projects WHERE registrations_id='$rid' AND conferences_id='".$conference['id']."'");
|
|
|
|
//if we dont have a project entry yet, return empty
|
|
if(!mysql_num_rows($q))
|
|
return "empty";
|
|
|
|
while($r=mysql_fetch_object($q))
|
|
{
|
|
foreach ($required_fields AS $req)
|
|
{
|
|
if(!$r->$req) {
|
|
return "incomplete";
|
|
}
|
|
}
|
|
}
|
|
|
|
//if it made it through without returning incomplete, then we must be complete
|
|
return "complete";
|
|
}
|
|
|
|
|
|
function mentorStatus($reg_id="")
|
|
{
|
|
global $config, $conference;
|
|
$required_fields=array("firstname","lastname","phone","email","organization","description");
|
|
|
|
if($reg_id) $rid=$reg_id;
|
|
else $rid=$_SESSION['registration_id'];
|
|
|
|
//first check the registrations table to see if 'nummentors' is set, or if its null
|
|
$q=mysql_query("SELECT nummentors FROM registrations WHERE id='$rid' AND conferences_id='".$conference['id']."'");
|
|
$r=mysql_fetch_object($q);
|
|
if($r->nummentors==null)
|
|
return "incomplete";
|
|
|
|
$q=mysql_query("SELECT * FROM mentors WHERE registrations_id='$rid' AND conferences_id='".$conference['id']."'");
|
|
|
|
//if we dont have the minimum, return incomplete
|
|
if(mysql_num_rows($q)<$config['minmentorserproject'])
|
|
return "incomplete";
|
|
|
|
while($r=mysql_fetch_object($q))
|
|
{
|
|
foreach ($required_fields AS $req)
|
|
{
|
|
if(!$r->$req)
|
|
{
|
|
return "incomplete";
|
|
}
|
|
}
|
|
}
|
|
|
|
//if it made it through without returning incomplete, then we must be complete
|
|
return "complete";
|
|
|
|
}
|
|
|
|
function safetyStatus($reg_id="")
|
|
{
|
|
global $conference;
|
|
|
|
if($reg_id) $rid=$reg_id;
|
|
else $rid=$_SESSION['registration_id'];
|
|
|
|
//grab all of their answers
|
|
$q=mysql_query("SELECT * FROM safety WHERE registrations_id='$rid'");
|
|
while($r=mysql_fetch_object($q))
|
|
{
|
|
$safetyanswers[$r->safetyquestions_id]=$r->answer;
|
|
}
|
|
|
|
//now grab all the questions
|
|
$q=mysql_query("SELECT * FROM safetyquestions WHERE conferences_id='".$conference['id']."' ORDER BY ord");
|
|
while($r=mysql_fetch_object($q))
|
|
{
|
|
if($r->required=="yes" && !$safetyanswers[$r->id])
|
|
{
|
|
return "incomplete";
|
|
}
|
|
}
|
|
return "complete";
|
|
|
|
}
|
|
|
|
function spawardStatus($reg_id="")
|
|
{
|
|
global $conference;
|
|
if($reg_id) $rid=$reg_id;
|
|
else $rid=$_SESSION['registration_id'];
|
|
|
|
$q=mysql_query("SELECT * FROM projects WHERE registrations_id='$rid'");
|
|
$project=mysql_fetch_object($q);
|
|
|
|
/* We want this query to get any awards with a NULL award_awards_id */
|
|
$awardsq=mysql_query("SELECT
|
|
projects.id AS projects_id
|
|
FROM
|
|
project_specialawards_link,
|
|
projects
|
|
WHERE
|
|
project_specialawards_link.projects_id='".$project->id."'
|
|
AND projects.conferences_id='".$conference['id']."'
|
|
");
|
|
|
|
if(mysql_num_rows($awardsq))
|
|
return "complete";
|
|
else
|
|
return "incomplete";
|
|
}
|
|
|
|
function tourStatus($reg_id="")
|
|
{
|
|
/************************************************************************
|
|
FIXME
|
|
This function depends on the tours_choice table, which currently links to the students table.
|
|
tours_choice needs to be updated to link to users.id instead (and the conferences_id column
|
|
can be dropped after all).
|
|
It's not getting used this year anyway, so meh.
|
|
The next line here should then be removed, and the code modified accordingly.
|
|
************************************************************************/
|
|
return 'complete'; // delete me
|
|
|
|
|
|
global $config, $conference;
|
|
|
|
if($reg_id) $rid=$reg_id;
|
|
else $rid=$_SESSION['registration_id'];
|
|
|
|
/* Get the students for this project */
|
|
$q=mysql_query("SELECT * FROM students WHERE registrations_id='$rid' AND conferences_id='".$conference['id']."'");
|
|
$num_found = mysql_num_rows($q);
|
|
|
|
$ret = "complete";
|
|
while($s=mysql_fetch_object($q)) {
|
|
//grab all of their tour prefs
|
|
$sid = $s->id;
|
|
$qq=mysql_query("SELECT * FROM tours_choice WHERE students_id='$sid' and conferences_id='{$conference['id']}' ORDER BY rank");
|
|
|
|
$n_tours = mysql_num_rows($qq);
|
|
if($n_tours > 0) {
|
|
/* See if there's a rank 0 tour (rank 0 == their tour assignment) */
|
|
$i = mysql_fetch_object($qq);
|
|
if($i->rank == 0) {
|
|
/* Yes, there is, no matter what, this student's tour
|
|
* selection is complete. */
|
|
continue;
|
|
}
|
|
}
|
|
|
|
/* Else, they haven't been assigned a tour, see if they've made
|
|
* the appropraite selection(s) */
|
|
if( ($n_tours >= $config['tours_choices_min']) && ($n_tours <= $config['tours_choices_max']) ){
|
|
continue;
|
|
}
|
|
$ret = "incomplete";
|
|
break;
|
|
}
|
|
return $ret;
|
|
}
|
|
|
|
function namecheckStatus($reg_id="")
|
|
{
|
|
global $conference;
|
|
if($reg_id) $rid=$reg_id;
|
|
else $rid=$_SESSION['registration_id'];
|
|
|
|
$q = mysql_query("SELECT namecheck_complete FROM users WHERE registrations_id = $rid AND conferences_id = '{$conference['id']}'");
|
|
|
|
while($s=mysql_fetch_object($q)) {
|
|
if($s->namecheck_complete == 'no') {
|
|
return 'incomplete';
|
|
}
|
|
}
|
|
return 'complete';
|
|
}
|
|
|
|
function participant_status_update(&$u){
|
|
$regId = $u['registrations_id'];
|
|
if( namecheckStatus($regId) == 'complete' &&
|
|
tourStatus($regId) == 'complete' &&
|
|
spawardStatus($regId) == 'complete' &&
|
|
safetyStatus($regId) == 'complete' &&
|
|
mentorStatus($regId) == 'complete' &&
|
|
projectStatus($regId) == 'complete' &&
|
|
emergencycontactStatus($regId) == 'complete' &&
|
|
studentStatus($regId) == 'complete' &&
|
|
registrationFormsReceived($regId) // <-- returns true/false, not text
|
|
){
|
|
$u['roles']['participant']['complete'] = 'yes';
|
|
}else{
|
|
$u['roles']['participant']['complete'] = 'no';
|
|
}
|
|
return ($u['roles']['participant']['complete'] == 'yes') ? 'complete' : 'incomplete';
|
|
}
|