Changed Alerts to Exceptions.

This commit is contained in:
Marijn Jansen
2017-01-24 12:12:48 +01:00
parent 80f7c24641
commit 62a2b32c95
3 changed files with 82 additions and 73 deletions

View File

@@ -12,9 +12,11 @@
</head> </head>
<body> <body>
<?php <?php
$notImplemented = new settingsMessage("angry", "Deze functie werkt nog niet :("); $notImplemented = new SettingsMessage("angry", "Deze functie werkt nog niet :(");
$alertClass;
$alertMessage;
if ($_SERVER["REQUEST_METHOD"] == "POST") { if ($_SERVER["REQUEST_METHOD"] == "POST") {
try {
switch ($_POST["form"]) { switch ($_POST["form"]) {
case "profile": case "profile":
$result = updateSettings(); $result = updateSettings();
@@ -26,9 +28,14 @@ if ($_SERVER["REQUEST_METHOD"] == "POST") {
$result = changeEmail(); $result = changeEmail();
break; break;
case "picture": case "picture":
updateProfilePicture(); updateAvatar();
$result = new settingsMessage("happy", "Deze melding doet nog niks nuttigs."); $result = new SettingsMessage("happy", "Deze melding doet nog niks nuttigs.");
break; break;
}
} catch (SettingsWarning $w) {
$alertClass = $w->getClass();
$alertMessage = $w->getMessage();
} }
} }
include("../views/main.php"); include("../views/main.php");

View File

@@ -1,35 +1,34 @@
<?php <?php
class settingsMessage { abstract class SettingsWarning extends Exception {
private $class; public function __construct($message = "", $code = 0, Exception $previous = null)
private $message; {
parent::__construct($message, $code, $previous);
/**
* settingsMessage constructor.
* @param string $type Happy or angry
* @param string $message The message to display
*/
public function __construct($type, $message) {
$this->message = $message;
switch ($type) {
case "happy":
$this->class = "settings-message-happy";
break;
case "angry":
$this->class = "settings-message-angry";
break;
default:
$this->class = "settings-message";
break;
} }
abstract public function getClass();
}
class HappyWarning extends SettingsWarning {
public function __construct($message = "Gelukt!", $code = 0, Exception $previous = null)
{
parent::__construct($message, $code, $previous);
} }
public function getClass() { public function getClass() {
return $this->class; return "settings-message-happy";
}
} }
public function getMessage() { class AngryWarning extends SettingsWarning {
return $this->message; public function __construct($message = "Er is iets fout gegaan.", $code = 0, Exception $previous = null)
{
parent::__construct($message, $code, $previous);
}
public function getClass() {
return "settings-message-angry";
} }
} }
@@ -94,24 +93,19 @@ function updateSettings() {
$stmt->bindValue(":bio", test_input($_POST["bio"])); $stmt->bindValue(":bio", test_input($_POST["bio"]));
$stmt->bindValue(":userID", $_SESSION["userID"]); $stmt->bindValue(":userID", $_SESSION["userID"]);
$stmt->execute(); $stmt->execute();
throw new HappyWarning("Instellingen zijn opgeslagen.");
return new settingsMessage("happy", "Instellingen zijn opgeslagen.");
} }
function changePassword() { function changePassword() {
$user = getPasswordHash(); $user = getPasswordHash();
if (password_verify($_POST["password-old"], $user["password"])) { if (password_verify($_POST["password-old"], $user["password"])) {
if ($_POST["password-new"] == $_POST["password-confirm"] && (strlen($_POST["password-new"]) >= 8)) { if ($_POST["password-new"] == $_POST["password-confirm"] && (strlen($_POST["password-new"]) >= 8)) {
if (doChangePassword()) { doChangePassword();
return new settingsMessage("happy", "Wachtwoord gewijzigd.");
} else { } else {
return new settingsMessage("angry", "Er is iets mis gegaan."); throw new AngryWarning("Wachtwoorden komen niet overeen.");
} }
} else { } else {
return new settingsMessage("angry", "Wachtwoorden komen niet oveen."); throw new AngryWarning("Oud wachtwoord niet correct.");
}
} else {
return new settingsMessage("angry", "Oud wachtwoord niet correct.");
} }
} }
@@ -129,7 +123,12 @@ function doChangePassword() {
$stmt->bindParam(":new_password", $hashed_password); $stmt->bindParam(":new_password", $hashed_password);
$stmt->bindParam(":userID", $_SESSION["userID"]); $stmt->bindParam(":userID", $_SESSION["userID"]);
$stmt->execute(); $stmt->execute();
return $stmt->rowCount();
if ($stmt->rowCount()) {
throw new HappyWarning("Wachtwoord gewijzigd.");
} else {
throw new AngryWarning();
}
} }
function changeEmail() { function changeEmail() {
@@ -138,20 +137,13 @@ function changeEmail() {
$email = strtolower($_POST["email"]); $email = strtolower($_POST["email"]);
if (filter_var($email, FILTER_VALIDATE_EMAIL)) { if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
//check if email exists //check if email exists
if (emailIsAvailableInDatabase($email)) { emailIsAvailableInDatabase($email);
if (doChangeEmail($email)) { doChangeEmail($email);
return new settingsMessage("happy", "Emailadres is veranderd.");
} else { } else {
return new settingsMessage("angry", "Er is iets mis gegaan."); throw new AngryWarning("Geef een geldig emailadres");
} }
} else { } else {
return new settingsMessage("angry", "Emailadres bestaat al."); throw new AngryWarning("Emailadressen komen niet overeen.");
}
} else {
return new settingsMessage("angry", "Geef een geldig emailadres.");
}
} else {
return new settingsMessage("angry", "Emailadressen komen niet overeen.");
} }
} }
@@ -167,7 +159,9 @@ function emailIsAvailableInDatabase($email) {
$stmt->bindParam(":email", $email); $stmt->bindParam(":email", $email);
$stmt->execute(); $stmt->execute();
return !$stmt->rowCount(); if ($stmt->rowCount()) {
throw new AngryWarning("Emailadres wordt al gebruikt.");
}
} }
function doChangeEmail($email) { function doChangeEmail($email) {
@@ -182,18 +176,24 @@ function doChangeEmail($email) {
$stmt->bindParam(":email", $email); $stmt->bindParam(":email", $email);
$stmt->bindParam(":userID", $_SESSION["userID"]); $stmt->bindParam(":userID", $_SESSION["userID"]);
$stmt->execute(); $stmt->execute();
return $stmt->rowCount(); // return $stmt->rowCount();
if ($stmt->rowCount()) {
throw new HappyWarning("Emailadres is veranderd.");
} else {
throw new AngryWarning();
}
} }
function updateProfilePicture() { function updateAvatar() {
$profilePictureDir = "/var/www/html/public/"; $profilePictureDir = "/var/www/html/public/";
$relativePath = "uploads/profilepictures/" . $_SESSION["userID"] . "_" . basename($_FILES["pp"]["name"]); $relativePath = "uploads/profilepictures/" . $_SESSION["userID"] . "_" . basename($_FILES["pp"]["name"]);
removeOldProfilePicture(); removeOldAvatar();
move_uploaded_file($_FILES['pp']['tmp_name'], $profilePictureDir . $relativePath); move_uploaded_file($_FILES['pp']['tmp_name'], $profilePictureDir . $relativePath);
setProfilePictureToDatabase("../" . $relativePath); setAvatarToDatabase("../" . $relativePath);
} }
function removeOldProfilePicture() { function removeOldAvatar() {
$stmt = $GLOBALS["db"]->prepare(" $stmt = $GLOBALS["db"]->prepare("
SELECT SELECT
`profilepicture` `profilepicture`
@@ -205,20 +205,22 @@ function removeOldProfilePicture() {
$stmt->bindParam(":userID", $_SESSION["userID"]); $stmt->bindParam(":userID", $_SESSION["userID"]);
$stmt->execute(); $stmt->execute();
$old_avatar = $stmt->fetch()["profilepicture"]; $old_avatar = $stmt->fetch()["profilepicture"];
if ($old_avatar != NULL) {
unlink("/var/www/html/public/uploads/" . $old_avatar); unlink("/var/www/html/public/uploads/" . $old_avatar);
} }
}
function setProfilePictureToDatabase($url) { function setAvatarToDatabase($url) {
$stmt = $GLOBALS["db"]->prepare(" $stmt = $GLOBALS["db"]->prepare("
UPDATE UPDATE
`user` `user`
SET SET
`profilepicture` = :profilePicture `profilepicture` = :avatar
WHERE WHERE
`userID` = :userID `userID` = :userID
"); ");
$stmt->bindParam(":profilePicture", $url); $stmt->bindParam(":avatar", $url);
$stmt->bindParam(":userID", $_SESSION["userID"]); $stmt->bindParam(":userID", $_SESSION["userID"]);
$stmt->execute(); $stmt->execute();
} }

View File

@@ -6,8 +6,8 @@ $settings = getSettings();
<div class="settings"> <div class="settings">
<?php <?php
if ($_SERVER["REQUEST_METHOD"] == "POST") { if ($_SERVER["REQUEST_METHOD"] == "POST") {
echo "<div class='platform settings-message ". $result->getClass()."'>". echo "<div class='platform settings-message ". $alertClass ."'>".
$result->getMessage(). $alertMessage .
"</div>"; "</div>";
} }
?> ?>