Tweaks for reading groups

This commit is contained in:
2014-06-18 16:50:31 +10:00
parent db086fbb5f
commit 781acbd9de
3 changed files with 46 additions and 15 deletions

View File

@@ -234,6 +234,14 @@ function booking_admin() {
'#maxlength' => 3, '#maxlength' => 3,
'#default_value' => variable_get('booking_studygroup_count','0'), '#default_value' => variable_get('booking_studygroup_count','0'),
); );
$form['misc']['booking_readinggroup_id'] = array (
'#type' => 'textfield',
'#title' => t('Studygroup ID for the reading group'),
'#description' => t("Set the ID for the studygroup that corresponds with the reading group. Set to zero if reading groups aren't in use."),
'#size' => 3,
'#maxlength' => 3,
'#default_value' => variable_get('booking_readinggroup_id','0'),
);
$form['misc']['booking_csv_exclude_fields'] = array ( $form['misc']['booking_csv_exclude_fields'] = array (
'#type' => 'textfield', '#type' => 'textfield',
'#title' => t('Fields to exclude from CSV report'), '#title' => t('Fields to exclude from CSV report'),

View File

@@ -284,7 +284,7 @@ function booking_coming_page() {
global $event; global $event;
$output = ""; $output = "";
$table = ""; $table = "";
//$header = array('Name', 'Occupation', 'State'); //$header = array('Name', 'Team Colour', 'State');
$header = array('Name', 'State'); $header = array('Name', 'State');
$booking_limit = variable_get('booking_regn_limit','350'); $booking_limit = variable_get('booking_regn_limit','350');
$rows = array(); $rows = array();

View File

@@ -569,6 +569,11 @@ function booking_studygroups_edit_form_submit($form, &$form_state) {
)) ))
->condition('sid', $person_groups[$key]->sid) ->condition('sid', $person_groups[$key]->sid)
->execute(); ->execute();
if ($key == 7)
{
booking_studygroups_process_colours();
}
} }
//found this entry already, so no change needed //found this entry already, so no change needed
elseif ((!empty($person_groups[$key])) && $person_groups[$key]->booking_session_id == $value) elseif ((!empty($person_groups[$key])) && $person_groups[$key]->booking_session_id == $value)
@@ -592,7 +597,11 @@ function booking_studygroups_edit_form_submit($form, &$form_state) {
//'booking_is_reserveleader' => 'N', //'booking_is_reserveleader' => 'N',
'booking_studygroup_role' => 0, 'booking_studygroup_role' => 0,
)) ))
->execute(); ->execute();
if ($key == 7)
{
booking_studygroups_process_colours();
}
} }
} }
} }
@@ -967,7 +976,9 @@ function booking_studygroups_update() {
//calculate the ratios of males to females, and various age groups //calculate the ratios of males to females, and various age groups
$statistics = _booking_generate_statistics($attendees); $statistics = _booking_generate_statistics($attendees);
$gender_ratio = ($statistics['males'] / $statistics['females']) * ($max_people / 2); $gender_ratio = ($statistics['males'] / $statistics['females']) * ($max_people / 2);
//store them in a nice easy to access array //really stretch the tolerances for placement by setting this to zero
$fudge_factor = 0;
//store our final maximums as an array for easy access later
$maximums = array( $maximums = array(
'male' => ceil($gender_ratio), 'male' => ceil($gender_ratio),
'female' => ceil($max_people - $gender_ratio), 'female' => ceil($max_people - $gender_ratio),
@@ -1236,8 +1247,7 @@ function booking_studygroups_update() {
//iterate over the attendee list and write to the database the session they're assigned to //iterate over the attendee list and write to the database the session they're assigned to
//use the multi-insert query type at https://drupal.org/node/310079 //use the multi-insert query type at https://drupal.org/node/310079
$insert_query = db_insert('booking_studygroup_mapping')->fields(array('booking_eventid', 'booking_node_id', $insert_query = db_insert('booking_studygroup_mapping')->fields(array('booking_eventid', 'booking_node_id',
'booking_studygroup_id', 'booking_session_id', 'booking_is_leader', 'booking_is_helper', 'booking_studygroup_id', 'booking_session_id', 'booking_studygroup_role'));
'booking_is_reserveleader', 'booking_studygroup_role'));
foreach($working_list as $person) foreach($working_list as $person)
{ {
@@ -1262,7 +1272,7 @@ function booking_studygroups_update() {
'!role' => $person->booking_studygroup_role))); '!role' => $person->booking_studygroup_role)));
//update the entry //update the entry
/*
db_update('booking_studygroup_mapping') db_update('booking_studygroup_mapping')
->fields(array( ->fields(array(
'booking_session_id' => $person->session, 'booking_session_id' => $person->session,
@@ -1270,7 +1280,7 @@ function booking_studygroups_update() {
)) ))
->condition('sid', $mapping->sid) ->condition('sid', $mapping->sid)
->execute(); ->execute();
*/
} }
else else
{ {
@@ -1312,6 +1322,7 @@ function booking_studygroups_update() {
} //finished processing study groups } //finished processing study groups
booking_studygroups_process_colours();
//watchdog('booking', "Attendee list final version: @info", array('@info' => var_export($attendees, TRUE))); //watchdog('booking', "Attendee list final version: @info", array('@info' => var_export($attendees, TRUE)));
} }
@@ -1443,7 +1454,7 @@ function booking_studygroups_printview_form($node, &$form_state, $group_id) {
*/ */
function booking_studygroups_view_form($node, &$form_state, $group_id) { function booking_studygroups_view_form($node, &$form_state, $group_id) {
global $event; global $event;
$is_reading_group = FALSE;
$form = array(); $form = array();
$options = array(); $options = array();
$last_session = ""; $last_session = "";
@@ -1477,6 +1488,11 @@ function booking_studygroups_view_form($node, &$form_state, $group_id) {
drupal_goto('admin/config/booking'); drupal_goto('admin/config/booking');
return ""; return "";
} }
if ($group_id == variable_get('booking_readinggroup_id','7'))
{
$is_reading_group = TRUE;
}
$header = array( $header = array(
'booking_session_id' => array('data' => t('Study Group Session'), 'field' => 'm.booking_session_id', 'sort' => 'asc'), 'booking_session_id' => array('data' => t('Study Group Session'), 'field' => 'm.booking_session_id', 'sort' => 'asc'),
@@ -1488,6 +1504,11 @@ function booking_studygroups_view_form($node, &$form_state, $group_id) {
//'booking_is_reserveleader' => array('data' => t('Reserve Leader?'), 'field' => 'm.booking_is_reserveleader'), //'booking_is_reserveleader' => array('data' => t('Reserve Leader?'), 'field' => 'm.booking_is_reserveleader'),
); );
if ($is_reading_group == TRUE)
{
$header['booking_session_id']['data'] = t('Team Colour');
}
$query = db_select('booking_person', 'p'); $query = db_select('booking_person', 'p');
$query->leftJoin('booking_studygroup_mapping', 'm', 'm.booking_node_id = p.nid'); $query->leftJoin('booking_studygroup_mapping', 'm', 'm.booking_node_id = p.nid');
@@ -1541,8 +1562,10 @@ function booking_studygroups_view_form($node, &$form_state, $group_id) {
} }
} }
$session = $is_reading_group == TRUE ? _booking_readinggroup_colour_lookup($data->booking_session_id) : $data->booking_session_id;
$options[$data->nid] = array ( $options[$data->nid] = array (
'booking_session_id' => $data->booking_session_id, 'booking_session_id' => $session,
'booking_name' => l(t('!first !last', array('!first' => $data->booking_firstname, '!last' => $data->booking_lastname)), 'booking_name' => l(t('!first !last', array('!first' => $data->booking_firstname, '!last' => $data->booking_lastname)),
t('admin/booking/!id/edit-studygroup', array('!id' => $data->nid))), t('admin/booking/!id/edit-studygroup', array('!id' => $data->nid))),
'booking_status' => _booking_status_generate($data->booking_status), 'booking_status' => _booking_status_generate($data->booking_status),
@@ -1581,21 +1604,20 @@ function booking_studygroups_view_form($node, &$form_state, $group_id) {
function booking_studygroups_process_colours() { function booking_studygroups_process_colours() {
global $event; global $event;
//hard code this value for now - it's the id of the special study group that is actually the reading group //get the id of the special study group that is actually the reading group
$readinggroup_studygroup_id = 7; $readinggroup_studygroup_id = variable_get('booking_readinggroup_id','7');
//query for the mappings relating to $readinggroup_studygroup_id //query for the mappings relating to $readinggroup_studygroup_id
$group_mapping_query = db_query("SELECT * FROM {booking_studygroup_mapping} WHERE booking_eventid = :eid AND booking_studygroup_id = :sid", $group_mapping_query = db_query("SELECT * FROM {booking_studygroup_mapping} WHERE booking_eventid = :eid AND booking_studygroup_id = :sid",
array(':eid' => $event->eid, ':sid' => $readinggroup_studygroup_id)); array(':eid' => $event->eid, ':sid' => $readinggroup_studygroup_id));
$group_mapping = $group_mapping_query->fetchAll(); $group_mapping = $group_mapping_query->fetchAll();
foreach ($group_mapping as $mapping) foreach ($group_mapping as $mapping)
{ {
$colour = _booking_readinggroup_colour_lookup($mapping->booking_session_id); $colour = _booking_readinggroup_colour_lookup($mapping->booking_session_id);
drupal_set_message(t('Updating user !id to be in team !colour.', //drupal_set_message(t('Updating user !id to be in team !colour.',
array('!id' => $mapping->booking_node_id, '!colour' => $colour))); // array('!id' => $mapping->booking_node_id, '!colour' => $colour)));
//run an update query //run an update query
db_update('booking_person') db_update('booking_person')
@@ -1605,4 +1627,5 @@ function booking_studygroups_process_colours() {
->condition('nid', $mapping->booking_node_id) ->condition('nid', $mapping->booking_node_id)
->execute(); ->execute();
} }
drupal_set_message(t('Updated reading group colours'));
} }