12 Commits

25 changed files with 301 additions and 342 deletions

View File

@@ -164,7 +164,7 @@ a {
box-sizing: border-box; box-sizing: border-box;
} }
.tickets-container { .event-container {
position: absolute; position: absolute;
top: 200px; top: 200px;
background-color: #BAC8D4; background-color: #BAC8D4;
@@ -297,7 +297,7 @@ a {
padding: 16px 8px; padding: 16px 8px;
box-sizing: border-box; box-sizing: border-box;
} }
.tickets-container { .event-container {
position: static; position: static;
width: 95vw; width: 95vw;
max-width: 400px; max-width: 400px;
@@ -310,7 +310,7 @@ a {
font-size: 1.5em; font-size: 1.5em;
text-align: center; text-align: center;
} }
.tickets-container h1 { .event-container h1 {
font-size: 1.5em; font-size: 1.5em;
text-align: center; text-align: center;
} }

View File

@@ -50,14 +50,14 @@ class AuthController
if ($result === true) { if ($result === true) {
$_SESSION['user'] = $email; $_SESSION['user'] = $email;
header('Location: /bibarts/?controller=News&do=showNews'); $this->view->setDoMethodName('showLoginSuccess');
exit();
} else { } else {
$this->view->setVars([ $this->view->setVars([
'errors' => ['login' => is_string($result) ? $result : "Login fehlgeschlagen."], 'errors' => ['login' => is_string($result) ? $result : "Login fehlgeschlagen."],
'validData' => ['email' => $email], 'validData' => ['email' => $email],
'loginSuccess' => false 'loginSuccess' => false
]); ]);
$this->view->setDoMethodName('showLoginForm');
} }
} }
@@ -87,7 +87,6 @@ class AuthController
$errors['register'] = is_string($result) ? $result : "Registrierung fehlgeschlagen."; $errors['register'] = is_string($result) ? $result : "Registrierung fehlgeschlagen.";
$this->view->setVars(['errors' => $errors, 'validData' => $data]); $this->view->setVars(['errors' => $errors, 'validData' => $data]);
$this->view->render('Auth/showRegistrationForm'); $this->view->render('Auth/showRegistrationForm');
exit;
} }
} }
@@ -128,8 +127,7 @@ class AuthController
} }
} }
public function showConfirmation() public function showConfirmation() {
{
$messages = [ $messages = [
'login' => "Login erfolgreich.", 'login' => "Login erfolgreich.",
'register' => "Registrierung erfolgreich.", 'register' => "Registrierung erfolgreich.",
@@ -145,7 +143,6 @@ class AuthController
public function logout() { public function logout() {
unset($_SESSION['user']); unset($_SESSION['user']);
session_destroy(); session_destroy();
header('Location: /bibarts/?controller=Auth&do=showLoginForm'); $this->view->setDoMethodName('showLogoutSuccess');
exit();
} }
} }

View File

@@ -1,53 +0,0 @@
<?php
namespace Blog\Controller;
use Blog\Model\ContactModel;
class ContactController
{
protected $view;
private $db;
private $validData = array();
private $errors = array();
private $labels = array("name" => "Name", "email" => "E-Mail-Adresse", "content" => "Nachricht");
public function __construct($view) {
$this->db = new ContactModel();
$this->view = $view;
}
public function showContactForm() {
$this->view->setVars([
'labels' => $this->labels,
'validData' => $this->validData,
'errors' => $this->errors
]);
}
public function showConfirmation() {
}
public function validateForm() {
foreach ($this->labels as $index => $value) {
if (!isset($_POST[$index]) || empty($_POST[$index])) {
$this->errors[$index] = "Bitte " . $value . " angeben";
} else {
$this->validData[$index] = $_POST[$index];
}
}
if (count($this->errors) > 0) {
$this->view->setDoMethodName("showContactForm");
$this->showContactForm();
} else {
if ($this->db->writeContactData($this->validData)) {
$this->view->setDoMethodName("showConfirmation");
$this->showConfirmation();
}
}
}
}
?>

View File

@@ -1,31 +0,0 @@
<?php
namespace Blog\Model;
use PDOException;
class ContactModel extends Database
{
public function writeContactData($values)
{
$guid = $this->createUUID();
$sql = "INSERT INTO contact (`id`, `name`, `email`, `content`) VALUES (
:guid, :name, :email, :content);";
$pdo = $this->linkDB();
try {
$sth = $pdo->prepare($sql);
$sth->execute(array(":guid" => $guid,
":name" => $values["name"],
":email" => $values["email"],
":content" => $values["content"]));
} catch (PDOException $e) {
new \Blog\Library\ErrorMsg("Fehler beim Schreiben der Daten.", $e);
die;
}
return true;
}
}

View File

@@ -8,7 +8,7 @@ class EventModel extends Database {
public function getEvents() { public function getEvents() {
$pdo = $this->linkDB(); $pdo = $this->linkDB();
$sql = "SELECT * FROM ausstellung ORDER BY datum_von DESC;"; $sql = "SELECT * FROM event ORDER BY start_date DESC;";
try { try {
$sth = $pdo->prepare($sql); $sth = $pdo->prepare($sql);
$sth->execute(); $sth->execute();
@@ -21,7 +21,7 @@ class EventModel extends Database {
public function getEvent($id) { public function getEvent($id) {
$pdo = $this->linkDB(); $pdo = $this->linkDB();
$sql = "SELECT * FROM ausstellung WHERE ausstellungid = :id;"; $sql = "SELECT * FROM event WHERE event_id = :id;";
try { try {
$sth = $pdo->prepare($sql); $sth = $pdo->prepare($sql);
$sth->execute([":id" => $id]); $sth->execute([":id" => $id]);
@@ -34,15 +34,15 @@ class EventModel extends Database {
public function updateEvent($id, $data) { public function updateEvent($id, $data) {
$pdo = $this->linkDB(); $pdo = $this->linkDB();
$sql = "UPDATE ausstellung SET standortid = :standortid, datum_von = :datum_von, datum_bis = :datum_bis, name = :name, beschreibung = :beschreibung, max_tickets = :max_tickets, preis = :preis WHERE ausstellungid = :id;"; $sql = "UPDATE event SET location_id = :location_id, start_date = :start_date, end_date = :end_date, name = :name, description = :description, max_tickets = :max_tickets, ticket_price = :ticket_price WHERE event_id = :id;";
$params = [ $params = [
":standortid" => $data['standortid'], ":location_id" => $data['location_id'],
":datum_von" => $data['datum_von'], ":start_date" => $data['start_date'],
":datum_bis" => $data['datum_bis'], ":end_date" => $data['end_date'],
":name" => $data['name'], ":name" => $data['name'],
":beschreibung" => $data['beschreibung'], ":description" => $data['description'],
":max_tickets" => $data['max_tickets'], ":max_tickets" => $data['max_tickets'],
":preis" => $data['preis'], ":ticket_price" => $data['ticket_price'],
":id" => $id ":id" => $id
]; ];
try { try {
@@ -56,15 +56,15 @@ class EventModel extends Database {
public function createEvent($data) { public function createEvent($data) {
$pdo = $this->linkDB(); $pdo = $this->linkDB();
$sql = "INSERT INTO ausstellung (standortid, datum_von, datum_bis, name, beschreibung, max_tickets, preis) VALUES (:standortid, :datum_von, :datum_bis, :name, :beschreibung, :max_tickets, :preis);"; $sql = "INSERT INTO event (location_id, start_date, end_date, name, description, max_tickets, ticket_price) VALUES (:location_id, :start_date, :end_date, :name, :description, :max_tickets, :ticket_price);";
$params = [ $params = [
":standortid" => $data['standortid'], ":location_id" => $data['location_id'],
":datum_von" => $data['datum_von'], ":start_date" => $data['start_date'],
":datum_bis" => $data['datum_bis'], ":end_date" => $data['end_date'],
":name" => $data['name'], ":name" => $data['name'],
":beschreibung" => $data['beschreibung'], ":description" => $data['description'],
":max_tickets" => $data['max_tickets'], ":max_tickets" => $data['max_tickets'],
":preis" => $data['preis'] ":ticket_price" => $data['ticket_price']
]; ];
try { try {
$sth = $pdo->prepare($sql); $sth = $pdo->prepare($sql);
@@ -78,7 +78,7 @@ class EventModel extends Database {
public function deleteEvent($id) { public function deleteEvent($id) {
$pdo = $this->linkDB(); $pdo = $this->linkDB();
$sql = "DELETE FROM ausstellung WHERE ausstellungid = :id;"; $sql = "DELETE FROM event WHERE event_id = :id;";
try { try {
$sth = $pdo->prepare($sql); $sth = $pdo->prepare($sql);
$sth->execute([":id" => $id]); $sth->execute([":id" => $id]);

View File

@@ -8,7 +8,7 @@ class GutscheinModel extends Database {
public function getGutscheine() { public function getGutscheine() {
$pdo = $this->linkDB(); $pdo = $this->linkDB();
$sql = "SELECT * FROM gutschein ORDER BY gültigkeit DESC;"; $sql = "SELECT * FROM voucher ORDER BY valid_until DESC;";
try { try {
$sth = $pdo->prepare($sql); $sth = $pdo->prepare($sql);
$sth->execute(); $sth->execute();
@@ -21,7 +21,7 @@ class GutscheinModel extends Database {
public function getGutschein($id) { public function getGutschein($id) {
$pdo = $this->linkDB(); $pdo = $this->linkDB();
$sql = "SELECT * FROM gutschein WHERE gutscheinid = :id;"; $sql = "SELECT * FROM voucher WHERE voucher_id = :id;";
$params = [":id" => $id]; $params = [":id" => $id];
try { try {
$sth = $pdo->prepare($sql); $sth = $pdo->prepare($sql);
@@ -35,12 +35,12 @@ class GutscheinModel extends Database {
public function createGutschein($data) { public function createGutschein($data) {
$pdo = $this->linkDB(); $pdo = $this->linkDB();
$sql = "INSERT INTO gutschein (code, rabatt, eventid, gültigkeit) VALUES (:code, :rabatt, :eventid, :gültigkeit);"; $sql = "INSERT INTO voucher (code, discount, event_id, valid_until) VALUES (:code, :discount, :event_id, :valid_until);";
$params = [ $params = [
":code" => $data['code'], ":code" => $data['code'],
":rabatt" => $data['rabatt'], ":discount" => $data['discount'],
":eventid" => $data['eventid'], ":event_id" => $data['event_id'],
":gültigkeit" => $data['gültigkeit'] ":valid_until" => $data['valid_until']
]; ];
try { try {
$sth = $pdo->prepare($sql); $sth = $pdo->prepare($sql);
@@ -54,12 +54,12 @@ class GutscheinModel extends Database {
public function updateGutschein($id, $data) { public function updateGutschein($id, $data) {
$pdo = $this->linkDB(); $pdo = $this->linkDB();
$sql = "UPDATE gutschein SET code = :code, rabatt = :rabatt, eventid = :eventid, gültigkeit = :gültigkeit WHERE gutscheinid = :id;"; $sql = "UPDATE voucher SET code = :code, discount = :discount, event_id = :event_id, valid_until = :valid_until WHERE voucher_id = :id;";
$params = [ $params = [
":code" => $data['code'], ":code" => $data['code'],
":rabatt" => $data['rabatt'], ":discount" => $data['discount'],
":eventid" => $data['eventid'], ":event_id" => $data['event_id'],
":gültigkeit" => $data['gültigkeit'], ":valid_until" => $data['valid_until'],
":id" => $id ":id" => $id
]; ];
try { try {
@@ -73,7 +73,7 @@ class GutscheinModel extends Database {
public function deleteGutschein($id) { public function deleteGutschein($id) {
$pdo = $this->linkDB(); $pdo = $this->linkDB();
$sql = "DELETE FROM gutschein WHERE gutscheinid = :id;"; $sql = "DELETE FROM voucher WHERE voucher_id = :id;";
$params = [":id" => $id]; $params = [":id" => $id];
try { try {
$sth = $pdo->prepare($sql); $sth = $pdo->prepare($sql);

View File

@@ -8,8 +8,8 @@ class NewsModel extends Database {
public function getNewsById($newsId) { public function getNewsById($newsId) {
$pdo = $this->linkDB(); $pdo = $this->linkDB();
$sql = "SELECT * FROM news WHERE newsid = :newsid;"; $sql = "SELECT * FROM news WHERE news_id = :news_id;";
$params = [":newsid" => $newsId]; $params = [":news_id" => $newsId];
try { try {
$sth = $pdo->prepare($sql); $sth = $pdo->prepare($sql);
$sth->execute($params); $sth->execute($params);
@@ -22,12 +22,12 @@ class NewsModel extends Database {
public function updateNews($newsId, $news) { public function updateNews($newsId, $news) {
$pdo = $this->linkDB(); $pdo = $this->linkDB();
$sql = "UPDATE news SET name = :name, beschreibung = :beschreibung, datum = :datum WHERE newsid = :newsid;"; $sql = "UPDATE news SET name = :name, description = :description, date = :date WHERE news_id = :news_id;";
$params = [ $params = [
":name" => $news['titel'], ":name" => $news['titel'],
":beschreibung" => $news['inhalt'], ":description" => $news['inhalt'],
":datum" => $news['datum'], ":date" => $news['datum'],
":newsid" => $newsId ":news_id" => $newsId
]; ];
try { try {
$sth = $pdo->prepare($sql); $sth = $pdo->prepare($sql);
@@ -41,7 +41,7 @@ class NewsModel extends Database {
public function getNews() { public function getNews() {
$pdo = $this->linkDB(); $pdo = $this->linkDB();
$sql = "SELECT * FROM news ORDER BY datum DESC;"; $sql = "SELECT * FROM news ORDER BY date DESC;";
try { try {
$sth = $pdo->prepare($sql); $sth = $pdo->prepare($sql);
$sth->execute(); $sth->execute();
@@ -54,11 +54,11 @@ class NewsModel extends Database {
public function createNews($news) { public function createNews($news) {
$pdo = $this->linkDB(); $pdo = $this->linkDB();
$sql = "INSERT INTO news (name, beschreibung, datum) VALUES (:name, :beschreibung, :datum);"; $sql = "INSERT INTO news (name, description, date) VALUES (:name, :description, :date);";
$params = [ $params = [
":name" => $news['titel'], ":name" => $news['titel'],
":beschreibung" => $news['inhalt'], ":description" => $news['inhalt'],
":datum" => $news['datum'] ":date" => $news['datum']
]; ];
try { try {
$sth = $pdo->prepare($sql); $sth = $pdo->prepare($sql);
@@ -72,8 +72,8 @@ class NewsModel extends Database {
public function deleteNews($newsId) { public function deleteNews($newsId) {
$pdo = $this->linkDB(); $pdo = $this->linkDB();
$sql = "DELETE FROM news WHERE newsid = :newsid;"; $sql = "DELETE FROM news WHERE news_id = :news_id;";
$params = [":newsid" => $newsId]; $params = [":news_id" => $newsId];
try { try {
$sth = $pdo->prepare($sql); $sth = $pdo->prepare($sql);
$sth->execute($params); $sth->execute($params);

View File

@@ -8,7 +8,7 @@ class StandortModel extends Database {
public function getStandorte() { public function getStandorte() {
$pdo = $this->linkDB(); $pdo = $this->linkDB();
$sql = "SELECT * FROM Standort ORDER BY standortid ASC;"; $sql = "SELECT * FROM location ORDER BY location_id ASC;";
try { try {
$sth = $pdo->prepare($sql); $sth = $pdo->prepare($sql);
$sth->execute(); $sth->execute();
@@ -19,10 +19,10 @@ class StandortModel extends Database {
} }
} }
public function getStandort($standortid) { public function getStandort($location_id) {
$pdo = $this->linkDB(); $pdo = $this->linkDB();
$sql = "SELECT * FROM Standort WHERE standortid = :standortid;"; $sql = "SELECT * FROM location WHERE location_id = :location_id;";
$params = [":standortid" => $standortid]; $params = [":location_id" => $location_id];
try { try {
$sth = $pdo->prepare($sql); $sth = $pdo->prepare($sql);
$sth->execute($params); $sth->execute($params);
@@ -35,15 +35,15 @@ class StandortModel extends Database {
public function createStandort($data) { public function createStandort($data) {
$pdo = $this->linkDB(); $pdo = $this->linkDB();
$sql = "INSERT INTO Standort (straße, hausnr, postleitzahl, ort, land, tel, email) $sql = "INSERT INTO location (street, house_number, postal_code, city, country, phone, email)
VALUES (:straße, :hausnr, :postleitzahl, :ort, :land, :tel, :email);"; VALUES (:street, :house_number, :postal_code, :city, :country, :phone, :email);";
$params = [ $params = [
":straße" => $data['straße'], ":street" => $data['street'],
":hausnr" => $data['hausnr'], ":house_number" => $data['house_number'],
":postleitzahl" => $data['postleitzahl'], ":postal_code" => $data['postal_code'],
":ort" => $data['ort'], ":city" => $data['city'],
":land" => $data['land'], ":country" => $data['country'],
":tel" => $data['tel'], ":phone" => $data['phone'],
":email" => $data['email'] ":email" => $data['email']
]; ];
try { try {
@@ -56,26 +56,26 @@ class StandortModel extends Database {
} }
} }
public function updateStandort($standortid, $data) { public function updateStandort($location_id, $data) {
$pdo = $this->linkDB(); $pdo = $this->linkDB();
$sql = "UPDATE Standort SET $sql = "UPDATE location SET
straße = :straße, street = :street,
hausnr = :hausnr, house_number = :house_number,
postleitzahl = :postleitzahl, postal_code = :postal_code,
ort = :ort, city = :city,
land = :land, country = :country,
tel = :tel, phone = :phone,
email = :email email = :email
WHERE standortid = :standortid;"; WHERE location_id = :location_id;";
$params = [ $params = [
":straße" => $data['straße'], ":street" => $data['street'],
":hausnr" => $data['hausnr'], ":house_number" => $data['house_number'],
":postleitzahl" => $data['postleitzahl'], ":postal_code" => $data['postal_code'],
":ort" => $data['ort'], ":city" => $data['city'],
":land" => $data['land'], ":country" => $data['country'],
":tel" => $data['tel'], ":phone" => $data['phone'],
":email" => $data['email'], ":email" => $data['email'],
":standortid" => $standortid ":location_id" => $location_id
]; ];
try { try {
$sth = $pdo->prepare($sql); $sth = $pdo->prepare($sql);
@@ -87,10 +87,10 @@ class StandortModel extends Database {
} }
} }
public function deleteStandort($standortid) { public function deleteStandort($location_id) {
$pdo = $this->linkDB(); $pdo = $this->linkDB();
$sql = "DELETE FROM Standort WHERE standortid = :standortid;"; $sql = "DELETE FROM location WHERE location_id = :location_id;";
$params = [":standortid" => $standortid]; $params = [":location_id" => $location_id];
try { try {
$sth = $pdo->prepare($sql); $sth = $pdo->prepare($sql);
$sth->execute($params); $sth->execute($params);

View File

@@ -8,7 +8,7 @@ class TicketModel extends Database {
public function getTickets() { public function getTickets() {
$pdo = $this->linkDB(); $pdo = $this->linkDB();
$sql = "SELECT * FROM Ticket ORDER BY ticketid ASC;"; $sql = "SELECT * FROM ticket ORDER BY ticket_id ASC;";
try { try {
$sth = $pdo->prepare($sql); $sth = $pdo->prepare($sql);
$sth->execute(); $sth->execute();
@@ -21,13 +21,13 @@ class TicketModel extends Database {
public function buyTicket($data) { public function buyTicket($data) {
$pdo = $this->linkDB(); $pdo = $this->linkDB();
$sql = "INSERT INTO Ticket (userid, eventid, kaufdatum, gültigkeitsdatum) $sql = "INSERT INTO ticket (user_id, event_id, purchase_date, valid_until)
VALUES (:userid, :eventid, :kaufdatum, :gültigkeitsdatum);"; VALUES (:user_id, :event_id, :purchase_date, :valid_until);";
$params = [ $params = [
":userid" => $data['userid'], ":user_id" => $data['user_id'],
":eventid" => $data['eventid'], ":event_id" => $data['event_id'],
":kaufdatum" => $data['kaufdatum'], ":purchase_date" => $data['purchase_date'],
":gültigkeitsdatum" => $data['gültigkeitsdatum'] ":valid_until" => $data['valid_until']
]; ];
try { try {
$sth = $pdo->prepare($sql); $sth = $pdo->prepare($sql);
@@ -39,12 +39,12 @@ class TicketModel extends Database {
} }
} }
public function hasTicket($userid, $eventid) { public function hasTicket($user_id, $event_id) {
$pdo = $this->linkDB(); $pdo = $this->linkDB();
$sql = "SELECT COUNT(*) as count FROM Ticket WHERE userid = :userid AND eventid = :eventid;"; $sql = "SELECT COUNT(*) as count FROM ticket WHERE user_id = :user_id AND event_id = :event_id;";
$params = [ $params = [
":userid" => $userid, ":user_id" => $user_id,
":eventid" => $eventid ":event_id" => $event_id
]; ];
try { try {
$sth = $pdo->prepare($sql); $sth = $pdo->prepare($sql);
@@ -56,10 +56,10 @@ class TicketModel extends Database {
} }
} }
public function deleteTicket($ticketid) { public function deleteTicket($ticket_id) {
$pdo = $this->linkDB(); $pdo = $this->linkDB();
$sql = "DELETE FROM Ticket WHERE ticketid = :ticketid;"; $sql = "DELETE FROM ticket WHERE ticket_id = :ticket_id;";
$params = [":ticketid" => $ticketid]; $params = [":ticket_id" => $ticket_id];
try { try {
$sth = $pdo->prepare($sql); $sth = $pdo->prepare($sql);
$sth->execute($params); $sth->execute($params);

View File

@@ -0,0 +1,23 @@
<div class="inhalt">
<div class="login-container">
<h1>Anmelden</h1>
<?php if (!empty($errors['login'])): ?>
<div class="login-error"><?=htmlspecialchars($errors['login'])?></div>
<?php endif; ?>
<form class="form-horizontal" action="index.php" method="post">
<input type="hidden" name="controller" value="Auth">
<input type="hidden" name="do" value="login">
<label for="email">E-Mail</label>
<input class="input-email" type="email" name="email" id="email" placeholder="E-Mail" required>
<label for="password">Passwort</label>
<input class="input-passwort" type="password" name="password" id="password" placeholder="Passwort" required>
<button class="button-loggin" type="submit">Login</button>
</form>
<div style="text-align:center; margin-top: 1.5em;">
<a class="link-passwort-vergessen" href="?controller=Auth&do=showForgotPasswordForm">Passwort vergessen?</a>
<br>
<a class="link-konto-erstellen" href="?controller=Auth&do=showRegistrationForm">Konto erstellen</a>
</div>
</div>
</div>

View File

@@ -1,20 +1,23 @@
<div class="inhalt"> <div class="inhalt">
<div class="login-container"> <div class="login-container">
<h1>Anmelden</h1> <h1>Anmelden</h1>
<form class="form-horizontal" action="#" method="post"> <?php if (!empty($errors['login'])): ?>
<label> <div class="login-error"><?=htmlspecialchars($errors['login'])?></div>
<input class="input-email" type="text" placeholder="E-Mail"> <?php endif; ?>
</label> <form class="form-horizontal" action="index.php" method="post">
<input type="hidden" name="controller" value="Auth">
<input type="hidden" name="do" value="login">
<label for="email">E-Mail</label>
<input class="input-email" type="email" name="email" id="email" placeholder="E-Mail" required>
<label for="password">Passwort</label>
<input class="input-passwort" type="password" name="password" id="password" placeholder="Passwort" required>
<button class="button-loggin" type="submit">Login</button>
</form> </form>
<form class="form-horizontal" action="#" method="post"> <div style="text-align:center; margin-top: 1.5em;">
<label> <a class="link-passwort-vergessen" href="?controller=Auth&do=showForgotPasswordForm">Passwort vergessen?</a>
<input class="input-passwort" type="text" placeholder="Passwort"> <br>
</label> <a class="link-konto-erstellen" href="?controller=Auth&do=showRegistrationForm">Konto erstellen</a>
</form> </div>
<button class="button-loggin">Login</button>
<a class="link-passwort-vergessen" href="?controller=Login&do=showPasswortVergessen">Passwort vergessen?</a>
<a class="link-konto-erstellen" href="?controller=Register&do=showRegisterPage">Konto erstellen</a>
</div> </div>
</div> </div>

View File

@@ -0,0 +1,15 @@
<div class="inhalt">
<div class="login-success">
<h2>Login erfolgreich!</h2>
<p>Sie werden in wenigen Sekunden zu den News weitergeleitet...</p>
</div>
</div>
<script>
setTimeout(function() {
window.location.href = "?controller=News&do=showNews";
}, 2000); // 2 Sekunden warten
</script>
<noscript>
<meta http-equiv="refresh" content="2;url=?controller=News&do=showNews">
</noscript>

View File

@@ -0,0 +1,14 @@
<div class="inhalt">
<div class="login-success">
<h2>Logout erfolgreich!</h2>
<p>Sie werden in wenigen Sekunden zum Login weitergeleitet...</p>
</div>
</div>
<script>
setTimeout(function() {
window.location.href = "?controller=Auth&do=showLoginForm";
}, 2000); // 2 Sekunden warten
</script>
<noscript>
<meta http-equiv="refresh" content="2;url=?controller=Auth&do=showLoginForm">
</noscript>

View File

@@ -57,7 +57,7 @@
</label> </label>
</form> </form>
<button class="button-register">Registrieren</button> <button class="button-register">Registrieren</button>
<a class="link-konto-erstellen" href="?controller=Login&do=showLoginPage">Login</a> <a class="link-konto-erstellen" href="?controller=Auth&do=showLoginForm">Login</a>
</div> </div>
</div> </div>

View File

@@ -2,11 +2,11 @@
include dirname(__DIR__).'/header.phtml'; include dirname(__DIR__).'/header.phtml';
?> ?>
<div class="inhalt">
<div class="msg"> <div class="msg">
<p>Das Event "<?php echo $name?>" wurde erfolgreich erstellt!</p> <p>Das Event "<?php echo $name?>" wurde erfolgreich erstellt!</p>
<a href="?controller=Event&do=showEvents">Weiter</a> <a href="?controller=Event&do=showEvents">Weiter</a>
</div> </div>
</div>
<?php include dirname(__DIR__).'/footer.phtml'; ?> <?php include dirname(__DIR__).'/footer.phtml'; ?>

View File

@@ -2,11 +2,11 @@
include dirname(__DIR__).'/header.phtml'; include dirname(__DIR__).'/header.phtml';
?> ?>
<div class="inhalt">
<div class="msg"> <div class="msg">
<p>Das Event mit der id"<?php echo $id?>" wurde erfolgreich gelöscht!</p> <p>Das Event mit der id"<?php echo $id?>" wurde erfolgreich gelöscht!</p>
<a href="?controller=Event&do=showEvents">Weiter</a> <a href="?controller=Event&do=showEvents">Weiter</a>
</div> </div>
</div>
<?php include dirname(__DIR__).'/footer.phtml'; ?> <?php include dirname(__DIR__).'/footer.phtml'; ?>

View File

@@ -1,8 +1,8 @@
<?php include dirname(__DIR__) . '/header.phtml'; ?>
<h2>Alle Ausstellungen</h2>
<?php if (!empty($events)): ?> <?php if (!empty($events)): ?>
<div class="inhalt">
<div class="event-container">
<h2>Alle Ausstellungen</h2>
<div class="event-container-inhalt">
<table> <table>
<thead> <thead>
<tr> <tr>
@@ -17,9 +17,9 @@
<?php foreach ($events as $event): ?> <?php foreach ($events as $event): ?>
<tr> <tr>
<td><?php echo htmlspecialchars($event['name']); ?></td> <td><?php echo htmlspecialchars($event['name']); ?></td>
<td><?php echo nl2br(htmlspecialchars($event['beschreibung'])); ?></td> <td><?php echo nl2br(htmlspecialchars($event['description'])); ?></td>
<td><?php echo date('d.m.Y', strtotime($event['datum_von'])); ?></td> <td><?php echo date('d.m.Y', strtotime($event['start_date'])); ?></td>
<td><?php echo date('d.m.Y', strtotime($event['datum_bis'])); ?></td> <td><?php echo date('d.m.Y', strtotime($event['end_date'])); ?></td>
<td><?php echo (int) $event['max_tickets']; ?></td> <td><?php echo (int) $event['max_tickets']; ?></td>
</tr> </tr>
<?php endforeach; ?> <?php endforeach; ?>
@@ -28,5 +28,6 @@
<?php else: ?> <?php else: ?>
<p>Derzeit sind keine Ausstellungen verfügbar.</p> <p>Derzeit sind keine Ausstellungen verfügbar.</p>
<?php endif; ?> <?php endif; ?>
</div>
<?php include dirname(__DIR__) . '/footer.phtml'; ?> </div>
</div>

View File

@@ -2,11 +2,11 @@
include dirname(__DIR__).'/header.phtml'; include dirname(__DIR__).'/header.phtml';
?> ?>
<div class="inhalt">
<div class="msg"> <div class="msg">
<p>Das Event mit der ID "<?php echo $ausstellungid?>" wurde erfolgreich bearbeitet!</p> <p>Das Event mit der ID "<?php echo $ausstellungid?>" wurde erfolgreich bearbeitet!</p>
<a href="?controller=Event&do=showEvents">Weiter</a> <a href="?controller=Event&do=showEvents">Weiter</a>
</div> </div>
</div>
<?php include dirname(__DIR__).'/footer.phtml'; ?> <?php include dirname(__DIR__).'/footer.phtml'; ?>

View File

@@ -1,5 +1,6 @@
<?php include dirname(__DIR__) . '/header.phtml'; ?> <?php include dirname(__DIR__) . '/header.phtml'; ?>
<div class="inhalt">
<h2>Alle Gutscheine</h2> <h2>Alle Gutscheine</h2>
<a href="?controller=Gutschein&do=createGutscheinForm">Neuen Gutschein anlegen</a> <a href="?controller=Gutschein&do=createGutscheinForm">Neuen Gutschein anlegen</a>
<?php if (!empty($gutscheine)): ?> <?php if (!empty($gutscheine)): ?>
@@ -17,9 +18,9 @@
<?php foreach ($gutscheine as $g): ?> <?php foreach ($gutscheine as $g): ?>
<tr> <tr>
<td><?php echo htmlspecialchars($g['code']); ?></td> <td><?php echo htmlspecialchars($g['code']); ?></td>
<td><?php echo (int)$g['rabatt']; ?></td> <td><?php echo (int)$g['discount']; ?></td>
<td><?php echo (int)$g['eventid']; ?></td> <td><?php echo (int)$g['event_id']; ?></td>
<td><?php echo htmlspecialchars($g['gültigkeit']); ?></td> <td><?php echo htmlspecialchars($g['valid_until']); ?></td>
<td> <td>
<a href="?controller=Gutschein&action=editGutscheinForm&id=<?php echo $g['gutscheinid']; ?>">Bearbeiten</a> | <a href="?controller=Gutschein&action=editGutscheinForm&id=<?php echo $g['gutscheinid']; ?>">Bearbeiten</a> |
<a href="?controller=Gutschein&action=deleteGutschein&id=<?php echo $g['gutscheinid']; ?>" onclick="return confirm('Wirklich löschen?');">Löschen</a> <a href="?controller=Gutschein&action=deleteGutschein&id=<?php echo $g['gutscheinid']; ?>" onclick="return confirm('Wirklich löschen?');">Löschen</a>
@@ -31,5 +32,5 @@
<?php else: ?> <?php else: ?>
<p>Keine Gutscheine vorhanden.</p> <p>Keine Gutscheine vorhanden.</p>
<?php endif; ?> <?php endif; ?>
</div>
<?php include dirname(__DIR__) . '/footer.phtml'; ?> <?php include dirname(__DIR__) . '/footer.phtml'; ?>

View File

@@ -1,6 +1,4 @@
<?php include dirname(__DIR__) . '/header.phtml'; ?>
<h2>Alle News</h2>
<?php if (!empty($news)): ?> <?php if (!empty($news)): ?>
<table> <table>
@@ -15,14 +13,14 @@
<?php foreach ($news as $item): ?> <?php foreach ($news as $item): ?>
<tr> <tr>
<td><?php echo htmlspecialchars($item['name']); ?></td> <td><?php echo htmlspecialchars($item['name']); ?></td>
<td><?php echo nl2br(htmlspecialchars($item['beschreibung'])); ?></td> <td><?php echo nl2br(htmlspecialchars($item['name'])); ?></td>
<td><?php echo date('d.m.Y', strtotime($item['datum'])); ?></td> <td><?php echo nl2br(htmlspecialchars($item['description'])); ?></td>
<td><?php echo date('d.m.Y', strtotime($item['date'])); ?></td>
</tr> </tr>
<?php endforeach; ?> <?php endforeach; ?>
</tbody> </tbody>
</table> </table>
</div>
<?php else: ?> <?php else: ?>
<p>Derzeit sind keine News verfügbar.</p> <p>Derzeit sind keine News verfügbar.</p>
<?php endif; ?> <?php endif; ?>
<?php include dirname(__DIR__) . '/footer.phtml'; ?>

View File

@@ -1,5 +1,6 @@
<?php include dirname(__DIR__) . '/header.phtml'; ?> <?php include dirname(__DIR__) . '/header.phtml'; ?>
<div class="inhalt">
<h2>Unsere Standorte</h2> <h2>Unsere Standorte</h2>
<?php if (!empty($standorte)): ?> <?php if (!empty($standorte)): ?>
@@ -18,12 +19,12 @@
<tbody> <tbody>
<?php foreach ($standorte as $standort): ?> <?php foreach ($standorte as $standort): ?>
<tr> <tr>
<td><?php echo htmlspecialchars($standort['straße']); ?></td> <td><?php echo htmlspecialchars($standort['street']); ?></td>
<td><?php echo htmlspecialchars($standort['hausnr']); ?></td> <td><?php echo htmlspecialchars($standort['house_number']); ?></td>
<td><?php echo htmlspecialchars($standort['postleitzahl']); ?></td> <td><?php echo htmlspecialchars($standort['postal_code']); ?></td>
<td><?php echo htmlspecialchars($standort['ort']); ?></td> <td><?php echo htmlspecialchars($standort['city']); ?></td>
<td><?php echo htmlspecialchars($standort['land']); ?></td> <td><?php echo htmlspecialchars($standort['country']); ?></td>
<td><?php echo htmlspecialchars($standort['tel']); ?></td> <td><?php echo htmlspecialchars($standort['phone']); ?></td>
<td><?php echo htmlspecialchars($standort['email']); ?></td> <td><?php echo htmlspecialchars($standort['email']); ?></td>
</tr> </tr>
<?php endforeach; ?> <?php endforeach; ?>
@@ -32,5 +33,5 @@
<?php else: ?> <?php else: ?>
<p>Keine Standorte gefunden.</p> <p>Keine Standorte gefunden.</p>
<?php endif; ?> <?php endif; ?>
</div>
<?php include dirname(__DIR__) . '/footer.phtml'; ?> <?php include dirname(__DIR__) . '/footer.phtml'; ?>

View File

@@ -12,11 +12,15 @@
<div id="logo" ><a class="link-logo" href="#"></a></div> <div id="logo" ><a class="link-logo" href="#"></a></div>
<button id="nav-toggle-btn" aria-label="Menü ein-/ausklappen">&#9660;</button> <button id="nav-toggle-btn" aria-label="Menü ein-/ausklappen">&#9660;</button>
<div class="nav-links"> <div class="nav-links">
<a id="link-tickets" class="links" href="?controller=Tickets&do=showTickets">Tickets</a> <a id="link-tickets" class="links" href="?controller=Event&do=showEvents">Event</a>
<a id="link-infos" class="links" href="?controller=Welcome&do=showWelcome">Infos</a> <a id="link-infos" class="links" href="?controller=News&do=showNews">Infos</a>
<a id="link-profil" class="links" href="?controller=Profile&do=showProfile">Profil</a> <a id="link-profil" class="links" href="?controller=Profile&do=showProfile">Profil</a>
<a id="link-login" class="links" href="?controller=Login&do=showLoginPage">Login</a> <?php if (isset($_SESSION['user'])): ?>
<a id="link-register" class="links" href="?controller=Register&do=showRegisterPage">Register</a> <a id="link-logout" class="links" href="?controller=Auth&do=logout">Logout</a>
<?php else: ?>
<a id="link-login" class="links" href="?controller=Auth&do=showLoginForm">Login</a>
<?php endif; ?>
<a id="link-register" class="links" href="?controller=Auth&do=showRegistrationForm">Register</a>
<div id="profile-picture"></div> <div id="profile-picture"></div>
</div> </div>
</div> </div>

View File

@@ -1,124 +1,112 @@
-- phpMyAdmin SQL Dump
-- version 4.5.1
-- http://www.phpmyadmin.net
--
-- Host: 127.0.0.1
-- Erstellungszeit: 24. Nov 2017 um 17:01
-- Server-Version: 10.1.16-MariaDB
-- PHP-Version: 7.0.9
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00"; SET time_zone = "+00:00";
--
-- Datenbank: `blog`
--
-- -------------------------------------------------------- -- --------------------------------------------------------
CREATE TABLE User ( CREATE TABLE user (
userid INT AUTO_INCREMENT PRIMARY KEY, user_id INT AUTO_INCREMENT PRIMARY KEY,
vorname VARCHAR(50), first_name VARCHAR(50),
nachname VARCHAR(50), last_name VARCHAR(50),
strasse VARCHAR(100), street VARCHAR(100),
hausnr VARCHAR(10), house_number VARCHAR(10),
postleitzahl VARCHAR(10), postal_code VARCHAR(10),
ort VARCHAR(50), city VARCHAR(50),
land VARCHAR(50), country VARCHAR(50),
tel VARCHAR(20), phone VARCHAR(20),
email VARCHAR(100) UNIQUE, email VARCHAR(100) UNIQUE,
isAdmin BOOLEAN DEFAULT FALSE, is_admin BOOLEAN DEFAULT FALSE,
valid_until DATETIME NOT NULL DEFAULT '3025-01-01 00:00:00',
password VARCHAR(255) password VARCHAR(255)
); );
CREATE TABLE Standort ( CREATE TABLE location (
standortid INT AUTO_INCREMENT PRIMARY KEY, location_id INT AUTO_INCREMENT PRIMARY KEY,
strasse VARCHAR(100), street VARCHAR(100),
hausnr VARCHAR(10), house_number VARCHAR(10),
plz VARCHAR(10), postal_code VARCHAR(10),
ort VARCHAR(50), city VARCHAR(50),
land VARCHAR(50), country VARCHAR(50),
tel VARCHAR(20), phone VARCHAR(20),
email VARCHAR(100) email VARCHAR(100)
); );
CREATE TABLE Ausstellung ( CREATE TABLE event (
austellungid INT AUTO_INCREMENT PRIMARY KEY, event_id INT AUTO_INCREMENT PRIMARY KEY,
standortid INT, location_id INT,
datum_von DATE, start_date DATE,
datum_bis DATE, end_date DATE,
name VARCHAR(100), name VARCHAR(100),
beschreibung TEXT, description TEXT,
max_tickets INT, max_tickets INT,
FOREIGN KEY (standortid) REFERENCES Standort(standortid) ticket_price DECIMAL(5,2),
FOREIGN KEY (location_id) REFERENCES location(location_id)
); );
CREATE TABLE Ticket ( CREATE TABLE ticket (
ticketid INT AUTO_INCREMENT PRIMARY KEY, ticket_id INT AUTO_INCREMENT PRIMARY KEY,
userid INT, user_id INT,
ausstellungid INT, event_id INT,
kaufdatum DATE, purchase_date DATE,
gueltigkeit DATE, valid_until DATE,
preis DECIMAL(10,2), FOREIGN KEY (user_id) REFERENCES user(user_id),
FOREIGN KEY (userid) REFERENCES User(userid), FOREIGN KEY (event_id) REFERENCES event(event_id)
FOREIGN KEY (ausstellungid) REFERENCES Ausstellung(austellungid)
); );
CREATE TABLE Gutschein ( CREATE TABLE voucher (
gutscheinid INT AUTO_INCREMENT PRIMARY KEY, voucher_id INT AUTO_INCREMENT PRIMARY KEY,
code VARCHAR(50) UNIQUE, code VARCHAR(50) UNIQUE,
rabatt INT CHECK (rabatt BETWEEN 0 AND 100), discount INT CHECK (discount BETWEEN 0 AND 100),
ausstellungid INT, event_id INT,
gueltigkeit DATE, valid_until DATE,
FOREIGN KEY (ausstellungid) REFERENCES Ausstellung(austellungid) FOREIGN KEY (event_id) REFERENCES event(event_id)
); );
CREATE TABLE News ( CREATE TABLE news (
newsid INT AUTO_INCREMENT PRIMARY KEY, news_id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100), name VARCHAR(100),
beschreibung TEXT, description TEXT,
datum DATE date DATE
); );
-- User-Daten -- User-Daten (Passwort: passwort123)
INSERT INTO User (vorname, nachname, strasse, hausnr, postleitzahl, ort, land, tel, email, isAdmin, password) INSERT INTO user (first_name, last_name, street, house_number, postal_code, city, country, phone, email, is_admin, password)
VALUES VALUES
('Max', 'Muster', 'Musterstraße', '1', '12345', 'Musterstadt', 'Deutschland', '0123456789', 'max@muster.de', FALSE, 'passwort123'), ('Max', 'Muster', 'Musterstraße', '1', '12345', 'Musterstadt', 'Deutschland', '0123456789', 'max@muster.de', FALSE, '$2y$10$VAj.C0XHPUxV4oXS6b79aumlg5fBMPPx5FPqgkQSIQeBLh0WtYmKy'),
('Anna', 'Beispiel', 'Beispielweg', '5a', '54321', 'Beispielstadt', 'Deutschland', '0987654321', 'anna@beispiel.de', TRUE, 'adminpass'); ('Anna', 'Beispiel', 'Beispielweg', '5a', '54321', 'Beispielstadt', 'Deutschland', '0987654321', 'anna@beispiel.de', TRUE, '$2y$10$cnPBpkvLbdpDxzYvxlQg9uVp5y8ggr2SWL8NAMg9zk.3QnnEl.MGq');
-- Standort-Daten -- Standort-Daten
INSERT INTO Standort (strasse, hausnr, plz, ort, land, tel, email) INSERT INTO location (street, house_number, postal_code, city, country, phone, email)
VALUES VALUES
('Galeriestraße', '10', '10115', 'Berlin', 'Deutschland', '030123456', 'kontakt@galerie-berlin.de'), ('Galeriestraße', '10', '10115', 'Berlin', 'Deutschland', '030123456', 'kontakt@galerie-berlin.de'),
('Kunstallee', '22b', '50667', 'Köln', 'Deutschland', '0221123456', 'info@kunst-koeln.de'); ('Kunstallee', '22b', '50667', 'Köln', 'Deutschland', '0221123456', 'info@kunst-koeln.de');
-- Ausstellung-Daten -- Ausstellung-Daten
INSERT INTO Ausstellung (standortid, datum_von, datum_bis, name, beschreibung, max_tickets) INSERT INTO event (location_id, start_date, end_date, name, description, max_tickets, ticket_price)
VALUES VALUES
(1, '2025-07-01', '2025-08-31', 'Moderne Meisterwerke', 'Eine Sammlung moderner Kunstwerke aus Europa.', 200), (1, '2025-07-01', '2025-08-31', 'Moderne Meisterwerke', 'Eine Sammlung moderner Kunstwerke aus Europa.', 200, 19.99),
(2, '2025-09-10', '2025-10-20', 'Kunst der Antike', 'Ausstellung antiker Skulpturen und Gemälde.', 150); (2, '2025-09-10', '2025-10-20', 'Kunst der Antike', 'Ausstellung antiker Skulpturen und Gemälde.', 150, 39.99);
-- Gutschein-Daten (Spaltennamen korrigiert) -- Gutschein-Daten
INSERT INTO Gutschein (code, rabatt, ausstellungid, gueltigkeit) INSERT INTO voucher (code, discount, event_id, valid_until)
VALUES VALUES
('SOMMER2025', 15, 1, '2025-08-31'), ('SOMMER2025', 15, 1, '2025-08-31'),
('HERBST25', 25, 2, '2025-10-15'); ('HERBST25', 25, 2, '2025-10-15');
-- Ticket-Daten (Spaltennamen korrigiert) -- Ticket-Daten
INSERT INTO Ticket (userid, ausstellungid, kaufdatum, gueltigkeit, preis) INSERT INTO ticket (user_id, event_id, purchase_date, valid_until)
VALUES VALUES
(1, 1, '2025-06-01', '2025-07-15', 12.50), (1, 1, '2025-06-01', '2025-07-15'),
(2, 2, '2025-06-05', '2025-09-15', 10.00); (2, 2, '2025-06-05', '2025-09-15');
-- News-Daten -- News-Daten
INSERT INTO News (name, beschreibung, datum) INSERT INTO news (name, description, date)
VALUES VALUES
('Neuer Standort eröffnet', 'Unsere Galerie in Köln ist jetzt geöffnet!', '2025-06-01'), ('Neuer Standort eröffnet', 'Unsere Galerie in Köln ist jetzt geöffnet!', '2025-06-01'),
('Frühbucher-Rabatt', 'Sichern Sie sich jetzt 15% Rabatt auf unsere Sommerausstellung.', '2025-05-20'); ('Frühbucher-Rabatt', 'Sichern Sie sich jetzt 15% Rabatt auf unsere Sommerausstellung.', '2025-05-20');

View File

@@ -2,48 +2,46 @@
session_start(); session_start();
include 'Views/header.phtml'; include 'Views/header.phtml';
?> ?>
<div id="wrapper"> <?php
<?php spl_autoload_register(function ($className) {
spl_autoload_register(function ($className) { if (substr($className, 0, 5) !== 'Blog\\') {
if (substr($className, 0, 5) !== 'Blog\\') { // not our business
// not our business return;
return;
}
$fileName = __DIR__.'/'.str_replace('\\', DIRECTORY_SEPARATOR, substr($className, 5)).'.php';
if (file_exists($fileName)) {
include $fileName;
}
});
$controllerName = "";
$doMethodName = "";
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$controllerName = isset($_POST['controller']) && $_POST['controller'] ? $_POST['controller'] : "Welcome";
$doMethodName = isset($_POST['do']) && $_POST['do'] ? $_POST['do'] : "showWelcome";
} else {
$controllerName = isset($_GET['controller']) && $_GET['controller'] ? $_GET['controller'] : "Welcome";
$doMethodName = isset($_GET['do']) && $_GET['do'] ? $_GET['do'] : "showWelcome";
} }
$controllerClassName = 'Blog\\Controller\\'.ucfirst($controllerName).'Controller'; $fileName = __DIR__.'/'.str_replace('\\', DIRECTORY_SEPARATOR, substr($className, 5)).'.php';
if (method_exists($controllerClassName, $doMethodName)) { if (file_exists($fileName)) {
$view = new \Blog\Library\View(__DIR__.DIRECTORY_SEPARATOR.'Views' include $fileName;
, ucfirst($controllerName), $doMethodName);
$controller = new $controllerClassName($view);
$controller->$doMethodName();
$view->render();
} else {
new \Blog\Library\ErrorMsg('Page not found: '.$controllerClassName.'::'.$doMethodName);
} }
?> });
</div>
$controllerName = "";
$doMethodName = "";
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$controllerName = isset($_POST['controller']) && $_POST['controller'] ? $_POST['controller'] : "Welcome";
$doMethodName = isset($_POST['do']) && $_POST['do'] ? $_POST['do'] : "showWelcome";
} else {
$controllerName = isset($_GET['controller']) && $_GET['controller'] ? $_GET['controller'] : "Welcome";
$doMethodName = isset($_GET['do']) && $_GET['do'] ? $_GET['do'] : "showWelcome";
}
$controllerClassName = 'Blog\\Controller\\'.ucfirst($controllerName).'Controller';
if (method_exists($controllerClassName, $doMethodName)) {
$view = new \Blog\Library\View(__DIR__.DIRECTORY_SEPARATOR.'Views'
, ucfirst($controllerName), $doMethodName);
$controller = new $controllerClassName($view);
$controller->$doMethodName();
$view->render();
} else {
new \Blog\Library\ErrorMsg('Page not found: '.$controllerClassName.'::'.$doMethodName);
}
?>
<?php <?php
include 'Views/footer.phtml'; include 'Views/footer.phtml';
?> ?>