science-ation/projects.inc.php
james 953e95ac3e Update student/project editor for admin
Fix the registration_list.php to work again - temporarily disable "create new project" and the ability to ADD students to an existing project
2011-03-04 21:52:37 +00:00

352 lines
10 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 getProjectsEligibleForAward($award_id)
{
global $conference;
$prjq=mysql_query("SELECT
award_awards.id,
award_awards_projectcategories.projectcategories_id,
award_awards_projectdivisions.projectdivisions_id,
projects.projectnumber,
projects.title,
projects.id AS projects_id,
projects.fairs_id
FROM
award_awards,
award_awards_projectcategories,
award_awards_projectdivisions,
projects
WHERE
award_awards.id='$award_id'
AND award_awards.id=award_awards_projectcategories.award_awards_id
AND award_awards.id=award_awards_projectdivisions.award_awards_id
AND projects.projectcategories_id=award_awards_projectcategories.projectcategories_id
AND projects.projectdivisions_id=award_awards_projectdivisions.projectdivisions_id
AND projects.projectnumber is not null
AND projects.conferences_id='".$conference['id']."'
ORDER BY
projectsort
");
$projects=array();
while($prjr=mysql_fetch_object($prjq))
{
$projects[$prjr->projectnumber]=array(
"id"=>$prjr->projects_id,
"projectnumber"=>$prjr->projectnumber,
"title"=>$prjr->title,
"fairs_id"=>$prjr->fairs_id
);
}
return $projects;
}
function getProjectsEligibleOrNominatedForAwards($awards_ids_array)
{
$projects=array();
foreach($awards_ids_array AS $award_id)
{
$q=mysql_query("SELECT award_types.type FROM award_awards, award_types WHERE award_awards.id='$award_id' AND award_awards.award_types_id=award_types.id");
$r=mysql_fetch_object($q);
$awardprojects=array();
//for special awards, we only want the ones that were nominated for it.
//for everything else, we weant all the eligible projects
if($r->type=="Special")
$awardprojects=getProjectsNominatedForSpecialAward($award_id);
else
$awardprojects=getProjectsEligibleForAward($award_id);
// $projects[$award_id]=$awardprojects;
//this will just overwrite ones that already exist, but still keep things in order because the main key is the projectnumber (i hope)
foreach($awardprojects AS $proj)
$projects[$proj['projectnumber']]=$proj;
}
return $projects;
}
function getSpecialAwardsEligibleForProject($projectid)
{
global $conference;
$awardsq=mysql_query("SELECT
award_awards.id,
award_awards.name,
award_awards.criteria,
award_awards_projectcategories.projectcategories_id,
award_awards_projectdivisions.projectdivisions_id,
projects.id AS projects_id,
award_awards.self_nominate
FROM
award_awards,
award_awards_projectcategories,
award_awards_projectdivisions,
award_types,
projects
WHERE
award_types.type='Special'
AND award_types.id=award_awards.award_types_id
AND award_awards.id=award_awards_projectcategories.award_awards_id
AND award_awards.id=award_awards_projectdivisions.award_awards_id
AND projects.projectcategories_id=award_awards_projectcategories.projectcategories_id
AND projects.projectdivisions_id=award_awards_projectdivisions.projectdivisions_id
AND award_awards.id is not null
AND projects.conferences_id='".$conference['id']."'
AND projects.id='$projectid'
AND award_types.conferences_id='".$conference['id']."'
AND award_awards.conferences_id='".$conference['id']."'
ORDER BY
award_awards.name
");
$awards=array();
echo mysql_error();
while($r=mysql_fetch_object($awardsq))
{
$awards[$r->id]=array(
"id"=>$r->id,
"criteria"=>$r->criteria,
"name"=>$r->name,
"self_nominate"=>$r->self_nominate
);
}
return $awards;
}
function getSpecialAwardsNominatedForProject($projectid)
{
global $conference;
$awardsq=mysql_query("SELECT
award_awards.id,
award_awards.name,
award_awards.criteria,
projects.id AS projects_id,
projects.fairs_id
FROM
award_awards,
project_specialawards_link,
projects
WHERE
project_specialawards_link.projects_id='$projectid'
AND project_specialawards_link.award_awards_id=award_awards.id
AND projects.conferences_id='".$conference['id']."'
AND projects.id='$projectid'
ORDER BY
award_awards.name
");
$awards=array();
echo mysql_error();
while($r=mysql_fetch_object($awardsq))
{
$awards[$r->id]=array(
"id"=>$r->id,
"criteria"=>$r->criteria,
"name"=>$r->name,
"fairs_id"=>$r->fairs_id
);
}
return $awards;
}
function getNominatedForNoSpecialAwardsForProject($projectid)
{
global $conference;
$awardsq=mysql_query("SELECT
projects_id
FROM
project_specialawards_link
WHERE
projects_id='$projectid'
AND conferences_id='{$conference['id']}'
AND award_awards_id=-1
");
if(mysql_num_rows($awardsq) == 1)
return true;
else
return false;
}
function getProjectsNominatedForSpecialAward($award_id)
{
global $config, $conference;
//if they dont use special award nominations, then we will instead get all of the projects that
//are eligible for the award, instead of nominated for it.
if($config['specialawardnomination']!="none")
{
$prjq=mysql_query("SELECT
projects.projectnumber,
projects.title,
projects.id AS projects_id
FROM
project_specialawards_link,
projects
WHERE
project_specialawards_link.award_awards_id='$award_id'
AND project_specialawards_link.projects_id=projects.id
AND projects.projectnumber is not null
AND projects.conferences_id='".$conference['id']."'
ORDER BY
projectsort
");
$projects=array();
while($prjr=mysql_fetch_object($prjq))
{
$projects[$prjr->projectnumber]=array(
"id"=>$prjr->projects_id,
"projectnumber"=>$prjr->projectnumber,
"title"=>$prjr->title
);
}
//return the projects that have self-nominated themselves for the award
return $projects;
}
else
{
//return the projects that are eligible for the award instead
return getProjectsEligibleForAward($award_id);
}
}
function getSpecialAwardsNominatedByRegistrationID($id)
{
global $conference;
$awardq=mysql_query("SELECT
award_awards.id,
award_awards.name,
award_awards_projectcategories.projectcategories_id,
award_awards_projectdivisions.projectdivisions_id,
projects.id AS projects_id
FROM
award_awards,
award_awards_projectcategories,
award_awards_projectdivisions,
projects
WHERE
award_awards.id='$award_id'
AND award_awards.id=award_awards_projectcategories.award_awards_id
AND award_awards.id=award_awards_projectdivisions.award_awards_id
AND projects.projectcategories_id=award_awards_projectcategories.projectcategories_id
AND projects.projectdivisions_id=award_awards_projectdivisions.projectdivisions_id
AND projects.projectnumber is not null
AND projects.conferences_id='".$conference['id']."'
ORDER BY
projectsort
");
$projects=array();
while($prjr=mysql_fetch_object($prjq))
{
$projects[$prjr->projectnumber]=array(
"id"=>$prjr->projects_id,
"projectnumber"=>$prjr->projectnumber,
"title"=>$prjr->title
);
}
return $projects;
}
function project_load($pid)
{
/* Load this project */
$q = mysql_query("SELECT * FROM projects WHERE id='$pid'");
$proj = mysql_fetch_array($q);
/* Load the students */
$q = mysql_query("SELECT users.*,schools.school FROM users
LEFT JOIN schools ON schools.id=students.schools_id
WHERE registrations_id='{$proj['registrations_id']}' AND users.conferences_id='{$proj['conferences_id']}' ORDER BY users.id");
$proj['num_students'] = 0;
while($s = mysql_fetch_assoc($q)) {
$proj['num_students']++;
$proj['student'][] = $s;
}
return $proj;
}
function getProjectCategory($registrations_id){
global $conference;
$q=mysql_query("SELECT MAX(grade) AS maxgrade FROM users WHERE registrations_id='$registrations_id'");
$gradeinfo=mysql_fetch_object($q);
$projectcategories_id = null;
//now lets grab all the age categories, so we can choose one based on the max grade
$q=mysql_query("SELECT * FROM projectcategories WHERE conferences_id='".$conference['id']."' ORDER BY id");
while(($r=mysql_fetch_object($q)) && $projectcategories_id === null) {
if($gradeinfo->maxgrade >= $r->mingrade && $gradeinfo->maxgrade <= $r->maxgrade) {
$projectcategories_id = $r->id;
}
}
return $projectcategories_id;
}
function getProjectId($registrations_id){
$returnval = null;
$q = mysql_query("SELECT id FROM projects WHERE registrations_id = " . intval($registrations_id));
$row = mysql_fetch_assoc($q);
if($row){
$returnval = $row['id'];
}
return $returnval;
}
function getAwardListing($project_id){
$returnval = array();
$eligibleAwards = getSpecialAwardsEligibleForProject($project_id);
$nominatedAwards = getSpecialAwardsNominatedForProject($project_id);
$eligibleAwards = array_merge(array(array( 'id'=> -1,
'name' => "I do not wish to self-nominate for any special awards",
'criteria' => "Select this option if you do not wish to self-nominate you project for any special awards.<hr>",
'self_nominate' => 'yes')),
$eligibleAwards);
/* See if they have the -1 award selected */
$noawards = getNominatedForNoSpecialAwardsForProject($project_id);
// echo "noawards=$noawards";
if($noawards == true) {
// echo "marging -1 award";
$nominatedAwards = array_merge(array(array('id' => '-1')), $nominatedAwards);
}
$nominatedawards_list=array();
foreach($nominatedAwards AS $naward){
$nominatedawards_list[] = $naward['id'];
}
foreach($eligibleAwards AS $eaward){
if(in_array($eaward['id'],$nominatedawards_list))
$eaward['selected']=true;
else
$eaward['selected']=false;
$returnval[] = $eaward;
}
return $returnval;
}
?>