diff --git a/admin/winners.php b/admin/winners.php
index cbce6c9c..c77d2a10 100644
--- a/admin/winners.php
+++ b/admin/winners.php
@@ -22,365 +22,565 @@
*/
?>
- require("../common.inc.php");
- require_once("../user.inc.php");
- require("../projects.inc.php");
- user_auth_required('committee', 'admin');
+require_once('../common.inc.php');
+require_once('../user.inc.php');
+require_once('../projects.inc.php');
+$auth_type = user_auth_required(array('fair','committee'), 'admin');
+$award_awards_id = intval($_GET['award_awards_id']);
+$action = $_GET['action'];
- if($_GET['sponsors_id']) $sponsors_id=$_GET['sponsors_id'];
- else if($_POST['sponsors_id']) $sponsors_id=$_POST['sponsors_id'];
-
- if($_GET['award_types_id']) $award_types_id=$_GET['award_types_id'];
- else if($_POST['award_types_id']) $award_types_id=$_POST['award_types_id'];
-
-
-
-if($_GET['edit']) $edit=intval($_GET['edit']);
-if($_POST['edit']) $edit=intval($_POST['edit']);
-
-if($_GET['action']) $action=$_GET['action'];
-if($_POST['action']) $action=$_POST['action'];
-
-if($action=="addwinner")
-{
- if($_POST['winner'])
- {
- //first check how many we are allowed to have
- $q=mysql_query("SELECT number FROM award_prizes WHERE id='".$_POST['prize_id']."'");
- echo mysql_Error();
- $r=mysql_fetch_object($q);
- $number=$r->number;
-
- $q=mysql_query("SELECT COUNT(*) AS count FROM winners WHERE awards_prizes_id='".$_POST['prize_id']."'");
- echo mysql_Error();
- $r=mysql_fetch_object($q);
- $count=$r->count;
-
- if($count<$number)
- {
- mysql_query("INSERT INTO winners (awards_prizes_id,projects_id,year) VALUES ('".$_POST['prize_id']."','".$_POST['winner']."','".$config['FAIRYEAR']."')");
- $notice = 'added';
- }
- else
- {
- $notice = 'nomore';
- $notice_data = array($number);
- }
- }
- $action="edit";
+/* Load fairs */
+$fairs = array();
+$q = mysql_query("SELECT * FROM fairs WHERE type='feeder' ORDER BY name");
+while(($f = mysql_fetch_assoc($q))) {
+ $fairs[$f['id']] = $f;
}
-if($action=="delete")
-{
- if($_GET['prize_id'] && $_GET['project_id'])
- {
- mysql_query("DELETE FROM winners WHERE awards_prizes_id='".$_GET['prize_id']."' AND projects_id='".$_GET['project_id']."'");
- $notice = 'removed';
+
+switch($action) {
+case 'addwinner':
+ $prize_id = intval($_GET['prize_id']);
+ $projects_id = intval($_GET['projects_id']);
+
+ if(!$prize_id || !$projects_id) {
+ error_("Illegal Assignment");
+ exit;
}
- $action="edit";
-}
+
+ //first check how many we are allowed to have
+ $q=mysql_query("SELECT number FROM award_prizes WHERE id='$prize_id'");
+ echo mysql_error();
+ $r=mysql_fetch_assoc($q);
+ $number=$r['number'];
-if($action=="edit" && $edit)
-{
- send_header("Choose Projects",
- array('Committee Main' => 'committee_main.php',
- 'Administration' => 'admin/index.php',
- 'Enter Winning Projects' => 'admin/winners.php'),
- "enter_winning_projects"
- );
+ /* Get the award info */
+ $q = mysql_query("SELECT * FROM award_awards WHERE id='$award_awards_id'");
+ echo mysql_error();
+ $a=mysql_fetch_assoc($q);
- switch($notice) {
- case 'removed':
- echo happy(i18n("Winning project removed"));
- break;
- case 'nomore':
- echo error(i18n("This prize cannot accept any more winners. Maximum: %1",$notice_data));
- break;
- case 'added':
- echo happy(i18n("Winning project added"));
- break;
+ /* Get the project */
+ $q = mysql_query("SELECT fairs_id FROM projects WHERE id='$projects_id'");
+ echo mysql_error();
+ $p=mysql_fetch_assoc($q);
+ $fairs_id = $p['fairs_id'];
+
+ /* Quick sanity check don't let a fair user do an assignment for someone not
+ * in their fair */
+ if($auth_type == 'fair' && $fairs_id != $_SESSION['fairs_id']) {
+ error_("Illegal Assignemnt");
+ exit;
}
+ if($a['per_fair'] == 'yes') {
+ /* Count is the number of this fair already assigned */
+ $q=mysql_query("SELECT COUNT(*) AS count FROM winners
+ LEFT JOIN projects ON winners.projects_id=projects.id
+ WHERE
+ projects.fairs_id='$fairs_id'
+ awards_prizes_id='$prize_id'");
+ echo mysql_error();
+ $r=mysql_fetch_assoc($q);
+ $count=$r['count'];
+ } else {
+ /* Count is the total number assigned */
+ $q=mysql_query("SELECT COUNT(*) AS count FROM winners WHERE awards_prizes_id='$prize_id'");
+ echo mysql_error();
+ $r=mysql_fetch_assoc($q);
+ $count=$r['count'];
+ }
+
+ if($count<$number) {
+ mysql_query("INSERT INTO winners (awards_prizes_id,projects_id,year) VALUES ('$prize_id','$projects_id','{$config['FAIRYEAR']}')");
+ happy_("Winning project added");
+ } else {
+ error_("This prize cannot accept any more winners. Maximum: %1",$number);
+ }
+
+ exit;
+
+case 'deletewinner':
+ $prize_id = intval($_GET['prize_id']);
+ $projects_id = intval($_GET['projects_id']);
+
+ if($prize_id && $projects_id) {
+ mysql_query("DELETE FROM winners WHERE awards_prizes_id='$prize_id' AND projects_id='$projects_id'");
+ happy_("Winning project removed");
+ }
+ exit;
+case 'award_load':
+ $fairs_id = intval($_GET['fairs_id']);
+ /* Load the award */
$q=mysql_query("SELECT
award_awards.id,
award_awards.name,
award_awards.criteria,
award_awards.order AS awards_order,
+ award_awards.per_fair,
award_types.type
FROM
- award_awards,
+ award_awards ,
award_types
WHERE
- award_awards.year='".$config['FAIRYEAR']."'
+ award_awards.year='{$config['FAIRYEAR']}'
AND award_awards.award_types_id=award_types.id
- AND award_awards.id='$edit'
+ AND award_types.year=award_awards.year
+ AND award_awards.id='$award_awards_id'
");
echo mysql_error();
- if($r=mysql_fetch_object($q))
- {
-
- echo "
";
- //get the projets that are eligible for the award, given the award ID ($r->id)
- if($r->type=="Special" && !$_GET['eligible'])
- {
- $projects=getProjectsNominatedForSpecialAward($r->id);
- }
- else
- $projects=getProjectsEligibleForAward($r->id);
-
- $winq=mysql_query("SELECT
- winners.projects_id
- FROM
- winners,award_prizes,award_awards
- WHERE
- award_awards.id='$r->id'
- AND award_prizes.award_awards_id=award_awards.id
- AND winners.awards_prizes_id=award_prizes.id
- ORDER BY
- projects_id
- ");
- echo mysql_error();
- $alreadywinners=array();
- while($winr=mysql_fetch_object($winq))
- {
- $alreadywinners[]=$winr->projects_id;
- }
- //print_r($alreadywinners);
- /*
- echo "projects:";
- echo nl2br(print_r($projects,true));
- echo "
";
- */
-
-// echo "
";
- echo "{$r->type} - {$r->name}
";
- echo "{$r->criteria}
";
-
- $pq=mysql_query("SELECT
- award_prizes.prize,
- award_prizes.number,
- award_prizes.id,
- award_prizes.cash,
- award_prizes.scholarship,
- winners.projects_id,
- projects.projectnumber,
- projects.title
- FROM
- award_prizes
- LEFT JOIN winners ON winners.awards_prizes_id=award_prizes.id
- LEFT JOIN projects ON projects.id=winners.projects_id
- WHERE
- award_awards_id='$r->id'
- AND award_prizes.year='".$config['FAIRYEAR']."'
- ORDER BY
- `order`");
- echo mysql_error();
- $prevprizeid=-1;
- while($pr=mysql_fetch_object($pq))
- {
- if($prevprizeid!=$pr->id)
- {
- echo "
";
- echo " ";
- echo " ";
- echo "";
- echo "$pr->prize";
- if($pr->cash || $pr->scholarship)
- {
- echo " (";
- if($pr->cash && $pr->scholarship)
- echo "\$$pr->cash cash / \$$pr->scholarship scholarship";
- else if($pr->cash)
- echo "\$$pr->cash cash";
- else if($pr->scholarship)
- echo "\$$pr->scholarship scholarship";
- echo ")";
-
- }
-
- $cq=mysql_query("SELECT COUNT(*) AS count FROM winners WHERE awards_prizes_id='$pr->id'");
- echo mysql_Error();
- $cr=mysql_fetch_object($cq);
- $count=$cr->count;
-
- if($count<$pr->number) $color="red"; else $color="green";
- echo " [".$count."/".$pr->number."]";
- echo "";
- $prevprizeid=$pr->id;
-
- if($count<$pr->number)
- {
- echo "";
- echo "Show All Eligible";
- echo "
";
- }
- else
- echo "
";
-
- }
-
- if($pr->projectnumber)
- {
- echo " ";
- echo " ";
- echo " ";
- echo " ";
- echo "id&project_id=$pr->projects_id\">
";
- echo " ($pr->projectnumber) $pr->title";
- echo "
";
- }
- }
-
+ if(mysql_num_rows($q) != 1) {
+ echo i18n("Invalid award to load $award_awards_id");
+ exit;
}
-}
-else
-{
- send_header("Enter Winning Projects",
- array('Committee Main' => 'committee_main.php',
- 'Administration' => 'admin/index.php'),
- "enter_winning_projects"
- );
+ $r=mysql_fetch_assoc($q);
+ print_award($r, $fairs_id);
+ exit;
- switch($notice) {
- case 'removed':
- echo happy(i18n("Winning project removed"));
- break;
- case 'nomore':
- echo error(i18n("This prize cannot accept any more winners. Maximum: %1",$notice_data));
- break;
- case 'added':
- echo happy(i18n("Winning project added"));
- break;
- }
+case 'edit_load':
+ $fairs_id = intval($_GET['fairs_id']);
+
+ /* Force the fair user to only edit their fair */
+// if($auth_type == 'fair') $fairs_id = $_SESSION['fairs_id'];
+ /* Load the award */
$q=mysql_query("SELECT
award_awards.id,
award_awards.name,
+ award_awards.criteria,
award_awards.order AS awards_order,
- award_types.type,
- sponsors.organization
+ award_awards.per_fair,
+ award_types.type
FROM
- award_awards,
- award_types,
- sponsors
+ award_awards ,
+ award_types
WHERE
- award_awards.year='".$config['FAIRYEAR']."'
+ award_awards.year='{$config['FAIRYEAR']}'
AND award_awards.award_types_id=award_types.id
- AND award_types.year='".$config['FAIRYEAR']."'
- AND award_awards.sponsors_id=sponsors.id
- ORDER BY awards_order");
+ AND award_types.year=award_awards.year
+ AND award_awards.id='$award_awards_id'
+ ");
echo mysql_error();
- if(mysql_num_rows($q))
- {
- echo "
";
- echo i18n("Choose an award to assign winners");
- echo "
";
- echo "
";
- while($r=mysql_fetch_object($q))
- {
- echo "id\">";
-// echo "
";
- echo " $r->type - \n";
- echo " $r->name \n";
- echo "";
- echo " (".$r->organization.")
";
+ if(mysql_num_rows($q) != 1) {
+ echo i18n("Invalid award to edit $award_awards_id");
+ exit;
+ }
- $pq=mysql_query("SELECT
- award_prizes.prize,
- award_prizes.number,
- award_prizes.id,
- award_prizes.cash,
- award_prizes.scholarship,
- winners.projects_id,
- projects.projectnumber,
- projects.title
- FROM
- award_prizes
- LEFT JOIN winners ON winners.awards_prizes_id=award_prizes.id
- LEFT JOIN projects ON projects.id=winners.projects_id
- WHERE
- award_awards_id='$r->id'
- AND award_prizes.year='".$config['FAIRYEAR']."'
- ORDER BY
- `order`");
- echo mysql_error();
- $prevprizeid=-1;
- while($pr=mysql_fetch_object($pq))
- {
- if($prevprizeid!=$pr->id)
- {
- echo " ";
- echo " ";
- echo "";
- echo "$pr->prize";
- if($pr->cash || $pr->scholarship)
- {
- echo " (";
- if($pr->cash && $pr->scholarship)
- echo "\$$pr->cash cash / \$$pr->scholarship scholarship";
- else if($pr->cash)
- echo "\$$pr->cash cash";
- else if($pr->scholarship)
- echo "\$$pr->scholarship scholarship";
- echo ")";
-
- }
- $cq=mysql_query("SELECT COUNT(*) AS count FROM winners WHERE awards_prizes_id='$pr->id'");
- echo mysql_Error();
- $cr=mysql_fetch_object($cq);
- $count=$cr->count;
+ $r=mysql_fetch_assoc($q);
- if($count<$pr->number) $color="red"; else $color="green";
- echo " [".$count."/".$pr->number."]";
- echo "";
- echo "
";
- $prevprizeid=$pr->id;
- }
+ $editor_data = array();
- if($pr->projectnumber)
- {
- echo " ";
- echo " ";
- echo " ";
- echo " ";
- echo "($pr->projectnumber) $pr->title";
- echo "
";
- }
- else
- {
- /*
- echo " ";
- echo " ";
- echo " ";
- echo " ";
- echo "No winner(s) specified";
- */
- }
- }
- echo "
";
+ /* Load projects */
+ if($r['type'] == 'Special') {
+ $editor_data['projects_nominated'] = getProjectsNominatedForSpecialAward($r['id']);
+ $editor_data['disable_nominated'] = false;
+ } else {
+ $editor_data['projects_nominated'] = array();
+ $editor_data['disable_nominated'] = true;
+ }
+ $editor_data['projects_eligible'] = getProjectsEligibleForAward($r['id']);
+
+ /* Print the award header */
+ echo "
";
+ if($fairs_id) echo "Winners from $fairs_id:{$fairs[$fairs_id]['name']}
";
+ echo "{$r['type']} - {$r['name']}
";
+ echo "{$r['criteria']}
";
+
+ /* Print the award with editor */
+ print_award($r, $fairs_id, true, $editor_data);
+ exit;
+}
+
+
+if($auth_type == 'fair') {
+ send_header("Enter Winning Projects",
+ array('Science Fair Main' => 'fair_main.php'),
+ "enter_winning_projects"
+ );
+} else {
+ send_header("Enter Winning Projects",
+ array('Committee Main' => 'committee_main.php',
+ 'Administration' => 'admin/index.php'),
+ "enter_winning_projects"
+ );
+}
+
+?>
+
+
+
+
+
+
+$fair_join = '';
+$fair_where = '';
+if($auth_type == 'fair') {
+ /* Join to fairs_award_link, and only list awards that are set
+ * as "upload winners" for this fair */
+ $fair_join = 'LEFT JOIN fairs_awards_link ON fairs_awards_link.award_awards_id=award_awards.id';
+ $fair_where = "AND fairs_awards_link.upload_winners='yes'
+ AND fairs_awards_link.fairs_id='{$_SESSION['fairs_id']}'";
+}
+$q=mysql_query("SELECT
+ award_awards.id,
+ award_awards.name,
+ award_awards.order AS awards_order,
+ award_awards.per_fair,
+ award_types.type,
+ sponsors.organization
+ FROM
+ award_awards $fair_join,
+ award_types,
+ sponsors
+ WHERE
+ award_awards.year='{$config['FAIRYEAR']}'
+ AND award_awards.award_types_id=award_types.id
+ AND award_types.year='{$config['FAIRYEAR']}'
+ AND award_awards.sponsors_id=sponsors.id
+ $fair_where
+ ORDER BY awards_order");
+
+echo mysql_error();
+
+if(mysql_num_rows($q) == 0) {
+ echo i18n('No awards to display.');
+ send_footer();
+ exit;
+}
+
+echo "
";
+echo i18n("Choose an award to assign winners");
+echo "
";
+echo "
";
+
+$fairs_id = ($auth_type == 'fair') ? $_SESSION['fairs_id'] : 0;
+
+while($r=mysql_fetch_assoc($q)) {
+ if($r['per_fair'] == 'yes' && $auth_type != 'fair') {
+?> =$r['type']?> - =$r['name']?>
+ (=$r['organization']?>)
+
+ foreach($fairs as $fid=>$f) {
+?>
+ =$f['name']?>
+
+
+ print_award($r, $f['id']);
+ echo "
";
+ }
+ } else {
+?>
+ =$r['type']?> - =$r['name']?>
+ (=$r['organization']?>)
+
+ print_award($r, $fairs_id);
+ echo "
";
+ }
+ echo '
';
+}
+
+
+
+function print_award(&$r, $fairs_id, $editor=false, $editor_data=array())
+{
+ global $config, $auth_type;
+
+// echo "fair=$fairs_id";
+
+ /* Setup the winner filter, we don't want to restrict this
+ * to a specific fair for the 'fair' user */
+ $fairs_where = '';
+ if($r['per_fair'] == 'yes') {
+ if($fairs_id == 0) {
+ echo "blank fairs_id for per-fair award. bug.\n";
+ exit;
+ }
+ /* For per-fair awards, filter the results */
+ $fairs_where = "AND projects.fairs_id='$fairs_id'";
+ }
+
+ /* Force the 'fair' user to only edit their own fair */
+ if($auth_type == 'fair') $fairs_id = $_SESSION['fairs_id'];
+
+
+ /* Load prizes for this award */
+ $q=mysql_query("SELECT
+ award_prizes.prize,
+ award_prizes.number,
+ award_prizes.id,
+ award_prizes.cash,
+ award_prizes.scholarship
+ FROM
+ award_prizes
+ WHERE
+ award_awards_id='{$r['id']}'
+ AND award_prizes.year='{$config['FAIRYEAR']}'
+ ORDER BY
+ `order`");
+ echo mysql_error();
+
+ while($pr=mysql_fetch_object($q)) {
+
+ if($editor == true) {
+ echo '
';
}
+ echo " {$pr->prize}";
+ if($pr->cash || $pr->scholarship) {
+ echo " (";
+ if($pr->cash && $pr->scholarship)
+ echo "\${$pr->cash} cash / \${$pr->scholarship} scholarship";
+ else if($pr->cash)
+ echo "\${$pr->cash} cash";
+ else if($pr->scholarship)
+ echo "\${$pr->scholarship} scholarship";
+ echo ")";
+ }
+
+ /* Load winners for this prize */
+ $cq=mysql_query("SELECT winners.projects_id,
+ projects.projectnumber,
+ projects.title,
+ projects.fairs_id
+ FROM
+ winners
+ LEFT JOIN projects ON projects.id=winners.projects_id
+ WHERE
+ winners.awards_prizes_id='{$pr->id}'
+ $fairs_where ");
+ echo mysql_error();
+ $count = mysql_num_rows($cq);
+// echo "winners=$count";
+
+ /* Print count */
+ $colour = ($count < $pr->number) ? 'red' : 'green';
+ echo " [$count/{$pr->number}]";
+ echo "";
+ echo "
";
+
+
+ /* List current winners for this prize */
+ $winners = array();
+ while($w = mysql_fetch_assoc($cq)) {
+ if($w['projectnumber']) {
+ echo " ";
+ if($editor == true) {
+ /* Print the delete X before the project */
+ if($auth_type == 'fair' && $w['fairs_id'] != $fairs_id) {
+ /* show a blank so everything lines up */
+ echo ' ';
+ } else {
+ echo "id},{$w['projects_id']});return false;\" href=\"#\" >";
+ echo "
";
+ echo ' ';
+ }
+ $winners[] = $w['projects_id'];
+ }
+ echo "({$w['projectnumber']}) {$w['title']}";
+ echo "
";
+ } else {
+ /* echo " ";
+ echo "No winner(s) specified"; */
+ }
+ }
+
+ /* Unlist all the winners we just printed from ALL lists */
+ if($editor == true) {
+ echo "";
+ }
+
+ /* Print the select box if we need it */
+ if($editor == true && $count < $pr->number) {
+ $n_nom = 0;
+ $n_eli = 0;
+?>
+
+
+
+
+
+ }
}
}
- send_footer();
+send_footer();
?>
diff --git a/projects.inc.php b/projects.inc.php
index dfd14e2c..3fca08b7 100644
--- a/projects.inc.php
+++ b/projects.inc.php
@@ -32,7 +32,8 @@ function getProjectsEligibleForAward($award_id)
award_awards_projectdivisions.projectdivisions_id,
projects.projectnumber,
projects.title,
- projects.id AS projects_id
+ projects.id AS projects_id,
+ projects.fairs_id
FROM
award_awards,
award_awards_projectcategories,
@@ -55,7 +56,8 @@ function getProjectsEligibleForAward($award_id)
$projects[$prjr->projectnumber]=array(
"id"=>$prjr->projects_id,
"projectnumber"=>$prjr->projectnumber,
- "title"=>$prjr->title
+ "title"=>$prjr->title,
+ "fairs_id"=>$prjr->fairs_id
);
}
return $projects;
@@ -143,7 +145,8 @@ function getSpecialAwardsNominatedForProject($projectid)
award_awards.id,
award_awards.name,
award_awards.criteria,
- projects.id AS projects_id
+ projects.id AS projects_id,
+ projects.fairs_id
FROM
award_awards,
project_specialawards_link,
@@ -163,7 +166,8 @@ function getSpecialAwardsNominatedForProject($projectid)
$awards[$r->id]=array(
"id"=>$r->id,
"criteria"=>$r->criteria,
- "name"=>$r->name
+ "name"=>$r->name,
+ "fairs_id"=>$r->fairs_id
);
}
return $awards;
diff --git a/theme/classic/sfiab.css b/theme/classic/sfiab.css
index b3da0463..3928a549 100644
--- a/theme/classic/sfiab.css
+++ b/theme/classic/sfiab.css
@@ -418,3 +418,27 @@ div.ui-tabs ul.ui-tabs-nav {
.ui-datepicker {
z-index: 1003;
}
+
+.text-link {
+ cursor: pointer;
+ color: #5C6F90;
+ text-decoration: underline;
+}
+
+.text-link-selected {
+ font-weight: bold;
+ cursor: default;
+ text-decoration: none;
+ color: #000000;
+}
+
+.text-link-disabled {
+ font-weight: none;
+ cursor: default;
+ text-decoration: none;
+ color: #c0c0c0;
+}
+
+
+
+
diff --git a/theme/default/sfiab.css b/theme/default/sfiab.css
index b3da0463..3928a549 100644
--- a/theme/default/sfiab.css
+++ b/theme/default/sfiab.css
@@ -418,3 +418,27 @@ div.ui-tabs ul.ui-tabs-nav {
.ui-datepicker {
z-index: 1003;
}
+
+.text-link {
+ cursor: pointer;
+ color: #5C6F90;
+ text-decoration: underline;
+}
+
+.text-link-selected {
+ font-weight: bold;
+ cursor: default;
+ text-decoration: none;
+ color: #000000;
+}
+
+.text-link-disabled {
+ font-weight: none;
+ cursor: default;
+ text-decoration: none;
+ color: #c0c0c0;
+}
+
+
+
+