$event->eid, ':sid' => $group_id)); $studygroups = $studygroups_query->fetchAllAssoc('sid'); //get the list of study group session memberships $session_members_query = db_query("SELECT * FROM {booking_studygroup_mapping} WHERE booking_studygroup_id = :sid", array(':sid' => $group_id)); $session_members = $session_members_query->fetchAll(); //set up the column headings foreach ($studygroups as $studygroup) { $header_array[] = $studygroup->sid; } $header = implode( $delimiter, $header_array ); $csv .= $header . "\n"; //calculate the row data foreach ($session_members as $member) { if (! isset($data_array[$member->booking_session_id])) { $data_array[$member->booking_session_id] = new stdClass(); } // @todo // lookup the actual name and put this instead of just the node id $data_array[$member->booking_session_id][] = $member->booking_node_id; } $out = fopen('php://output', 'w'); fputcsv2 ($out, $data_array); fclose($out); } /** * Function taken from http://php.net/manual/en/function.fputcsv.php#87120 */ function fputcsv2 ($fh, array $fields, $delimiter = ',', $enclosure = '"', $mysql_null = false) { $delimiter_esc = preg_quote($delimiter, '/'); $enclosure_esc = preg_quote($enclosure, '/'); $output = array(); foreach ($fields as $field) { if ($field === null && $mysql_null) { $output[] = 'NULL'; continue; } $output[] = preg_match("/(?:${delimiter_esc}|${enclosure_esc}|\s)/", $field) ? ( $enclosure . str_replace($enclosure, $enclosure . $enclosure, $field) . $enclosure ) : $field; } fwrite($fh, join($delimiter, $output) . "\n"); }