Added reserve leader
This commit is contained in:
@@ -265,6 +265,14 @@ function booking_update_7208() {
|
||||
db_change_field('booking_person', 'booking_welfare_required', 'booking_welfare_required', $spec);
|
||||
}
|
||||
|
||||
/**
|
||||
* Add field for reserve leader
|
||||
*/
|
||||
function booking_update_7209() {
|
||||
$spec = array('type' => 'varchar', 'length' => '1', 'not null' => FALSE);
|
||||
db_add_field( 'booking_studygroup_mapping', 'booking_is_reserveleader', $spec);
|
||||
}
|
||||
|
||||
/**
|
||||
* Implementation of hook_install().
|
||||
*/
|
||||
|
@@ -98,6 +98,12 @@ function booking_permission() {
|
||||
'edit bookings' => array(
|
||||
'title' => t('Edit all bookings'),
|
||||
),
|
||||
'view study groups' => array(
|
||||
'title' => t('View study groups'),
|
||||
),
|
||||
'edit study groups' => array(
|
||||
'title' => t('Edit study groups'),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
@@ -279,25 +285,30 @@ function booking_menu() {
|
||||
'type' => MENU_NORMAL_ITEM,
|
||||
);
|
||||
|
||||
/**
|
||||
* Define the administration menu
|
||||
*/
|
||||
|
||||
//configure study groups
|
||||
$items['admin/config/booking/studygroups'] = array(
|
||||
'title' => 'View All Study Groups',
|
||||
'title' => 'View Study Groups',
|
||||
'description' => 'View Study Group memberships',
|
||||
'page callback' => 'booking_studygroups_view_summary',
|
||||
'access arguments' => array("access administration pages"),
|
||||
'access arguments' => array("view study groups"),
|
||||
'type' => MENU_NORMAL_ITEM,
|
||||
);
|
||||
|
||||
$items['admin/config/booking/studygroups/%/view'] = array(
|
||||
'title' => 'View Study Group',
|
||||
'description' => 'View Study Group memberships',
|
||||
'page callback' => 'drupal_get_form',
|
||||
'page arguments' => array('booking_studygroups_view_form', 4),
|
||||
'access arguments' => array('view study groups'),
|
||||
//'type' => MENU_NORMAL_ITEM,
|
||||
);
|
||||
|
||||
$items['admin/config/booking/studygroups/selectleaders'] = array(
|
||||
'title' => 'Study Group Leaders',
|
||||
'description' => 'Define attendees to lead or help study groups',
|
||||
'page callback' => 'drupal_get_form',
|
||||
'page arguments' => array('booking_available_leadhelp_select_form'),
|
||||
'access arguments' => array('access administration pages'),
|
||||
'access arguments' => array('edit study groups'),
|
||||
'type' => MENU_LOCAL_ACTION,
|
||||
);
|
||||
|
||||
@@ -306,21 +317,10 @@ function booking_menu() {
|
||||
'description' => 'Calculate Study Group memberships',
|
||||
'page callback' => 'drupal_get_form',
|
||||
'page arguments' => array('booking_studygroups_calculate'),
|
||||
'access arguments' => array('access administration pages'),
|
||||
'access arguments' => array('edit study groups'),
|
||||
'type' => MENU_LOCAL_ACTION,
|
||||
);
|
||||
|
||||
|
||||
|
||||
$items['admin/config/booking/studygroups/%/view'] = array(
|
||||
'title' => 'View Study Group',
|
||||
'description' => 'View Study Group memberships',
|
||||
'page callback' => 'drupal_get_form',
|
||||
'page arguments' => array('booking_studygroups_view_form', 4),
|
||||
'access arguments' => array('access administration pages'),
|
||||
//'type' => MENU_NORMAL_ITEM,
|
||||
);
|
||||
|
||||
//Configure prices
|
||||
$items['admin/config/booking/prices/create'] = array(
|
||||
'title' => 'Add New Price Entry',
|
||||
|
@@ -809,8 +809,12 @@ function _booking_validate($node, &$form_state) {
|
||||
|
||||
//if DOB on form is more recent than DOB limit, display validation error
|
||||
if ($dob_check > _booking_max_dob_ts())
|
||||
{
|
||||
watchdog('booking', "Attempt to register from !first !last, who is too young (!info) to attend event.",
|
||||
array ('!first' => $form_state['booking_firstname'], '!last' => $form_state['booking_lastname'], '!info' => var_export($form_state['booking_dob'], TRUE) ) );
|
||||
form_set_error('booking_dob', t('Unfortunately you are too young to attend !event.',
|
||||
array ('!event' => variable_get('booking_event_name','this event'))));
|
||||
}
|
||||
|
||||
//check the terms and conditions have been agreed to
|
||||
if ($form_state['booking_agreement'] == 0)
|
||||
|
@@ -371,6 +371,18 @@ function booking_waitinglist_page() {
|
||||
return $output;
|
||||
}
|
||||
|
||||
function ucname($string) {
|
||||
$string =ucwords(strtolower($string));
|
||||
|
||||
foreach (array('-', '\'') as $delimiter) {
|
||||
if (strpos($string, $delimiter)!==false) {
|
||||
$string =implode($delimiter, array_map('ucfirst', explode($delimiter, $string)));
|
||||
}
|
||||
}
|
||||
return $string;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Generate a CSV file as a report of all current registrations
|
||||
*/
|
||||
@@ -400,7 +412,7 @@ function booking_csv_report() {
|
||||
*/
|
||||
|
||||
//pivot table based on http://anothermysqldba.blogspot.de/2013/06/pivot-tables-example-in-mysql.html
|
||||
$query = db_query("select distinct p.*, s1.booking_session_id as session1, s1.booking_is_leader as session1_leader, s1.booking_is_helper as session1_helper, s2.booking_session_id as session2, s2.booking_is_leader as session2_leader, s2.booking_is_helper as session2_helper, s3.booking_session_id as session3, s3.booking_is_leader as session3_leader, s3.booking_is_helper as session3_helper, s4.booking_session_id as session4, s4.booking_is_leader as session4_leader, s4.booking_is_helper as session4_helper, s5.booking_session_id as session5, s5.booking_is_leader as session5_leader, s5.booking_is_helper as session5_helper, s6.booking_session_id as session6, s6.booking_is_leader as session6_leader, s6.booking_is_helper as session6_helper from {booking_person} p
|
||||
$query = db_query("select distinct p.*, s1.booking_session_id as session1, s1.booking_is_leader as session1_leader, s1.booking_is_reserveleader as session1_reserveleader, s1.booking_is_helper as session1_helper, s2.booking_session_id as session2, s2.booking_is_leader as session2_leader, s2.booking_is_reserveleader as session2_reserveleader, s2.booking_is_helper as session2_helper, s3.booking_session_id as session3, s3.booking_is_leader as session3_leader, s3.booking_is_reserveleader as session3_reserveleader, s3.booking_is_helper as session3_helper, s4.booking_session_id as session4, s4.booking_is_leader as session4_leader, s4.booking_is_reserveleader as session4_reserveleader, s4.booking_is_helper as session4_helper, s5.booking_session_id as session5, s5.booking_is_leader as session5_leader, s5.booking_is_reserveleader as session5_reserveleader, s5.booking_is_helper as session5_helper, s6.booking_session_id as session6, s6.booking_is_leader as session6_leader, s6.booking_is_reserveleader as session6_reserveleader, s6.booking_is_helper as session6_helper from {booking_person} p
|
||||
left outer join {booking_studygroup_mapping} s1 on p.nid = s1.booking_node_id and s1.booking_studygroup_id = 1
|
||||
left outer join {booking_studygroup_mapping} s2 on p.nid = s2.booking_node_id and s2.booking_studygroup_id = 2
|
||||
left outer join {booking_studygroup_mapping} s3 on p.nid = s3.booking_node_id and s3.booking_studygroup_id = 3
|
||||
@@ -449,6 +461,10 @@ function booking_csv_report() {
|
||||
continue;
|
||||
}
|
||||
|
||||
//capitalise street name and suburb name
|
||||
if ($key == 'booking_street' || $key == 'booking_suburb')
|
||||
$value = ucname($value);
|
||||
|
||||
//handle dates
|
||||
if ($key == 'booking_dob') {
|
||||
$output[] = format_date($value, 'custom', 'd/m/Y');
|
||||
|
@@ -47,19 +47,16 @@ function booking_available_leadhelp_select_form() {
|
||||
);
|
||||
|
||||
$header = array (
|
||||
//'booking_nid' => array('data' => t('Booking ID'), 'field' => 'nid'),
|
||||
'booking_nid' => array('data' => t('Booking ID'), 'field' => 'nid'),
|
||||
'booking_name' => array('data' => t('Name'), 'field' => 'booking_lastname'),
|
||||
//'booking_gender' => array('data' => t('Gender')),
|
||||
'booking_baptised' => array('data' => t('Baptised?'), 'field' => 'booking_baptised'),
|
||||
'booking_age' => array('data' => t('Age (start of week)'), 'field' => 'booking_dob', 'sort' => 'asc'),
|
||||
'booking_state' => array('data' => t('State'), 'field' => 'booking_state'),
|
||||
'booking_status' => array('data' => t('Status'), 'field' => 'booking_status'),
|
||||
//'booking_assign_leader_group' => array('data' => t('Assign leader group')),
|
||||
'booking_assign_leader_session' => array('data' => t('Leader Session')),
|
||||
//'booking_assign_helper_group' => array('data' => t('Assign helper group')),
|
||||
'booking_assign_helper_session' => array('data' => t('Helper Session')),
|
||||
//'booking_lead_sessions' => array('data' => t('Total groups leading')),
|
||||
//'booking_help_sessions' => array('data' => t('Total groups helping')),
|
||||
'booking_assign_reserveleader_session' => array('data' => t('Reserve Leader Session')),
|
||||
'booking_currently_leadhelp' => array('data' => t('Currently leading/helping')),
|
||||
);
|
||||
|
||||
@@ -89,11 +86,13 @@ function booking_available_leadhelp_select_form() {
|
||||
$currently_doing .= "Lead " . $person->booking_studygroup_id . " #" . $person->booking_session_id . "; ";
|
||||
elseif ($person->booking_is_helper == 'Y')
|
||||
$currently_doing .= "Help " . $person->booking_studygroup_id . " #" . $person->booking_session_id . "; ";
|
||||
elseif ($person->booking_is_reserveleader == 'Y')
|
||||
$currently_doing .= "Reserve " . $person->booking_studygroup_id . " #" . $person->booking_session_id . "; ";
|
||||
}
|
||||
}
|
||||
|
||||
$options[$data->nid] = array (
|
||||
//'booking_nid' => l(t('!id', array('!id' => $data->nid)), t('node/!id', array('!id' => $data->nid))),
|
||||
'booking_nid' => l(t('!id', array('!id' => $data->nid)), t('node/!id', array('!id' => $data->nid))),
|
||||
'booking_name' => l(t($data->booking_firstname . " " . $data->booking_lastname), t('node/!id', array('!id' => $data->nid))),
|
||||
//'booking_gender' => $data->booking_gender == 'M' ? 'Male' : 'Female',
|
||||
'booking_baptised' => $data->booking_baptised == 'Y' ? 'Yes' : 'No',
|
||||
@@ -132,11 +131,16 @@ function booking_available_leadhelp_select_form() {
|
||||
*/
|
||||
'booking_assign_helper_session' => array('data' => array(
|
||||
'#type' => 'select',
|
||||
//'#default_value' => 0,
|
||||
'#options' => $session_options,
|
||||
'#name' => 'booking_assign_helper_session[' . $data->nid . ']',
|
||||
)
|
||||
),
|
||||
'booking_assign_reserveleader_session' => array('data' => array(
|
||||
'#type' => 'select',
|
||||
'#options' => $session_options,
|
||||
'#name' => 'booking_assign_reserveleader_session[' . $data->nid . ']',
|
||||
)
|
||||
),
|
||||
'booking_currently_leadhelp' => $currently_doing,
|
||||
);
|
||||
}
|
||||
@@ -150,9 +154,10 @@ function booking_available_leadhelp_select_form() {
|
||||
);
|
||||
|
||||
//so we can access the dropdown elements
|
||||
$form['booking_assign_leader_group'] = array( '#type' => 'value', );
|
||||
$form['booking_assign_helper_group'] = array( '#type' => 'value', );
|
||||
//$form['booking_assign_leader_group'] = array( '#type' => 'value', );
|
||||
//$form['booking_assign_helper_group'] = array( '#type' => 'value', );
|
||||
$form['booking_assign_leader_session'] = array( '#type' => 'value', );
|
||||
$form['booking_assign_reserveleader_session'] = array( '#type' => 'value', );
|
||||
$form['booking_assign_helper_session'] = array( '#type' => 'value', );
|
||||
|
||||
|
||||
@@ -200,11 +205,12 @@ function booking_available_leadhelp_select_form_submit($form, &$form_state) {
|
||||
|
||||
//$leader_list = $form_state['values']['booking_assign_leader_group'];
|
||||
$leader_session = $form_state['values']['booking_assign_leader_session'];
|
||||
$reserve_leader_session = $form_state['values']['booking_assign_reserveleader_session'];
|
||||
//$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($form_state['values'], TRUE)));
|
||||
//watchdog('booking', "Helper list: @info", array('@info' => var_export($helper_list, TRUE)));
|
||||
//watchdog('booking', "Helper list: @info", array('@info' => var_export($reserve_leader_session, TRUE)));
|
||||
|
||||
//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));
|
||||
@@ -215,6 +221,7 @@ function booking_available_leadhelp_select_form_submit($form, &$form_state) {
|
||||
{
|
||||
$leader = 'N';
|
||||
$helper = 'N';
|
||||
$reserve_leader = 'N';
|
||||
$session = 0;
|
||||
$found = FALSE;
|
||||
|
||||
@@ -225,11 +232,12 @@ function booking_available_leadhelp_select_form_submit($form, &$form_state) {
|
||||
->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_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));
|
||||
//skip to the next person
|
||||
$counter++;
|
||||
continue;
|
||||
}
|
||||
//remove from being a helper?
|
||||
@@ -239,11 +247,28 @@ function booking_available_leadhelp_select_form_submit($form, &$form_state) {
|
||||
->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_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));
|
||||
//skip to the next person
|
||||
$counter++;
|
||||
continue;
|
||||
}
|
||||
//remove from being a reserve leader?
|
||||
elseif ($reserve_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', $reserve_leader_session[$key])
|
||||
->condition('booking_is_reserveleader', 'Y')
|
||||
->execute();
|
||||
watchdog('booking', 'Removed person !nid from being a reserve leader in study group !sid, affected !num rows.',
|
||||
array ('!nid' => $key, '!sid' => $booking_studygroup, '!num' => $num_deleted));
|
||||
//skip to the next person
|
||||
$counter++;
|
||||
continue;
|
||||
}
|
||||
//was this person set as a leader?
|
||||
@@ -260,6 +285,12 @@ function booking_available_leadhelp_select_form_submit($form, &$form_state) {
|
||||
$session = $helper_session[$key];
|
||||
watchdog('booking', 'Person !nid is set to be a helper in session !sid, group !group', array ('!nid' => $key, '!sid' => $helper_session[$key], '!group' => $booking_studygroup));
|
||||
}
|
||||
elseif ($reserve_leader_session[$key] <> 0)
|
||||
{
|
||||
$reserve_leader = 'Y';
|
||||
$session = $reserve_leader_session[$key];
|
||||
watchdog('booking', 'Person !nid is set to be a reserve leader in session !sid, group !group', array ('!nid' => $key, '!sid' => $helper_session[$key], '!group' => $booking_studygroup));
|
||||
}
|
||||
//if we reach the else something weird happened, make sure we don't insert
|
||||
else
|
||||
continue;
|
||||
@@ -286,6 +317,7 @@ function booking_available_leadhelp_select_form_submit($form, &$form_state) {
|
||||
'booking_session_id' => $session,
|
||||
'booking_is_leader' => $leader,
|
||||
'booking_is_helper' => $helper,
|
||||
'booking_is_reserveleader' => $reserve_leader,
|
||||
))
|
||||
->execute();
|
||||
}
|
||||
@@ -297,6 +329,7 @@ function booking_available_leadhelp_select_form_submit($form, &$form_state) {
|
||||
'booking_session_id' => $session,
|
||||
'booking_is_leader' => $leader,
|
||||
'booking_is_helper' => $helper,
|
||||
'booking_is_reserveleader' => $reserve_leader,
|
||||
))
|
||||
->condition('booking_node_id', $key)
|
||||
->condition('booking_studygroup_id', $booking_studygroup)
|
||||
@@ -427,7 +460,7 @@ function booking_studygroups_calculate() {
|
||||
//search for the leaders and helpers for this study group
|
||||
foreach ($group_mapping as $person)
|
||||
{
|
||||
if ($person->booking_studygroup_id == $group->sid && ($person->booking_is_leader == 'Y' || $person->booking_is_helper == 'Y'))
|
||||
if ($person->booking_studygroup_id == $group->sid && ($person->booking_is_leader == 'Y' || $person->booking_is_helper == 'Y' || $person->booking_is_reserveleader == 'Y'))
|
||||
{
|
||||
|
||||
drupal_set_message(t('Leader/helper with id !id assigned to session !session (currently with !num people).', array('!id' => $person->booking_node_id, '!session' => $person->booking_session_id, '!num' => $session_count[$person->booking_session_id])));
|
||||
@@ -686,9 +719,10 @@ function booking_studygroups_view_form($node, &$form_state, $group_id) {
|
||||
|
||||
$header = array(
|
||||
'booking_session_id' => array('data' => t('Study Group Session'), 'field' => 'm.booking_session_id', 'sort' => 'asc'),
|
||||
'booking_name' => array('data' => t('Name'), 'field' => 'p.booking_lastname', 'sort' => 'asc'),
|
||||
'booking_is_leader' => array('data' => t('Leader?'), 'field' => 'm.booking_is_leader', 'sort' => 'asc'),
|
||||
'booking_is_helper' => array('data' => t('Helper?'), 'field' => 'm.booking_is_helper', 'sort' => 'asc'),
|
||||
'booking_name' => array('data' => t('Name'), 'field' => 'p.booking_lastname'),
|
||||
'booking_is_leader' => array('data' => t('Leader?'), 'field' => 'm.booking_is_leader'),
|
||||
'booking_is_helper' => array('data' => t('Helper?'), 'field' => 'm.booking_is_helper'),
|
||||
'booking_is_reserveleader' => array('data' => t('Reserve Leader?'), 'field' => 'm.booking_is_reserveleader'),
|
||||
);
|
||||
|
||||
$query = db_select('booking_person', 'p');
|
||||
@@ -719,6 +753,8 @@ function booking_studygroups_view_form($node, &$form_state, $group_id) {
|
||||
$class = "leader-row";
|
||||
elseif ($data->booking_is_helper == 'Y')
|
||||
$class = "helper-row";
|
||||
elseif ($data->booking_is_reserveleader == 'Y')
|
||||
$class = "helper-row";
|
||||
else
|
||||
$class = "normal-row";
|
||||
|
||||
@@ -742,6 +778,7 @@ function booking_studygroups_view_form($node, &$form_state, $group_id) {
|
||||
'booking_name' => $data->booking_firstname . " " . $data->booking_lastname,
|
||||
'booking_is_leader' => $data->booking_is_leader == 'Y' ? 'Yes' : 'No',
|
||||
'booking_is_helper' => $data->booking_is_helper == 'Y' ? 'Yes' : 'No',
|
||||
'booking_is_reserveleader' => $data->booking_is_reserveleader == 'Y' ? 'Yes' : 'No',
|
||||
'#attributes' => array('id' => array($class))
|
||||
);
|
||||
|
||||
|
Reference in New Issue
Block a user