-
Notifications
You must be signed in to change notification settings - Fork 0
/
export01.php
117 lines (98 loc) · 3.54 KB
/
export01.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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
<?php
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\JsonResponse;
require_once "classes/start.inc.php";
// check if export_key is valid
if ( !isExportKeyValid() ) {
// export_key not correct, check if user logged in
$oWebuser->checkLoggedIn();
if ( !$oWebuser->isSuperAdmin() ) {
echo "You are not authorized to access this page.<br>";
die('Go to <a href="index.php">staff home</a>');
}
}
createExport();
function createExport() {
global $dbConn, $twig;
$export_type = '';
if ( isset($_GET['export_type']) ) {
$export_type = strtolower(trim($_GET['export_type']));
}
if ( !in_array($export_type, array('csv', 'csv_comma', 'csv_tab', 'xml', 'json') ) ) {
$export_type = 'csv';
}
$users = array();
//
$query = "SELECT `NAME` AS LASTNAME, FIRSTNAME, EMAIL, SHORT_1 AS DEPARTMENT FROM protime_curric
LEFT JOIN protime_depart ON protime_curric.DEPART = `protime_depart`.DEPART
WHERE DATE_OUT = 0 OR DATE_OUT >= '" . date("Ymd") . "'
ORDER BY NAME, FIRSTNAME, SHORT_1
";
$stmt = $dbConn->getConnection()->prepare($query);
$stmt->execute();
$result = $stmt->fetchAll();
foreach ($result as $row) {
$user = array();
$user['LASTNAME'] = makeSafe(''.$row['LASTNAME'], $export_type);
$user['FIRSTNAME'] = makeSafe(''.$row['FIRSTNAME'], $export_type);
$user['EMAIL'] = makeSafe(''.$row['EMAIL'], $export_type);
$user['DEPARTMENT'] = makeSafe(''.$row['DEPARTMENT'], $export_type);
$users[] = $user;
}
if ( $export_type == 'csv' || $export_type == 'csv_tab' ) {
// $data = $twig->render("export01_csv.twig", array(
// 'users' => $users
// ));
//
$data = "LASTNAME\tFIRSTNAME\tEMAIL\tDEPARTMENT\r\n";
foreach ( $users as $user ) {
$data .= $user['LASTNAME'] . "\t" . $user['FIRSTNAME'] . "\t" . $user['EMAIL'] . "\t" . $user['DEPARTMENT'] . "\r\n";
}
$response = new Response( $data );
$response->headers->set('Content-Type', 'text/csv', 'charset=iso-8859-1');
$response->headers->set('Content-Disposition', 'attachment; filename="export01.csv"');
} elseif ( $export_type == 'csv_comma' ) {
//
$data= '"LASTNAME", "FIRSTNAME", "EMAIL", "DEPARTMENT"' . "\r\n";
foreach ( $users as $user ) {
$data .= $user['LASTNAME'] . ', ' . $user['FIRSTNAME'] . ', ' . $user['EMAIL'] . ', ' . $user['DEPARTMENT'] . "\r\n";
}
$response = new Response( $data );
$response->headers->set('Content-Type', 'text/csv', 'charset=iso-8859-1');
$response->headers->set('Content-Disposition', 'attachment; filename="export01.csv"');
} elseif ( $export_type == 'xml' ) {
$xml = $twig->render('export01_xml.twig', array(
'users' => $users
));
$response = new Response( $xml );
$response->headers->set('Content-Type', 'application/xml', 'charset=iso-8859-1');
} elseif ( $export_type == 'json' ) {
$response = new JsonResponse($users);
$response->headers->set('Content-Type', 'application/json', 'charset=iso-8859-1');
} else {
die('Incorrect response 54128745');
}
$response->send();
}
function makeSafe( $value, $export_type = 'csv', $charset = 'iso-8859-1' ) {
$value = trim($value);
switch ( $export_type ) {
case "csv":
case "csv_tab":
$value = htmlspecialchars($value, ENT_XHTML, $charset);
break;
case "csv_comma":
$value = '"' . htmlspecialchars($value, ENT_XHTML, $charset) . '"';
break;
case "json":
$value = htmlentities($value);
break;
case "xml":
// $value = htmlspecialchars($value, ENT_XML1, $charset); // werkt niet onder PHP 5.3
$value = htmlspecialchars($value, ENT_XHTML, $charset);
break;
default:
$value = htmlentities($value);
}
return $value;
}