diff --git a/booking.helper.inc b/booking.helper.inc index 6e5a066..ffcdb57 100644 --- a/booking.helper.inc +++ b/booking.helper.inc @@ -269,7 +269,7 @@ function _booking_convert_ts($timestamp) /** - * Helper function to ensure timestamp is converted to correct local time + * Helper function to calculate the timestamp corresponding with the DOB requirements */ function _booking_max_dob_ts() { @@ -278,6 +278,22 @@ function _booking_max_dob_ts() return mktime(12, 0, 0, $max_dob_matches[2], $max_dob_matches[3], $max_dob_matches[1]); } +/** + * Helper function to calculate the average age in days, months and years at the start of the event + */ +function _booking_avg_age($sum, $count, $reference_ts) +{ + global $event; + //calculate the average age timestamp + $average = $sum / $count; + //get the difference between now and the average timestamp + $average_date = _booking_convert_ts(floor($average)); + $now_date = _booking_convert_ts(floor($reference_ts)); + $difference = $average_date->diff($now_date); + //convert the difference into english + return $difference->y . " years, " . $difference->m . " months, " . $difference->d . " days"; +} + function _date_range_to_string($date_start, $date_end) { $start = _booking_split_date($date_start); $end = _booking_split_date($date_end); diff --git a/booking.reports.inc b/booking.reports.inc index 29e0679..4024f8a 100644 --- a/booking.reports.inc +++ b/booking.reports.inc @@ -18,12 +18,11 @@ function booking_report_summary() { $married_count = 0; $total_paid = 0; $dob_total = 0; + $male_dob_total = 0; + $female_dob_total = 0; $person_count = 0; - $average = 0; - $average_age = ""; - //$year = 60 * 60 * 24 * 365.25; - $stats_attributes = array('style' => 'max-width:30%'); - + + $stats_attributes = array('style' => 'max-width:30%'); $header = array('Id', 'Name', 'Email', 'Payment To Date', 'Total Payment Required'); $rows = array(); $state_header = array('State', 'Count'); @@ -61,9 +60,15 @@ function booking_report_summary() { $person_count++; if ($person->booking_gender == 'M') + { $male_count++; + $male_dob_total += $person->booking_dob; + } else + { $female_count++; + $female_dob_total += $person->booking_dob; + } if ($person->booking_baptised == 'Y') $baptised_count++; @@ -72,10 +77,8 @@ function booking_report_summary() { $married_count++; } - //calculate the average age timestamp - $average = $dob_total / $person_count; //convert that to years - $average_age = floor((time() - $average) / (60 * 60 * 24 * 365.25)); + //$average_age = floor((time() - $average) / (60 * 60 * 24 * 365.25)); //bookings by ecclesia $query = db_select('booking_person', 'p') @@ -113,11 +116,16 @@ function booking_report_summary() { } //output everything - $output .= t("

There are !boys males and !girls females registered. Of these, !baptised are baptised and !married are married. The average age is !average years.", + $output .= t("

General Statistics

"); + $output .= t("

There are !boys males and !girls females registered. Of these, !baptised are baptised and !married are married.
", array('!boys' => $male_count, '!girls' => $female_count, '!baptised' => $baptised_count, '!married' => $married_count - '!average' => $average_age)); - $output .= t("Total of !bookedin registrations currently booked in, !waiting on waiting list, and !notpaid haven't paid.
", - array('!bookedin' => $bookedin_counter, '!waiting' => $waiting_counter, '!notpaid' => $notpaid_counter)); + )); + $output .= t("The overall average age at the start of the week will be !average. The male average age will be !maleaverage. The female average age will be !femaleaverage.
", + array('!average' => _booking_avg_age($dob_total, $person_count, $event->booking_event_start), '!maleaverage' => _booking_avg_age($male_dob_total, $male_count, $event->booking_event_start), + '!femaleaverage' => _booking_avg_age($female_dob_total, $female_count, $event->booking_event_start) + )); + $output .= t("There are !bookedin registrations currently booked in, !waiting on waiting list, and !notpaid haven't paid, which comes to a total of !total people who have filled in the registration form.
", + array('!bookedin' => $bookedin_counter, '!waiting' => $waiting_counter, '!notpaid' => $notpaid_counter, '!total' => $person_count)); $output .= t("Total amount paid: $!paid

", array('!paid' => $total_paid)); $output .= t("

Bookings by state

"); $output .= theme('table', array('header' => $state_header, 'rows' => $state_rows, 'attributes' => $stats_attributes));