mirror of https://github.com/itsmrval/subway
feat(stops) caching stops
parent
1d20fd7815
commit
cf5f96f47b
|
|
@ -16,8 +16,6 @@ function getUsers() {
|
|||
}
|
||||
}
|
||||
|
||||
$users = getUsers();
|
||||
|
||||
function updateUserDetails($userId, $email, $firstName, $lastName, $is_admin, $password = null) {
|
||||
global $conn;
|
||||
try {
|
||||
|
|
@ -46,39 +44,9 @@ function deleteUser($userId) {
|
|||
}
|
||||
}
|
||||
|
||||
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['userId'])) {
|
||||
if (isset($_POST['delete'])) {
|
||||
if ($_POST['userId'] == $_SESSION['user_id']) {
|
||||
echo 222;
|
||||
$_SESSION['message'] = '<div class="alert alert-danger text-center" role="alert">You cannot delete yourself.</div>';
|
||||
header("Location: " . $_SERVER['REQUEST_URI']);
|
||||
exit();
|
||||
}
|
||||
$success = deleteUser($_POST['userId']);
|
||||
if ($success) {
|
||||
$_SESSION['message'] = '<div class="alert alert-success text-center" role="alert">User deleted successfully.</div>';
|
||||
} else {
|
||||
$_SESSION['message'] = '<div class="alert alert-danger text-center" role="alert">Failed to delete user.</div>';
|
||||
}
|
||||
header("Location: " . $_SERVER['REQUEST_URI']);
|
||||
exit();
|
||||
}
|
||||
|
||||
$password = !empty($_POST['password']) ? $_POST['password'] : null;
|
||||
$_POST['is_admin'] = isset($_POST['is_admin']) ? 1 : 0;
|
||||
|
||||
$users = getUsers();
|
||||
|
||||
$success = updateUserDetails($_POST['userId'], $_POST['email'], $_POST['firstName'], $_POST['lastName'], $_POST['is_admin'], $password);
|
||||
|
||||
if ($success) {
|
||||
$_SESSION['message'] = '<div class="alert alert-success text-center" role="alert">User updated successfully.</div>';
|
||||
} else {
|
||||
$_SESSION['message'] = '<div class="alert alert-danger text-center" role="alert">Failed to update user.</div>';
|
||||
}
|
||||
|
||||
header("Location: " . $_SERVER['REQUEST_URI']);
|
||||
exit();
|
||||
}
|
||||
include 'post.php';
|
||||
|
||||
?>
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,37 @@
|
|||
<?php
|
||||
|
||||
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['userId'])) {
|
||||
if (isset($_POST['delete'])) {
|
||||
if ($_POST['userId'] == $_SESSION['user_id']) {
|
||||
echo 222;
|
||||
$_SESSION['message'] = '<div class="alert alert-danger text-center" role="alert">You cannot delete yourself.</div>';
|
||||
header("Location: " . $_SERVER['REQUEST_URI']);
|
||||
exit();
|
||||
}
|
||||
$success = deleteUser($_POST['userId']);
|
||||
if ($success) {
|
||||
$_SESSION['message'] = '<div class="alert alert-success text-center" role="alert">User deleted successfully.</div>';
|
||||
} else {
|
||||
$_SESSION['message'] = '<div class="alert alert-danger text-center" role="alert">Failed to delete user.</div>';
|
||||
}
|
||||
header("Location: " . $_SERVER['REQUEST_URI']);
|
||||
exit();
|
||||
}
|
||||
|
||||
$password = !empty($_POST['password']) ? $_POST['password'] : null;
|
||||
$_POST['is_admin'] = isset($_POST['is_admin']) ? 1 : 0;
|
||||
|
||||
|
||||
$success = updateUserDetails($_POST['userId'], $_POST['email'], $_POST['firstName'], $_POST['lastName'], $_POST['is_admin'], $password);
|
||||
|
||||
if ($success) {
|
||||
$_SESSION['message'] = '<div class="alert alert-success text-center" role="alert">User updated successfully.</div>';
|
||||
} else {
|
||||
$_SESSION['message'] = '<div class="alert alert-danger text-center" role="alert">Failed to update user.</div>';
|
||||
}
|
||||
|
||||
header("Location: " . $_SERVER['REQUEST_URI']);
|
||||
exit();
|
||||
}
|
||||
|
||||
?>
|
||||
|
|
@ -29,7 +29,7 @@ $lineIds = $query->fetchAll(PDO::FETCH_COLUMN);
|
|||
?>
|
||||
|
||||
<div class="px-4 my-5 text-center">
|
||||
<h1 class="display-5 fw-bold">Subway Schedule</h1>
|
||||
<h1 class="display-5 fw-bold">Subways</h1>
|
||||
<div class="col-lg-6 mx-auto">
|
||||
<p class="lead mb-4">Displaying your favorite stations and lines below</p>
|
||||
|
||||
|
|
@ -46,7 +46,6 @@ if (empty($lineIds)) {
|
|||
}
|
||||
?>
|
||||
|
||||
|
||||
<script>
|
||||
function removeFavorite(stopId, lineId) {
|
||||
|
||||
|
|
|
|||
|
|
@ -12,6 +12,11 @@ if ($_SERVER['REQUEST_METHOD'] == 'POST') {
|
|||
$_SESSION['first_name'] = $user['first_name'];
|
||||
$_SESSION['is_admin'] = $user['is_admin'];
|
||||
header("Location: /");
|
||||
|
||||
$log = $conn->prepare("INSERT INTO logs (userId, date) VALUES (:userId, :date)");
|
||||
$log->bindParam(':userId', $user['id']);
|
||||
$log->bindParam(':date', date('Y-m-d-H-i-s'));
|
||||
$log->execute();
|
||||
} else {
|
||||
$errorMessage = "Invalid email or password.";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,12 +1,10 @@
|
|||
<?php
|
||||
|
||||
function getStops($line) {
|
||||
$json = file_get_contents(__DIR__ . '/../../data/stops.json');
|
||||
$data = json_decode($json, true);
|
||||
$result = array_filter($data, function($item) use ($line) {
|
||||
return $item['fields']['mode'] === 'METRO' && $item['fields']['indice_lig'] === "$line";
|
||||
});
|
||||
return $result;
|
||||
function getStops($lineId) {
|
||||
global $conn;
|
||||
$stmt = $conn->prepare("SELECT * FROM stops WHERE lineId = ?");
|
||||
$stmt->execute([$lineId]);
|
||||
return $stmt->fetchAll();
|
||||
}
|
||||
|
||||
function isFavorite($userId, $stopId, $lineId) {
|
||||
|
|
@ -16,6 +14,7 @@ function isFavorite($userId, $stopId, $lineId) {
|
|||
return $stmt->rowCount() > 0;
|
||||
}
|
||||
|
||||
|
||||
?>
|
||||
|
||||
<div class="px-4 my-5 text-center">
|
||||
|
|
@ -29,7 +28,11 @@ function isFavorite($userId, $stopId, $lineId) {
|
|||
<div class="card">
|
||||
<div class="card-body">
|
||||
<div class="row">
|
||||
<?php for ($i = 1; $i <= 14; $i++): ?>
|
||||
<?php
|
||||
for ($i = 1; $i <= 14; $i++):
|
||||
$stops = getStops($i);
|
||||
if (!empty($stops)):
|
||||
?>
|
||||
<div class="col-2 mb-3">
|
||||
<div class="card h-100">
|
||||
<div class="card-body">
|
||||
|
|
@ -44,9 +47,12 @@ function isFavorite($userId, $stopId, $lineId) {
|
|||
<button type="button" class="btn-close" data-bs-dismiss="modal"></button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<?php $stations = getStops($i); ?>
|
||||
<div class="row">
|
||||
<?php include 'stop_list.php'; ?>
|
||||
<?php
|
||||
$stops = getStops($i);
|
||||
include 'stop_list.php';
|
||||
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -58,7 +64,7 @@ function isFavorite($userId, $stopId, $lineId) {
|
|||
<?php if ($i % 6 === 0): ?>
|
||||
</div><div class="row">
|
||||
<?php endif; ?>
|
||||
<?php endfor; ?>
|
||||
<?php endif; endfor; ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -1,10 +1,8 @@
|
|||
<div class="row">
|
||||
<?php
|
||||
$half = ceil(count($stations) / 2);
|
||||
$chunks = array_chunk($stations, $half, true);
|
||||
?>
|
||||
|
||||
<?php foreach ($chunks as $chunk): ?>
|
||||
$chunks = array_chunk($stops, ceil(count($stops) / 2), true);
|
||||
|
||||
foreach ($chunks as $chunk): ?>
|
||||
<div class="col-md-6">
|
||||
<table class="table table-striped">
|
||||
<thead>
|
||||
|
|
@ -16,12 +14,12 @@
|
|||
<tbody>
|
||||
<?php foreach ($chunk as $station): ?>
|
||||
<tr>
|
||||
<td><?php echo htmlspecialchars($station['fields']['nom_zda']); ?></td>
|
||||
<td><?php echo htmlspecialchars($station['name']); ?></td>
|
||||
<td class="text-end">
|
||||
<?php if (isFavorite($_SESSION['user_id'], $station['fields']['id_ref_zda'], $i)): ?>
|
||||
<button class="btn btn-danger remove-stop" data-station-id="<?= $station['fields']['id_ref_zda'] ?>" data-line-id="<?= $i ?>">Retirer</button>
|
||||
<?php if (isFavorite($_SESSION['user_id'], $station['id'], $i)): ?>
|
||||
<button class="btn btn-danger remove-stop" data-station-id="<?= $station['id'] ?>" data-line-id="<?= $i ?>">Revoke</button>
|
||||
<?php else: ?>
|
||||
<button class="btn btn-success add-stop" data-station-id="<?= $station['fields']['id_ref_zda'] ?>" data-line-id="<?= $i ?>">Ajouter</button>
|
||||
<button class="btn btn-success add-stop" data-station-id="<?= $station['id'] ?>" data-line-id="<?= $i ?>">Add</button>
|
||||
<?php endif; ?>
|
||||
</td>
|
||||
</tr>
|
||||
|
|
|
|||
|
|
@ -15,14 +15,23 @@ try {
|
|||
)");
|
||||
|
||||
$conn->exec("CREATE TABLE IF NOT EXISTS favorites (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
userId INT NOT NULL,
|
||||
stopId INT NOT NULL,
|
||||
lineId INT NOT NULL,
|
||||
FOREIGN KEY (userId) REFERENCES users(id)
|
||||
)");
|
||||
|
||||
$conn->exec("CREATE TABLE IF NOT EXISTS logs (
|
||||
userId INT NOT NULL,
|
||||
date DATETIME NOT NULL,
|
||||
FOREIGN KEY (userId) REFERENCES users(id)
|
||||
)");
|
||||
|
||||
$conn->exec("CREATE TABLE IF NOT EXISTS stops (
|
||||
id INT NOT NULL PRIMARY KEY,
|
||||
lineId INT NOT NULL,
|
||||
name VARCHAR(255) NOT NULL
|
||||
)");
|
||||
|
||||
} catch(PDOException $e) {
|
||||
echo "Connection failed: " . $e->getMessage();
|
||||
|
|
|
|||
Loading…
Reference in New Issue