diff --git a/booking.studygroups.inc b/booking.studygroups.inc index 29c227f..ae0a20e 100644 --- a/booking.studygroups.inc +++ b/booking.studygroups.inc @@ -8,7 +8,6 @@ /** * Function for selecting who is available to lead or help sessions */ - function booking_available_leadhelp_select_form() { global $event; @@ -33,13 +32,12 @@ function booking_available_leadhelp_select_form() { $session_options[0] = ''; for ($i = 1; $i <= $num_sessions; $i++) $session_options[$i] = $i; - + $session_options['Remove'] = 'Remove'; + //select any entries already in the mapping table $group_mapping_query = db_query("SELECT * FROM {booking_studygroup_mapping} WHERE booking_eventid = :eid", array(':eid' => $event->eid)); $group_mapping = $group_mapping_query->fetchAllAssoc('sid'); - - //***form starts here*** $form['booking_studygroup'] = array( '#type' => 'select', @@ -48,7 +46,6 @@ function booking_available_leadhelp_select_form() { '#options' => $group_options, ); - $header = array ( //'booking_nid' => array('data' => t('Booking ID'), 'field' => 'nid'), 'booking_name' => array('data' => t('Name'), 'field' => 'booking_lastname'), @@ -163,18 +160,7 @@ function booking_available_leadhelp_select_form() { '#type' => 'submit', '#value' => t('Submit'), ); - - /* - $form['submit-leader'] = array ( - '#type' => 'submit', - '#value' => t('Set Leader'), - ); - - $form['submit-helper'] = array ( - '#type' => 'submit', - '#value' => t('Set Helper'), - ); - */ + return array ( 'first_para' => array ( '#type' => 'markup', @@ -217,7 +203,7 @@ function booking_available_leadhelp_select_form_submit($form, &$form_state) { //$helper_list = $form_state['values']['booking_assign_helper_group']; $helper_session = $form_state['values']['booking_assign_helper_session']; - //watchdog('booking', "Leader list: @info", array('@info' => var_export($leader_list, TRUE))); + watchdog('booking', "Leader list: @info", array('@info' => var_export($form_state['values'], TRUE))); //watchdog('booking', "Helper list: @info", array('@info' => var_export($helper_list, TRUE))); //select any entries already in the mapping table @@ -232,8 +218,32 @@ function booking_available_leadhelp_select_form_submit($form, &$form_state) { $session = 0; $found = FALSE; + //remove from being a leader? + if ($leader_session[$key] == "Remove") + { + $num_deleted = db_delete('booking_studygroup_mapping') + ->condition('booking_eventid', $event->eid) + ->condition('booking_node_id', $key) + ->condition('booking_studygroup_id', $booking_studygroup) + ->condition('booking_session_id', $leader_session[$key]) + ->condition('booking_is_leader', 'Y') + ->execute(); + watchdog('booking', 'Removed person !nid from being a leader in study group !sid, affected !num rows.', array ('!nid' => $key, '!sid' => $booking_studygroup, '!num' => $num_deleted)); + } + //remove from being a helper? + elseif ($helper_session[$key] == "Remove") + { + $num_deleted = db_delete('booking_studygroup_mapping') + ->condition('booking_eventid', $event->eid) + ->condition('booking_node_id', $key) + ->condition('booking_studygroup_id', $booking_studygroup) + ->condition('booking_session_id', $helper_session[$key]) + ->condition('booking_is_helper', 'Y') + ->execute(); + watchdog('booking', 'Removed person !nid from being a helper in study group !sid, affected !num rows.', array ('!nid' => $key, '!sid' => $booking_studygroup, '!num' => $num_deleted)); + } //was this person set as a leader? - if ($leader_session[$key] <> 0) + elseif ($leader_session[$key] <> 0) { $leader = 'Y'; $session = $leader_session[$key]; @@ -245,7 +255,7 @@ function booking_available_leadhelp_select_form_submit($form, &$form_state) { $helper = 'Y'; $session = $helper_session[$key]; watchdog('booking', 'Person !nid is set to be a helper in session !sid', array ('!nid' => $key, '!sid' => $helper_session[$key])); - } + } //if we reach the else something weird happened, make sure we don't insert else continue; @@ -292,101 +302,9 @@ function booking_available_leadhelp_select_form_submit($form, &$form_state) { $counter++; } - $message = t("Defined !num leader/helper sessions for group id !id", array('!num' => $counter, '!id' => $booking_studygroup)); + $message = t("Processed !num leader/helper sessions for group id !id", array('!num' => $counter, '!id' => $booking_studygroup)); drupal_set_message($message, 'status', FALSE); watchdog('booking', $message); - - - - - - - /* - $session_count = $form_state['values']['booking-leadhelp-count']; - - foreach($checkboxes as $key => $value) - { - if (is_numeric($key) && $value != 0) - { - //watchdog('booking', 'Checking !nid for entry in the booking_leadhelp_list table', array ('!nid' => $key)); - - //check if an entry already exists for this person in the booking_leadhelp_list table - $person = db_query("SELECT person.booking_node_id " . - "FROM {booking_leadhelp_list} person " . - "WHERE booking_node_id = :nid", - array(':nid' => $key)) - ->fetchObject(); - - if ($form_state['values']['op'] == 'Set Leader') - { - watchdog('booking', 'Setting group leader count to !count for !nid', array ('!count' => $session_count, '!nid' => $key)); - - if ($person) - { - //run an update - db_update('booking_leadhelp_list') - ->fields(array ( - 'booking_total_lead' => $session_count, - 'booking_available_lead' => $session_count, - )) - ->condition('booking_node_id', $key) - ->execute(); - } - else - { - //run an insert - db_insert('booking_leadhelp_list') - ->fields(array( - 'booking_eventid' => $event->eid, - 'booking_node_id' => $key, - 'booking_total_lead' => $session_count, - 'booking_available_lead' => $session_count, - 'booking_total_help' => 0, - 'booking_available_help' => 0, - )) - ->execute(); - } - - } - elseif ($form_state['values']['op'] == 'Set Helper') - { - watchdog('booking', 'Setting group helper count to !count for !nid', array ('!count' => $session_count, '!nid' => $key)); - - if ($person) - { - //run an update - db_update('booking_leadhelp_list') - ->fields(array ( - 'booking_total_help' => $session_count, - 'booking_available_help' => $session_count, - )) - ->condition('booking_node_id', $key) - ->execute(); - } - else - { - //run an insert - db_insert('booking_leadhelp_list') - ->fields(array( - 'booking_eventid' => $event->eid, - 'booking_node_id' => $key, - 'booking_total_lead' => 0, - 'booking_available_lead' => 0, - 'booking_total_help' => $session_count, - 'booking_available_help' => $session_count, - )) - ->execute(); - } - - } - - $counter++; - } - } - - drupal_set_message("Defined leader/helper numbers for $counter people.", 'status', FALSE); - watchdog('booking', "Defined leader/helper numbers for $counter people."); - */ } /** @@ -451,8 +369,8 @@ function booking_studygroups_calculate() { //calculate the max number of attendees in a group $firstgroup = reset($studygroups); $limit = variable_get('booking_regn_limit','500'); - //add an extra one to the maximum size, to cater for some larger groups when the number of people doesn't divide evenly - $max_people = (int) ($limit / $firstgroup->booking_num_group_sessions) + 1; + //add an extra two to the maximum size, to cater for some larger groups when the number of people doesn't divide evenly + $max_people = (int) ($limit / $firstgroup->booking_num_group_sessions) + 2; //select all the attendees booked in /*