/** * Short description for 'downloadlist' * * Long description (if any) ... * * @param object $resp Parameter description (if any) ... * @param unknown $option Parameter description (if any) ... * @return void */ public static function downloadlist($resp, $option) { $database = \App::get('db'); $ee = new \Components\Events\Tables\Event($database); header('Content-type: text/comma-separated-values'); header('Content-disposition: attachment; filename="eventrsvp.csv"'); $fields = array('name', 'registered', 'affiliation', 'email', 'telephone', 'arrival', 'departure', 'disability', 'dietary', 'dinner'); //array_merge($ee->getDefinedFields(Request::getVar('id', array())), array('name')); // Output header usort($fields, array('\\Components\\Events\\Helpers\\Csv', 'fieldSorter')); echo self::quoteRow(array_map('ucfirst', $fields)); $rows = $resp->getRecords(); // Get a list of IDs to query the race identification for all of them at once to avoid // querying for it in a loop later $race_ids = array(); foreach ($rows as $re) { $race_ids[$re->id] = array('identification' => ''); } foreach (\Components\Events\Tables\Respondent::getRacialIdentification(array_keys($race_ids)) as $id => $val) { $race_ids[$id] = $val; } // Output rows foreach ($rows as $re) { if (!isset($re->last_name) || !$re->last_name) { $re->last_name = '[unknown]'; } if (!isset($re->first_name) || !$re->first_name) { $re->first_name = '[unknown]'; } $row = array($re->last_name . ', ' . $re->first_name); // TODO: Oops, I should have made these fields match up better in the first place. foreach ($fields as $field) { switch ($field) { case 'name': break; case 'position': $row[] = $re->position_description; break; case 'comments': $row[] = $re->comment; break; case 'degree': $row[] = $re->highest_degree; break; case 'race': $row[] = $race_ids[$re->id]['identification']; break; case 'address': $address = array(); if ($re->city) { $address[] = $re->city; } if ($re->state) { $address[] = $re->state; } if ($re->zip) { $address[] = $re->zip; } if ($re->country) { $address[] = $re->country; } $row[] = implode(', ', $address); break; case 'disability': $row[] = $re->disability_needs ? 'Yes' : 'No'; break; case 'dietary': $row[] = $re->dietary_needs; break; case 'dinner': $row[] = $re->attending_dinner ? 'Yes' : 'No'; break; default: if (isset($re->{$field})) { $row[] = $re->{$field}; } else { $row[] = ''; } break; } } echo self::quoteRow($row); } exit; }
?> <?php if (!empty($resp->website)) { ?> <tr><td><?php echo Lang::txt('COM_EVENTS_RESPONDANT_WEBSITE'); ?> </td><td><?php echo $this->escape($resp->website); ?> </td></tr> <?php } ?> <?php $race = \Components\Events\Tables\Respondent::getRacialIdentification($resp->id); if (!empty($race)) { ?> <tr><td><?php echo Lang::txt('COM_EVENTS_RESPONDANT_RACE'); ?> </td><td><?php echo $this->escape($race); ?> </td></tr> <?php } ?> <?php if (!empty($resp->gender)) { ?>