From 99e45f86a3e3ab1adb2e451fcc78c0f2c7199fe8 Mon Sep 17 00:00:00 2001 From: Nathan Coad Date: Thu, 26 May 2016 11:11:46 +1000 Subject: [PATCH] new approach --- booking.emails.inc | 97 ++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 94 insertions(+), 3 deletions(-) diff --git a/booking.emails.inc b/booking.emails.inc index ec2cce0..bf67e7d 100644 --- a/booking.emails.inc +++ b/booking.emails.inc @@ -146,6 +146,96 @@ function booking_manual_email() ); } +function _booking_manual_email_generate_tableselect() { + global $event; + $form = array (); + $options = array (); + + $header = array( + 'booking_nid' => array('data' => t('Id'), 'field' => 'nid', 'sort' => 'asc'), + 'booking_name' => array('data' => t('Name'), 'field' => 'booking_lastname'), + 'booking_gender' => array('data' => t('Gender'), 'field' => 'booking_gender'), + 'booking_email' => array('data' => t('Email'), 'field' => 'booking_email'), + 'booking_state' => array('data' => t('State'), 'field' => 'booking_state'), + 'booking_status' => array('data' => t('Status'), 'field' => 'booking_status'), + 'amount_paid' => array('data' => t('Payment To Date'), 'field' => 'booking_amount_paid'), + 'amount_reqd' => array('data' => t('Total Payment Required'), 'field' => 'booking_total_pay_reqd'), + 'booking_fully_paid' => array('data' => t('Fully paid?'), 'field' => 'booking_payment_complete'), + 'welfare_required' => array('data' => t('Welfare Required?'), 'field' => 'booking_welfare_required'), + 'travel_form' => array('data' => t('Travel Submitted?'), 'field' => 'tid'), + ); + + if (variable_get('booking_enable_studygroups', 0) == 1) + { + //select entries from the study groups mapping table + $query = db_select('booking_studygroup_mapping', 'm'); + $query->join('booking_studygroup_list', 's', 's.sid = m.booking_studygroup_id'); + $query->condition('m.booking_eventid', $event->eid, '='); + $query->fields('m')->fields('s', array('booking_studygroup_descrip')); + $group_mapping = $query->execute()->fetchAllAssoc('sid'); + //add a column to the table header + $header['group_roles'] = array('data' => t('Group Role')); + } + + $query = db_select('booking_person', 'p'); + $query->join('booking_price', 'pr', 'pr.pid = p.booking_payment_id'); + $query->leftJoin('booking_travel', 't', 'p.nid = t.booking_person_nid'); + + $query->fields('p') + ->fields('pr', array('booking_price', 'booking_late_price')) + ->fields('t') + ->condition('p.booking_eventid', $event->eid, '='); + + $table_sort = $query->extend('TableSort')->orderbyHeader($header); + $result = $table_sort->execute(); + + foreach($result as $data) + { + $group_text = ""; + $class = $data->booking_welfare_required == 'Y' ? "welfare-row" : "normal-row"; + //$paid = _booking_amount_owing($data); + //$paid = _booking_amount_owing($data->nid); + $options[$data->nid] = array ( + 'booking_nid' => l(t('!id', array('!id' => $data->nid)), t('node/!id', array('!id' => $data->nid))), + 'booking_name' => $data->booking_firstname . " " . $data->booking_lastname, + 'booking_gender' => $data->booking_gender == 'M' ? 'Male' : 'Female', + 'booking_email' => $data->booking_email, + 'booking_state' => $data->booking_state, + 'booking_status' => _booking_status_generate($data->booking_status), + 'amount_paid' => $data->booking_amount_paid, + 'amount_reqd' => $data->booking_total_pay_reqd, + 'booking_fully_paid' => $data->booking_payment_complete == 'Y' ? 'Yes' : 'No', + 'welfare_required' => $data->booking_welfare_required == 'Y' ? 'Yes' : 'No', + 'travel_form' => $data->tid > 0 ? 'Yes' : 'No', + '#attributes' => array('class' => array($class)), + ); + + if (variable_get('booking_enable_studygroups', 0) == 1) { + foreach ($group_mapping as $group) { + $role = $group->booking_studygroup_role; + if ($group->booking_node_id == $data->nid && $role > 0) { + $text = _booking_studygroup_role_lookup($role); + $group_text .= "" . $text . " for " . $group->booking_studygroup_descrip . " #" . $group->booking_session_id . "; "; + } + } + $options[$data->nid]['group_roles'] = $group_text; + } + + $values[$data->nid] = ($data->booking_payment_complete == 'Y' || $data->booking_status != 1) ? FALSE : TRUE; + } + + return array ( + '#type' => 'tableselect', + '#header' => $header, + '#options' => $options, + '#default_value' => $values, + '#empty' => t('No attendees found.'), + '#attributes' => array('id' => 'sort-table'), + '#prefix' => '
', + '#suffix' => '
', + ); +} + function _booking_manual_email_selecttype_dropdown_callback($form, &$form_state) { //$courseid = $form_state['values']['courseid']; @@ -165,14 +255,15 @@ function _booking_manual_email_selecttype_dropdown_callback($form, &$form_state) //$options = laycoaches_schedule_course_form_schedule_options($courseid, $scheduleid); // update cached options for tableselect - $cached_form = form_get_cache($form['#build_id'], $form_state); - watchdog('booking_debug', "
Manual email cached form\n@info
", array('@info' => print_r( $cached_form, true))); + //$cached_form = form_get_cache($form['#build_id'], $form_state); + //watchdog('booking_debug', "
Manual email cached form\n@info
", array('@info' => print_r( $cached_form, true))); //unset old tableselect unset($form['table']); // configure new tableselect based on old table select - $form['table'] = $cached_form['form']['table']; + //$form['table'] = $cached_form['form']['table']; + $form['table'] = _booking_manual_email_generate_tableselect(); //set new default values //$form['new']['table']['#default_value'] = $new_default_values;