change CSV output code
This commit is contained in:
@@ -5,6 +5,7 @@
|
|||||||
*/
|
*/
|
||||||
function booking_studygroups_csv_report($group_id) {
|
function booking_studygroups_csv_report($group_id) {
|
||||||
global $event;
|
global $event;
|
||||||
|
$data = array();
|
||||||
|
|
||||||
//verify that $group_id is a number
|
//verify that $group_id is a number
|
||||||
if (! preg_match('/^[0-9]+$/', $group_id)) {
|
if (! preg_match('/^[0-9]+$/', $group_id)) {
|
||||||
@@ -14,7 +15,6 @@ function booking_studygroups_csv_report($group_id) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//set options for the CSV file
|
//set options for the CSV file
|
||||||
/*
|
|
||||||
$name = 'bookings-studygroup-' . $group_id . '-' . format_date(time(), 'custom', 'Y-m-d-His');
|
$name = 'bookings-studygroup-' . $group_id . '-' . format_date(time(), 'custom', 'Y-m-d-His');
|
||||||
$filename = file_directory_temp() . '/' . $name;
|
$filename = file_directory_temp() . '/' . $name;
|
||||||
$csv = '';
|
$csv = '';
|
||||||
@@ -24,11 +24,7 @@ function booking_studygroups_csv_report($group_id) {
|
|||||||
$nullToMysqlNull = true;
|
$nullToMysqlNull = true;
|
||||||
$delimiter_esc = preg_quote($delimiter, '/');
|
$delimiter_esc = preg_quote($delimiter, '/');
|
||||||
$enclosure_esc = preg_quote($enclosure, '/');
|
$enclosure_esc = preg_quote($enclosure, '/');
|
||||||
*/
|
|
||||||
|
|
||||||
$header_array = array();
|
|
||||||
$data_array = array();
|
|
||||||
|
|
||||||
//is this study group a readings group?
|
//is this study group a readings group?
|
||||||
// @todo do we even care?
|
// @todo do we even care?
|
||||||
/*
|
/*
|
||||||
@@ -39,60 +35,59 @@ function booking_studygroups_csv_report($group_id) {
|
|||||||
$is_reading_group = FALSE;
|
$is_reading_group = FALSE;
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// @todo
|
|
||||||
// get a listing of all the registrations so we can lookup people's names based on their node id
|
|
||||||
|
|
||||||
//get the list of study group sessions IDs
|
|
||||||
/*
|
|
||||||
$studygroup_sessions_query = db_query("SELECT distinct booking_session_id FROM {booking_studygroup_mapping} " .
|
|
||||||
"WHERE booking_eventid = :eid AND booking_studygroup_id = :sid " .
|
|
||||||
"ORDER BY booking_session_id",
|
|
||||||
array(':eid' => $event->eid, ':sid' => $group_id));
|
|
||||||
$studygroup_sessions = $studygroup_sessions_query->fetchAll();
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
$studygroups_query = db_query("SELECT * FROM {booking_studygroup_list} WHERE booking_eventid = :eid and sid = :sid",
|
|
||||||
array(':eid' => $event->eid, ':sid' => $group_id));
|
|
||||||
$studygroups = $studygroups_query->fetchAllAssoc('sid');
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
//set up the column headings
|
|
||||||
foreach ($studygroups as $studygroup) {
|
|
||||||
$header_array[] = $studygroup->sid;
|
|
||||||
}
|
|
||||||
$header = implode( $delimiter, $header_array );
|
|
||||||
$csv .= $header . "\n";
|
|
||||||
*/
|
|
||||||
|
|
||||||
//get the list of study group session memberships
|
//get the list of study group session memberships
|
||||||
$session_members_query = db_query("SELECT * FROM {booking_studygroup_mapping} WHERE booking_studygroup_id = :sid",
|
$session_members_query = db_query("SELECT * FROM {booking_studygroup_mapping} WHERE booking_studygroup_id = :sid ORDER BY booking_session_id",
|
||||||
array(':sid' => $group_id));
|
array(':sid' => $group_id));
|
||||||
$session_members = $session_members_query->fetchAll();
|
$session_members = $session_members_query->fetchAll();
|
||||||
|
|
||||||
//calculate the row data
|
//generate the row data
|
||||||
foreach ($session_members as $member) {
|
foreach ($session_members as $member) {
|
||||||
if (! isset($data_array[$member->booking_session_id])) {
|
if (! isset($data[$member->booking_session_id])) {
|
||||||
$data_array[$member->booking_session_id] = array();
|
$data[$member->booking_session_id] = array();
|
||||||
}
|
}
|
||||||
// @todo
|
// @todo
|
||||||
// lookup the actual name and put this instead of just the node id
|
// lookup the actual name and put this instead of just the node id
|
||||||
|
|
||||||
$data_array[$member->booking_session_id][] = $member->booking_node_id;
|
$data[$member->booking_session_id][] = $member->booking_node_id;
|
||||||
}
|
}
|
||||||
watchdog('booking_debug', "<pre>Study Group CSV Report\n@info</pre>", array('@info' => print_r( $data_array, true)));
|
watchdog('booking_debug', "<pre>Study Group CSV Report\n@info</pre>", array('@info' => print_r( $data_array, true)));
|
||||||
$out = fopen('php://output', 'w');
|
|
||||||
//create the CSV header using just the array keys
|
|
||||||
fputcsv2($out, array_keys($data_array));
|
|
||||||
|
|
||||||
//output each subsequent of the multi-dimensional array
|
//calculate the CSV layout
|
||||||
foreach ($data_array as $fields) {
|
$header_array = array_keys($data);
|
||||||
fputcsv2($out, $fields);
|
$maximums = array();
|
||||||
|
foreach ($header_array as $column) {
|
||||||
|
$maximums[] = count($data[$column]);
|
||||||
}
|
}
|
||||||
//close the output
|
|
||||||
fclose($out);
|
//add the column headings to the CSV
|
||||||
|
$header = implode( $delimiter, $header_array );
|
||||||
|
$csv .= $header . "\n";
|
||||||
|
|
||||||
|
//generate each row for the CSV
|
||||||
|
for ($i = 0; $i < max($maximums); $i++) {
|
||||||
|
$output = array();
|
||||||
|
foreach ($header_array as $column) {
|
||||||
|
$field = isset($data[$column][$i]) ? $data[$column][$i] : '';
|
||||||
|
|
||||||
|
//enclose $field if necessary
|
||||||
|
if ( $encloseAll || preg_match( "/(?:${delimiter_esc}|${enclosure_esc}|\s)/", $field ) ) {
|
||||||
|
$output[] = $enclosure . str_replace($enclosure, $enclosure . $enclosure, $field) . $enclosure;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$output[] = $field;
|
||||||
|
}
|
||||||
|
} //loop through columns
|
||||||
|
$row = implode($delimiter, $output) . "\n";
|
||||||
|
$csv .= $row;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//output the CSV to the browser
|
||||||
|
drupal_add_http_header("Content-type", "application/octet-stream; charset=utf-8");
|
||||||
|
drupal_add_http_header("Content-Disposition", "attachment; filename=" . $name . ".csv");
|
||||||
|
print $csv;
|
||||||
|
exit(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Reference in New Issue
Block a user