forked from netgen/LiveVotingBundle
-
Notifications
You must be signed in to change notification settings - Fork 0
/
ExportController.php
52 lines (40 loc) · 1.64 KB
/
ExportController.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<?php
/**
* Created by PhpStorm.
* User: joe
* Date: 7/13/15
* Time: 4:07 PM
*/
namespace Netgen\LiveVotingBundle\Controller;
use Symfony\Component\HttpFoundation\StreamedResponse;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use Netgen\LiveVotingBundle\Entity\User;
class ExportController extends Controller {
public function generateCsvAction() {
$response= new StreamedResponse();
$users = $this->getDoctrine()->getRepository('LiveVotingBundle:User')->findAll();
$response->setCallback(function() use ($users) {
$handle = fopen('php://output','w+');
fputcsv($handle, array('Email', 'Hash', 'Gender','Country','City','T-Shirt','Food preference'),';');
//$results = $this->connection->query('SELECT email, gender, country, city, tshirt, foodPreference FROM user');
//$results->execute();
foreach ($users as $user) {
fputcsv($handle, array(
$user->getEmail(),
md5($this->container->getParameter('email_hash_prefix').$user->getEmail()),
$user->getGender(),
$user->getCountry(),
$user->getCity(),
$user->getTshirt(),
$user->getFoodPreference()
),';');
}
fclose($handle);
});
$response->setStatusCode(200);
$response->headers->set('Content-Type', 'text/csv; charset=utf-8');
$response->headers->set('Content-Disposition','attachment; filename="export.csv"');
return $response;
}
}