function render($data) { $tournament = $data['tournament']; $disciplines = $data['disciplines']; $header = ['Event' => 'string', 'SpielerID' => 'string', 'Name' => 'string', 'Vorname' => 'string', 'Verein' => 'string', 'Geschlecht' => 'string', 'Email' => 'string', 'Partner ID' => 'string', 'Setzplatz' => 'string']; $output = []; foreach ($disciplines as $d) { $dname = $d->name; // Fix up discipline names if (\preg_match('/^H([DE]) U0?([0-9]+)$/', $dname, $m)) { $dname = 'J' . $m[1] . ' U' . $m[2]; } elseif (\preg_match('/^D([DE]) U0?([0-9]+)$/', $dname, $m)) { $dname = 'M' . $m[1] . ' U' . $m[2]; } elseif (\preg_match('/^(DD|DE|GD|HD|HE|MX)-?\\s*([A-Z])$/', $dname, $m)) { $dname = $m[1] . $m[2]; } $is_doubles = $d->with_partner(); foreach ($d->entries as $er) { if ($er['on_waiting_list']) { continue; } if ($is_doubles && $er['partner'] === NULL) { continue; } \array_push($output, [$dname, $er['player']->textid, $er['player']->get_lastname(), $er['player']->get_firstname(), $er['player_club']->name, $er['player']->gender, $er['player']->email, $is_doubles ? $er['partner']->textid : '', $er['seeding']]); if ($is_doubles) { \array_push($output, [$dname, $er['partner']->textid, $er['partner']->get_lastname(), $er['partner']->get_firstname(), $er['partner_club']->name, $er['partner']->gender, $er['partner']->email, $is_doubles ? $er['player']->textid : '', $er['seeding']]); } } } $writer = new \XLSXWriter(); $writer->writeSheet($output, 'Meldungen', $header); $safe_filename = \bmtmgr\utils\sanitize_filename($tournament->name); header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); header('Content-Disposition: attachment; filename="' . $safe_filename . '.xlsx"'); echo $writer->writeToString(); }
public function test_sanitize_filename() { $this->assertEquals(\bmtmgr\utils\sanitize_filename('a"bc""'), 'abc'); $this->assertEquals(\bmtmgr\utils\sanitize_filename("x\n"), 'x'); $this->assertEquals(\bmtmgr\utils\sanitize_filename('Düßeldorf 2015.dat'), 'Düßeldorf 2015.dat'); }