-
Notifications
You must be signed in to change notification settings - Fork 0
/
geofaith_backend.php
69 lines (53 loc) · 2.53 KB
/
geofaith_backend.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
<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
if (isset($_SERVER['HTTP_ORIGIN'])) {
header("Access-Control-Allow-Origin: {$_SERVER['HTTP_ORIGIN']}");
} else {
header("Access-Control-Allow-Origin: *");
}
header('Access-Control-Allow-Credentials: true');
header('Access-Control-Max-Age: 86400'); // cache for 1 day
// Access-Control headers are received during OPTIONS requests
if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {
if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_METHOD'])) {
// may also be using PUT, PATCH, HEAD etc
header("Access-Control-Allow-Methods: GET, POST, OPTIONS");
}
if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS'])) {
header("Access-Control-Allow-Headers: {$_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']}");
}
exit(0);
}
header("Content-type: application/json; charset=utf-8");
const GEOFAITH = true;
const CATEGORIES = [
'RELIC', 'APOSTLE', 'EVANGELIST', 'MARTYR', 'EUCHARISTIC_MIRACLE',
'CATHEDRAL', 'MARIAN_SHRINE', 'SHRINE',
'SAINT_UNIVERSAL', 'SAINT_LOCAL', 'FRESCO', 'MOSAIC', 'ICON', 'PAINTING', 'STATUE'
];
include_once 'geofaith_credentials.php';
$dbh = new PDO(getenv('MYSQLDNS') . ';dbname=' . getenv('DBNAME'), getenv('DBUSER'), getenv('DBPASS'));
$params = [];
if ($_SERVER['REQUEST_METHOD'] === 'GET') {
$params = $_GET;
} elseif ($_SERVER['REQUEST_METHOD'] === 'POST') {
$params = $_POST;
}
if (!isset($params['LANG'])) {
$params['LANG'] = 'EN';
}
if (isset($params['CAT']) && in_array($params['CAT'], CATEGORIES)) {
$stmt = $dbh->prepare("SELECT p.id_key, n.{$params['LANG']} AS name, d.{$params['LANG']} as description, p.`latitude`, p.`longitude`, p.`category`, p.`marker_icon`, p.`marker_color`, p.`city`, p.`country`, p.`tags` FROM `pilgrimage_sites` p LEFT JOIN `i18n__name` n ON p.`id_key` = n.`id_key` LEFT JOIN `i18n__description` d ON p.`id_key` = d.`id_key` WHERE FIND_IN_SET(:CAT, p.`category`) > 0");
$stmt->execute(['CAT' => $params['CAT']]);
$result = $stmt->fetchAll(PDO::FETCH_OBJ);
echo json_encode($result);
} else {
$stmt = $dbh->query("SELECT p.id_key, n.{$params['LANG']} AS name, d.{$params['LANG']} as description, p.`latitude`, p.`longitude`, p.`category`, p.`marker_icon`, p.`marker_color`, p.`city`, p.`country`, p.`tags` FROM `pilgrimage_sites` p LEFT JOIN `i18n__name` n ON p.`id_key` = n.`id_key` LEFT JOIN `i18n__description` d ON p.`id_key` = d.`id_key`");
$result = $stmt->fetchAll(PDO::FETCH_OBJ);
echo json_encode($result);
}
$result = null;
$dbh = null;
die();