95 lines
2.9 KiB
PHP
95 lines
2.9 KiB
PHP
<?php
|
|
|
|
require_once "php/model/UserManager.php";
|
|
require_once "php/model/Article.php";
|
|
require_once "php/model/ArticleManager.php";
|
|
require_once "php/model/CommentManager.php";
|
|
require_once "php/validator/user-validator.php";
|
|
|
|
$error = null;
|
|
|
|
if (!isset($_SESSION["user"])) {
|
|
header("Location: index.php?pfad=login");
|
|
exit();
|
|
}
|
|
|
|
try {
|
|
$dao = UserManager::getInstance();
|
|
|
|
$user = $dao->findUser($_SESSION["user_email"] ?? "");
|
|
|
|
if (!$user) {
|
|
$_SESSION = [];
|
|
session_destroy();
|
|
|
|
header("Location: index.php?pfad=login");
|
|
exit();
|
|
}
|
|
|
|
if ($_SERVER["REQUEST_METHOD"] === "POST" && isset($_POST["saveProfile"])) {
|
|
$oldEmail = $_SESSION["user_email"];
|
|
|
|
$newEmail = trim($_POST["email"] ?? "");
|
|
$vorname = trim($_POST["vorname"] ?? "");
|
|
$nachname = trim($_POST["nachname"] ?? "");
|
|
$password = $_POST["password"] ?? "";
|
|
|
|
if (!userEmailValidator($newEmail)) {
|
|
$error = "Bitte gib eine gültige E-Mail-Adresse ein.";
|
|
$_GET["edit"] = "1";
|
|
|
|
} elseif (!userNameValidator($vorname)) {
|
|
$error = "Der Vorname muss 2 bis 20 Zeichen lang sein und darf nur Buchstaben, Leerzeichen und Bindestriche enthalten.";
|
|
$_GET["edit"] = "1";
|
|
|
|
} elseif (!userNameValidator($nachname)) {
|
|
$error = "Der Nachname muss 2 bis 20 Zeichen lang sein und darf nur Buchstaben, Leerzeichen und Bindestriche enthalten.";
|
|
$_GET["edit"] = "1";
|
|
|
|
} elseif (!userOptionalPasswordValidator($password)) {
|
|
$error = "Das Passwort muss 5 bis 12 Zeichen lang sein.";
|
|
$_GET["edit"] = "1";
|
|
|
|
} else {
|
|
$updated = $dao->updateUser(
|
|
$oldEmail,
|
|
$newEmail,
|
|
$vorname,
|
|
$nachname,
|
|
$password
|
|
);
|
|
|
|
if ($updated) {
|
|
$_SESSION["user"] = $vorname . " " . $nachname;
|
|
$_SESSION["user_email"] = $newEmail;
|
|
|
|
header("Location: index.php?pfad=profile");
|
|
exit();
|
|
} else {
|
|
$error = "Die Daten konnten nicht gespeichert werden.";
|
|
$_GET["edit"] = "1";
|
|
}
|
|
}
|
|
}
|
|
|
|
$user = $dao->findUser($_SESSION["user_email"] ?? "");
|
|
|
|
$articleManager = ArticleManager::getInstance();
|
|
$userArticles = $articleManager->getArticlesByAuthor($_SESSION["user_email"]);
|
|
|
|
$commentManager = CommentManager::getInstance();
|
|
$userComments = $commentManager->getCommentsByAuthor($_SESSION["user_email"]);
|
|
|
|
if (!isset($userArticles)) {
|
|
$_SESSION["message"] = "user_has_no_articles";
|
|
}
|
|
|
|
} catch (InvalidArgumentException $e) {
|
|
$error = $e->getMessage();
|
|
$_GET["edit"] = "1";
|
|
|
|
} catch (Exception $e) {
|
|
$error = "Es ist ein interner Fehler aufgetreten. Bitte versuche es erneut.";
|
|
$_SESSION["message"] = "internal_error";
|
|
$_GET["edit"] = "1";
|
|
} |