diff --git a/common.inc.functions.php b/common.inc.functions.php
index 80a1311..f40c5dd 100644
--- a/common.inc.functions.php
+++ b/common.inc.functions.php
@@ -810,13 +810,9 @@ function get_judging_timeslots($conferenceId){
// a convenience function for getting the special awards that are relevant to the specified conference.
function get_special_awards($conferenceId){
$returnval = array();
- $q = mysql_query("SELECT award_awards.id,
- award_awards.name,
- award_awards.criteria,
- sponsors.organization
+ $q = mysql_query("SELECT award_awards.*
FROM award_awards
JOIN award_types ON award_types.id = award_awards.award_types_id
- JOIN sponsors ON sponsors.id = award_awards.sponsors_id
WHERE
(award_types.type='Special' OR award_types.type='Other')
AND award_awards.conferences_id = '$conferenceId'
@@ -824,7 +820,7 @@ function get_special_awards($conferenceId){
ORDER BY name");
while($row = mysql_fetch_assoc($q)){
- $returnval[$row['id']] = $row['name'];
+ $returnval[$row['id']] = $row;
}
return $returnval;
}
diff --git a/judge_other.php b/judge_other.php
index ab47e3c..354db1a 100644
--- a/judge_other.php
+++ b/judge_other.php
@@ -56,15 +56,10 @@ case 'save':
$u['years_regional'] = intval($_POST['years_regional']);
$u['years_national'] = intval($_POST['years_national']);
$u['highest_psd'] = stripslashes($_POST['highest_psd']);
-
- if(is_array($_POST['time']) && array_key_exists('available_times', $u)){
- foreach($u['available_times'] as $idx => $val){
- if(in_array($idx, $_POST['time'])){
- $u['available_times'][$idx] = 'yes';
- }else{
- $u['available_times'][$idx] = 'no';
- }
- }
+ if(is_array($_POST['time'])){
+ $u['available_times'] = $_POST['time'];
+ }else if(array_key_exists('available_times', $u)){
+ $u['available_times'] = array();
}
user_save($u);
@@ -114,11 +109,8 @@ if(count($times) > 1) $required[] = 'time[]';
foreach($times as $slot){
$options[$slot['id']] = trim($slot['name'] . ' (' . $slot['date'] . ' ' . $slot['starttime'] . ' - ' . $slot['endtime'] . ')');
}
- foreach($u['available_times'] as $idx => $t){
- if($t == 'yes') $sel[] = $idx;
- }
echo '
';
- user_edit_item($u, 'Time Availability', 'time[]', 'checklist', $options, $sel);
+ user_edit_item($u, 'Time Availability', 'time[]', 'checklist', $options, $u['available_times']);
echo '
';
}
?>
diff --git a/user.inc.php b/user.inc.php
index 4121f0d..08b1e6f 100644
--- a/user.inc.php
+++ b/user.inc.php
@@ -76,7 +76,6 @@ function user_load($users_id, $accounts_id = false)
// get a list of all fields relevant to this user
$fieldDat = user_get_fields(array_keys($u['roles']));
-
// we need to separate the fields that are in the users table from those in separate tables
$fields = array_unique(array_merge(array_keys($fieldDat), array('id', 'accounts_id', 'conferences_id')));
$userFields = array();
@@ -552,7 +551,7 @@ function user_get_fields($userRoles = null){
$fields['special_awards']['field'] = 'special_awards';
$fields['special_awards']['display'] = i18n($fieldInfo['special_awards']['label']);
$fields['special_awards']['group'] = i18n($fieldInfo['special_awards']['group']);
- $fields['special_awards']['type'] = 'multiselectlist';
+ $fields['special_awards']['type'] = 'multiselect';
$fields['special_awards']['options'] = array('yes' => 'Yes', 'no' => 'No');
$fields['special_awards']['entries'] = get_special_awards($conference['id']);
}
@@ -563,12 +562,12 @@ function user_get_fields($userRoles = null){
$fields['available_times']['field'] = 'available_times';
$fields['available_times']['display'] = i18n($fieldInfo['available_times']['label']);
$fields['available_times']['group'] = i18n($fieldInfo['available_times']['group']);
- $fields['available_times']['type'] = 'multiselectlist';
+ $fields['available_times']['type'] = 'multiselect';
$fields['available_times']['options'] = array('yes' => 'Yes', 'no' => 'No');
$fields['available_times']['entries'] = array();
$timeslots = get_judging_timeslots($conference['id']);
foreach($timeslots as $slot){
- $fields['available_times']['entries'][$slot['id']] = trim($slot['name'] . ' (' . $slot['date'] . ' ' . $slot['starttime'] . ' - ' . $slot['endtime'] . ')');
+ $fields['available_times']['entries'][$slot['id']] = $slot;
}
}
@@ -578,7 +577,7 @@ function user_get_fields($userRoles = null){
$fields['available_events']['field'] = 'available_events';
$fields['available_events']['display'] = i18n($fieldInfo['available_events']['label']);
$fields['available_events']['group'] = i18n($fieldInfo['available_events']['group']);
- $fields['available_events']['type'] = 'multiselectlist';
+ $fields['available_events']['type'] = 'multiselect';
$fields['available_events']['options'] = array('yes' => 'Yes', 'no' => 'No');
$fields['available_events']['entries'] = array();
$q=mysql_query("SELECT schedule.id, schedule.date, schedule.hour, schedule.minute, schedule.duration, events.name FROM schedule JOIN events ON schedule.events_id=events.id WHERE schedule.conferences_id='{$conference['id']}'");
@@ -593,7 +592,7 @@ function user_get_fields($userRoles = null){
$fields['volunteer_positions']['field'] = 'volunteer_positions';
$fields['volunteer_positions']['display'] = i18n($fieldInfo['volunteer_positions']['label']);
$fields['volunteer_positions']['group'] = i18n($fieldInfo['volunteer_positions']['group']);
- $fields['volunteer_positions']['type'] = 'multiselectlist';
+ $fields['volunteer_positions']['type'] = 'multiselect';
$fields['volunteer_positions']['options'] = array('yes' => 'Yes', 'no' => 'No');
$fields['volunteer_positions']['entries'] = array();
$q = mysql_query("SELECT * FROM volunteer_positions WHERE conferences_id = {$conference['id']}");
@@ -721,6 +720,32 @@ function user_save(&$u)
}
}
+ if( // if this user has an altered event availability selection, we need to save it
+ array_key_exists('available_events', $u) &&
+ count(array_diff_assoc($u['available_events'], $u['orig']['available_events'])) > 0
+ ){
+ mysql_query("DELETE FROM schedule_users_availability_link WHERE users_id = {$u['id']}");
+ if(count($u['available_events']) > 0){
+ $query = "INSERT INTO schedule_users_availability_link (users_id, schedule_id), VALUES (" . $u['id'] . ", ";
+ $query .= implode('), (' . $u['id'] . ', ', $u['available_events']);
+ $query .= ")";
+ mysql_query($query);
+ }
+ }
+
+ if( // if this user has an altered selection of volunteer positions, we'll need to change that too
+ array_key_exists('volunteer_positions', $u) &&
+ count(array_diff_assoc($u['volunteer_positions'], $u['orig']['volunteer_positions'])) > 0
+ ){
+ mysql_query("DELETE FROM volunteer_positions_signup WHERE users_id = {$u['id']}");
+ if(count($u['volunteer_positions']) > 0){
+ $query = "INSERT INTO volunteer_positions_signup (users_id, conferences_id, volunteer_positions_id) VALUES({$u['id']},{$conference['id']},";
+ $query .= implode('), (' . $u['id'] . ', ' . $conference['id'] . ', ', $u['volunteer_positions']);
+ $query .= ")";
+ mysql_query($query);
+ }
+ }
+
/* Record all the data in orig that we saved so subsequent
* calls to user_save don't try to overwrite data already
* saved to the database */
diff --git a/volunteer_position.php b/volunteer_position.php
index 9b2a8d0..07127ab 100644
--- a/volunteer_position.php
+++ b/volunteer_position.php
@@ -49,27 +49,11 @@ if($_GET['action']=="save"){
/* Match selections with available positions */
foreach($_POST['posn'] as $id=>$val) {
if(!in_array($id, $posns)) continue;
-
- if($vals != '') $vals .=',';
- $vals .= "('{$u['id']}','$id','{$conference['id']}')";
+ $vals[] = $id;
}
}
-
- /* Delete existing selections */
- mysql_query("DELETE FROM volunteer_positions_signup
- WHERE
- users_id='{$u['id']}'
- AND conferences_id='{$conference['id']}' ");
- echo mysql_error();
-
- /* Add new selections if there are any */
- if($vals != '') {
- $q = "INSERT INTO volunteer_positions_signup (users_id, volunteer_positions_id,conferences_id)
- VALUES $vals";
- $r=mysql_query($q);
- echo mysql_error();
-
- }
+ $u['volunteer_positions'] = $vals;
+ user_save($u);
$newstatus = volunteer_status_position($u);
?>