diff --git a/website/public/API/nietSlecht.php b/website/public/API/nietSlecht.php new file mode 100644 index 0000000..e37c8e0 --- /dev/null +++ b/website/public/API/nietSlecht.php @@ -0,0 +1,41 @@ +prepare(" + SELECT + `userID` + FROM + `niet_slecht` + WHERE + `postID` = :postID + "); + $stmt->bindParam(":postID", $postID); + $stmt->execute(); + return $stmt->rowCount(); +} + +function getNietSlechtUsersForPost(int $postID) { + $stmt = $GLOBALS["db"]->prepare(" + SELECT + `fname`, + `lname`, + CONCAT(`user`.`fname`, ' ', `user`.`lname`) as `fullname` + FROM + `user` + INNER JOIN + `niet_slecht` + WHERE + `user`.`userID` = `niet_slecht`.`userID` AND + `niet_slecht`.`postID` = :postID + "); + $stmt->bindParam(":postID", $postID); + $stmt->execute(); + $rows = $stmt->fetchAll(); + foreach ($rows as $row) { + print($row["fullname"]); + } +} \ No newline at end of file diff --git a/website/public/API/postComment.php b/website/public/API/postComment.php index b840e0b..30c02eb 100644 --- a/website/public/API/postComment.php +++ b/website/public/API/postComment.php @@ -5,14 +5,25 @@ session_start(); require("../../queries/post.php"); require("../../queries/connect.php"); require("../../queries/checkInput.php"); -if (empty($_POST['newcomment-content'])) { - echo 0; -} else { - if(makeComment($_POST['postID'], - $_SESSION['userID'], - test_input($_POST['newcomment-content']))) { +print_r($_POST); +if ($_POST['button'] == 'reaction') { + if (empty($_POST['newcomment-content'])) { + echo 0; + } else { + if (makeComment($_POST['postID'], + $_SESSION['userID'], + test_input($_POST['newcomment-content']))) { + echo 1; + } else { + echo 0; + } + } +} else if ($_POST['button'] == 'nietslecht') { + if (makeNietSlecht($_POST["postID"], $_SESSION["userID"])) { echo 1; } else { echo 0; } +} else { + echo 0; } \ No newline at end of file diff --git a/website/public/js/chat.js b/website/public/js/chat.js index 06f85df..773a819 100644 --- a/website/public/js/chat.js +++ b/website/public/js/chat.js @@ -1,3 +1,5 @@ +var previousDate = new Date("1970-01-01 00:00:00"); + $(document).ready(function() { loadMessages(); sayEmpty(); @@ -31,17 +33,28 @@ function sendMessage() { } function addMessages(messages) { - for(i in messages) { + for(var i in messages) { + thisDate = new Date(messages[i].creationdate); + thisDate.setHours(0,0,0,0); if (messages[i].destination == $(".destinationID").val()) { type = "chat-message-self"; } else { type = "chat-message-other"; } - + if (thisDate > previousDate) { + previousDate = thisDate; + $("#chat-history").append('\ +
\ +
\ + ' + days[thisDate.getDay()] + " " + thisDate.getDate() + " " + months[thisDate.getMonth()] + " " + thisDate.getFullYear() + '\ +
\ +
\ + '); + } $("#chat-history").append('\
\
\ - ' + messages[i].content + '\ + ' + fancyText(messages[i].content) + '\
\
\ '); @@ -49,6 +62,7 @@ function addMessages(messages) { } function switchUser(userID) { + previousDate = new Date("1970-01-01 00:00:00"); $(".chat-field").show(); $(".destinationID").val(userID); $("#chat-history").html(""); diff --git a/website/public/js/friendButtons.js b/website/public/js/friendButtons.js index 7b511a5..bdc3cc8 100644 --- a/website/public/js/friendButtons.js +++ b/website/public/js/friendButtons.js @@ -4,12 +4,14 @@ function placeFriendButtons() { friendshipStatus = data; $buttonContainer = $("div.friend-button-container"); $buttonContainer.children().remove(); + $("#start-profile-chat-form").hide(); if (friendshipStatus == -1) { return; } else if(friendshipStatus == 0) { $buttonContainer.append($("")); } else if(friendshipStatus == 1) { $buttonContainer.append($("")); + $("#start-profile-chat-form").show(); } else if(friendshipStatus == 2) { $buttonContainer.append($("")); } else if(friendshipStatus == 3) { diff --git a/website/public/js/header.js b/website/public/js/header.js index 9889bdb..bdf5fe3 100644 --- a/website/public/js/header.js +++ b/website/public/js/header.js @@ -1,5 +1,4 @@ $(document).ready(function() { - // Toggle menu $("#own-profile-picture, #open-notifications").click(function() { if ($("#notification-center").css('right') == "-256px") { @@ -8,12 +7,22 @@ $(document).ready(function() { $(".modal").width("calc(100% - 512px)"); $(".content").css("margin-right", "256px"); $("#notification-center").css("right", "0px"); + + // Add cookie so the menu stays open on other pages + document.cookie = "menu=open; path=/"; } else { // Make the menu invisible and move the content to the right. $("#chat-history").width("calc(100% - 331px)"); $(".modal").width("calc(100% - 256px)"); $(".content").css("margin-right", "0px"); $("#notification-center").css("right", "-256px"); + + // Change menu cookie to close + document.cookie = "menu=closed; path=/"; } }); + + if (getCookie("menu") == "open") { + $("#own-profile-picture").click(); + } }); diff --git a/website/public/js/main.js b/website/public/js/main.js index 8a52797..dfd6c38 100644 --- a/website/public/js/main.js +++ b/website/public/js/main.js @@ -1,3 +1,34 @@ +var days = ["zondag", "maandag", "dinsdag", "woensdag", "donderdag", "vrijdag", "zaterdag"]; +var months = ["januari", "februari", "maart", "april", "mei", "juni", "juli", "augustus", "september", "oktober", "november", "december"] + +function fancyText(text) { + + // Add images and gifs. + var regex = /(https:\/\/.[^ ]*\.(?:png|jpg|jpeg|gif))/ig; + text = text.replace(regex, function(img) { + return ""; + }); + + // Add links. + // regex = /(https:\/\/.[^ ]*\.(?:net|com|nl))/ig; + // text = text.replace(regex, function(link) { + // return "LINK"; + // }); + + return text; +} + +function getCookie(key) { + cookies = document.cookie.split("; "); + for (var i in cookies) { + cookie = cookies[i].split("="); + if (cookie[0] == key) { + return cookie[1]; + } + } + return false; +} + function editFriendship(userID, value) { $.post("API/editFriendship.php", { usr: userID, action: value }) .done(function() { diff --git a/website/public/js/post.js b/website/public/js/post.js index 62ace68..1906428 100644 --- a/website/public/js/post.js +++ b/website/public/js/post.js @@ -1,7 +1,9 @@ -function postComment() { +function postComment(buttonValue) { + formData = $("#newcommentform").serializeArray(); + formData.push({name: "button", value: buttonValue}); $.post( "API/postComment.php", - $("#newcommentform").serialize() + formData ); $("#newcomment").val(""); @@ -13,6 +15,4 @@ function postComment() { ).done(function (data) { $('#modal-response').html(data); }); -} - - +} \ No newline at end of file diff --git a/website/public/js/registerAndLogin.js b/website/public/js/registerAndLogin.js index b2fda05..87522cf 100644 --- a/website/public/js/registerAndLogin.js +++ b/website/public/js/registerAndLogin.js @@ -1,5 +1,5 @@ function checkLoggedIn() { - if (confirm("You are already logged in!\nDo you want to logout?\nPress ok to logout.") == true) { + if (confirm("U bent al ingelogd!!\nWilt u uitloggen?\nKlik ok om uit te loggen.") == true) { window.location.href = "logout.php"; } else { window.location.href = "profile.php"; @@ -7,9 +7,9 @@ function checkLoggedIn() { } function bannedAlert(){ - alert("Your account is banned"); + alert("Uw account is geband!"); } function emailNotConfirmed(){ - alert("Your account has not been verified yet!\nAnother email has been sent to you") + alert("Uw account is nog niet bevestigd!\nEr is een nieuwe email gestuurd om uw account te bevestigen"); } diff --git a/website/public/js/search.js b/website/public/js/search.js index b3c322a..c026b64 100644 --- a/website/public/js/search.js +++ b/website/public/js/search.js @@ -8,7 +8,6 @@ function searchUsers(n, m) { filter: $("#search-filter").val() } ).done(function(data) { - console.log(data); if (!showFriends(data, "#search-users-list", 0, "profile.php", "GET")) { $("#search-users-list").text("Niemand gevonden"); } @@ -25,7 +24,6 @@ function searchGroups(n, m) { filter: $("#search-filter").val() } ).done(function(data) { - console.log(data); if (!showGroups(data, "#search-groups-list")) { $("#search-groups-list").text("Geen groepen gevonden"); } diff --git a/website/public/login.php b/website/public/login.php index 0515793..9fd7fb0 100644 --- a/website/public/login.php +++ b/website/public/login.php @@ -19,16 +19,24 @@ "; } + // define variables and set to empty values + $name = $surname = $bday = $username = $password = $confirmpassword = $location = $housenumber = $email = $confirmEmail = $captcha = $ip = ""; + $genericErr = $nameErr = $surnameErr = $bdayErr = $usernameErr = $passwordErr = $confirmpasswordErr = $locationErr = $housenumberErr = $emailErr = $confirmEmailErr = $captchaErr = ""; + $correct = true; + $day_date = "dag"; + $month_date = "maand"; + $year_date = "jaar"; + // Define variables and set to empty values - $uname = $psw =""; + $user = $psw = $remember =""; $loginErr = $resetErr =""; if ($_SERVER["REQUEST_METHOD"] == "POST") { switch ($_POST["submit"]) { case "login": try { - $uname = ($_POST["uname"]); - validateLogin($_POST["uname"], $_POST["psw"]); + $user = ($_POST["user"]); + validateLogin($_POST["user"], $_POST["psw"]); } catch(loginException $e) { $loginErr = $e->getMessage(); } @@ -46,19 +54,10 @@ "; } break; - + case "register": + include("register.php"); } } -// // Trying to login -// if ($_SERVER["REQUEST_METHOD"] == "POST") { -// try{ -// $uname = ($_POST["uname"]); -// validateLogin($_POST["uname"], $_POST["psw"]); -// } catch(loginException $e) { -// $loginErr = $e->getMessage(); -// } -// } - /* This view adds login view */ include("../views/login-view.php"); ?> diff --git a/website/public/profile.php b/website/public/profile.php index a79ad4c..95c5b86 100644 --- a/website/public/profile.php +++ b/website/public/profile.php @@ -8,6 +8,7 @@ diff --git a/website/public/register(stash).php b/website/public/register(stash).php new file mode 100644 index 0000000..0077e62 --- /dev/null +++ b/website/public/register(stash).php @@ -0,0 +1,115 @@ + + + + +getMessage(); + } + + try { + $surname = test_input(($_POST["surname"])); + checkInputChoice($surname, "lettersAndSpaces"); + } + catch(lettersAndSpacesException $e){ + $correct = false; + $surnameErr = $e->getMessage(); + } + + try{ + $day_date = test_input(($_POST["day_date"])); + $month_date = test_input(($_POST["month_date"])); + $year_date = test_input(($_POST["year_date"])); + $bday = $year_date . "-" . $month_date . "-" . $day_date; + checkInputChoice($bday, "bday"); + } catch(bdayException $e){ + $correct = false; + $bdayErr = $e->getMessage(); + } + + try{ + $username = str_replace(' ', '', test_input(($_POST["username"]))); + checkInputChoice($username, "username"); + } catch(usernameException $e){ + $correct = false; + $usernameErr = $e->getMessage(); + } + + try{ + $password = str_replace(' ', '', test_input(($_POST["password"]))); + checkInputChoice($password, "longerEight"); + matchPassword(); + } catch(passwordException $e){ + $correct = false; + $passwordErr = $e->getMessage(); + } catch(confirmPasswordException $e){ + $correct = false; + $confirmPasswordErr = $e->getMessage(); + } + + try{ + $location = test_input(($_POST["location"])); + checkInputChoice($location, "lettersAndSpaces"); + } catch(lettersAndSpacesException $e){ + $correct = false; + $locationErr = $e->getMessage(); + } + + try{ + $email = test_input(($_POST["email"])); + checkInputChoice($email, "email"); + $confirmEmail = test_input(($_POST["confirmEmail"])); + matchEmail(); + } catch(emailException $e){ + $correct = false; + $emailErr = $e->getMessage(); + } catch(confirmEmailException $e){ + $correct = false; + $confirmEmailErr = $e->getMessage(); + } + + try{ + $captcha = $_POST['g-recaptcha-response']; + checkCaptcha($captcha); + } catch(captchaException $e){ + $correct = false; + $captchaErr = $e->getMessage(); + } + + try { + getIp(); + registerCheck($correct); + sendConfirmEmailUsername($username); + } catch(registerException $e){ + $genericErr = $e->getMessage(); + } + } +/* This view adds register view */ +include("../views/register-view.php"); +?> + + diff --git a/website/public/register.php b/website/public/register.php index 1ce4817..6bebd7e 100644 --- a/website/public/register.php +++ b/website/public/register.php @@ -1,104 +1,91 @@ - - - -getMessage(); } - // define variables and set to empty values - $name = $surname = $bday = $username = $password = $confirmpassword = $location = $housenumber = $email = $captcha = $ip = ""; - $genericErr = $nameErr = $surnameErr = $bdayErr = $usernameErr = $passwordErr = $confirmpasswordErr = $locationErr = $housenumberErr = $emailErr = $captchaErr = ""; - $correct = true; - // Trying to register an account - if ($_SERVER["REQUEST_METHOD"] == "POST") { - try { - $name = test_input(($_POST["name"])); - checkInputChoice($name, "lettersAndSpaces"); - } catch(lettersAndSpacesException $e){ - $correct = false; - $nameErr = $e->getMessage(); - } - - try { - $surname = test_input(($_POST["surname"])); - checkInputChoice($surname, "lettersAndSpaces"); - } - catch(lettersAndSpacesException $e){ - $correct = false; - $surnameErr = $e->getMessage(); - } - - try{ - $bday = test_input(($_POST["bday"])); - checkInputChoice($bday, "bday"); - } catch(bdayException $e){ - $correct = false; - $bdayErr = $e->getMessage(); - } - - try{ - $username = str_replace(' ', '', test_input(($_POST["username"]))); - checkInputChoice($username, "username"); - } catch(usernameException $e){ - $correct = false; - $usernameErr = $e->getMessage(); - } - - try{ - $password = str_replace(' ', '', test_input(($_POST["password"]))); - checkInputChoice($password, "longerEight"); - matchPassword(); - } catch(passwordException $e){ - $correct = false; - $passwordErr = $e->getMessage(); - } catch(confirmPasswordException $e){ - $correct = false; - $confirmPasswordErr = $e->getMessage(); - } - - try{ - $location = test_input(($_POST["location"])); - checkInputChoice($location, "lettersAndSpaces"); - } catch(lettersAndSpacesException $e){ - $correct = false; - $locationErr = $e->getMessage(); - } - - try{ - $email = test_input(($_POST["email"])); - checkInputChoice($email, "email"); - } catch(emailException $e){ - $correct = false; - $emailErr = $e->getMessage(); - } - - try{ - $captcha = $_POST['g-recaptcha-response']; - checkCaptcha($captcha); - } catch(captchaException $e){ - $correct = false; - $captchaErr = $e->getMessage(); - } - - try { - getIp(); - registerCheck($correct); - sendConfirmEmailUsername($username); - } catch(registerException $e){ - $genericErr = $e->getMessage(); - } + try { + $surname = test_input(($_POST["surname"])); + checkInputChoice($surname, "lettersAndSpaces"); + } + catch(lettersAndSpacesException $e){ + $correct = false; + $surnameErr = $e->getMessage(); + } + + try{ + $day_date = test_input(($_POST["day_date"])); + $month_date = test_input(($_POST["month_date"])); + $year_date = test_input(($_POST["year_date"])); + $bday = $year_date . "-" . $month_date . "-" . $day_date; + checkInputChoice($bday, "bday"); + } catch(bdayException $e){ + $correct = false; + $bdayErr = $e->getMessage(); + } + + try{ + $username = str_replace(' ', '', test_input(($_POST["username"]))); + checkInputChoice($username, "username"); + } catch(usernameException $e){ + $correct = false; + $usernameErr = $e->getMessage(); + } + + try{ + $password = str_replace(' ', '', test_input(($_POST["password"]))); + checkInputChoice($password, "longerEight"); + matchPassword(); + } catch(passwordException $e){ + $correct = false; + $passwordErr = $e->getMessage(); + } catch(confirmPasswordException $e){ + $correct = false; + $confirmPasswordErr = $e->getMessage(); + } + + try{ + $location = test_input(($_POST["location"])); + checkInputChoice($location, "lettersAndSpaces"); + } catch(lettersAndSpacesException $e){ + $correct = false; + $locationErr = $e->getMessage(); + } + + try{ + $email = test_input(($_POST["email"])); + checkInputChoice($email, "email"); + $confirmEmail = test_input(($_POST["confirmEmail"])); + matchEmail(); + } catch(emailException $e){ + $correct = false; + $emailErr = $e->getMessage(); + } catch(confirmEmailException $e){ + $correct = false; + $confirmEmailErr = $e->getMessage(); + } + + try{ + $captcha = $_POST['g-recaptcha-response']; + checkCaptcha($captcha); + } catch(captchaException $e){ + $correct = false; + $captchaErr = $e->getMessage(); + } + + try { + getIp(); + registerCheck($correct); + sendConfirmEmailUsername($username); + } catch(registerException $e){ + echo ""; + $genericErr = $e->getMessage(); } -/* This view adds register view */ -include("../views/register-view.php"); -?> - - diff --git a/website/public/styles/chat.css b/website/public/styles/chat.css index 6822d21..0ba5af4 100644 --- a/website/public/styles/chat.css +++ b/website/public/styles/chat.css @@ -1,3 +1,8 @@ + +body { + overflow: hidden; +} + /* Overall chat-screen */ .chat { position: fixed; @@ -37,6 +42,22 @@ } /* Chat-message takes the whole width of the chat area */ +.day-message { + width: 100%; + min-height: 40px; + padding: 10px 0; + clear: both; + text-align: center; +} + +.day-message-content { + width: auto; + padding: 10px; + + background-color: #F8F8F8; + color: #666; +} + .chat-message { width: 100%; min-height: 40px; @@ -105,4 +126,8 @@ .active-friend-chat { background: #4CAF50; color: white; +} + +.chat-message img { + max-width: 100%; } \ No newline at end of file diff --git a/website/public/styles/index.css b/website/public/styles/index.css index 97d6f63..6f7caf0 100644 --- a/website/public/styles/index.css +++ b/website/public/styles/index.css @@ -30,8 +30,10 @@ form { border-radius: 12px; height: 85%; margin: auto; - width: 80%; - overflow-y:auto; + width: 600px; + overflow-y: auto; + overflow-x: hidden; + } @@ -44,13 +46,13 @@ h1 { /* registreer titel*/ h2 { - padding: 16px; + padding: 8px; text-align: left; font-size: 2.0em; } h3 { - padding: 16px; + padding: 8px; text-align: center; font-size: 1.5em; } @@ -61,11 +63,15 @@ input[type=text], input[type=password], input[type=email], input[type="date"] { display: inline-block; height: 60%; font-size: 16px; - padding: 8px 20px; + padding: 8px 10px; margin: 4px 0; width: 55%; } +.middle{ + text-align: center; +} + .center{ text-align: center; } @@ -77,7 +83,7 @@ button { cursor: pointer; height: 50%; padding: 8px 20px; - margin: 10px; + margin: 5px; font-family: Arial; font-size: 22px; box-shadow: 0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24); @@ -88,6 +94,7 @@ button { font-family: Arial; font-size: 15px; color: red; + text-align: left; } label { @@ -96,19 +103,19 @@ label { /* padding voor registreer container */ .login_containerregister { - padding: 16px; + padding: 8px; text-align: left; } /* padding voor login_containers */ .login_containerlogin { - padding:16px; + padding:8px; text-align: center; } /* padding voor foutmelding login */ .login_containerfault { - padding: 16px; + padding: 4px; text-align: center; color: red; } @@ -127,10 +134,14 @@ label { background-attachment: fixed;*/ box-shadow: 0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24); height: 400px; - margin: 34px auto; + margin: 16px auto; overflow-y: auto; padding: 20px; - width: 45%; + width: 600px; +} + +select{ + width: 18%; } ul { @@ -143,12 +154,12 @@ ul { display: none; /* Hidden by default */ position: fixed; /* Stay in place */ z-index: 1; /* Sit on top */ - padding-top: 100px; /* Location of the box */ + padding-top: 30px; /* Location of the box */ left: 0; top: 0; width: 100%; /* Full width */ height: 100%; /* Full height */ - overflow: auto; /* Enable scroll if needed */ + overflow: hidden; /* Enable scroll if needed */ background-color: rgb(0,0,0); /* Fallback color */ background-color: rgba(0,0,0,0.4); /* Black w/ opacity */ } @@ -160,7 +171,7 @@ ul { margin: auto; padding: 0; border: 1px solid #888; - width: 500px; + width: 600px; box-shadow: 0 4px 8px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19); -webkit-animation-name: animatetop; -webkit-animation-duration: 0.4s; @@ -183,7 +194,7 @@ ul { .close { color: white; float: right; - font-size: 28px; + font-size: 36px; font-weight: bold; } @@ -195,15 +206,16 @@ ul { } .modal-header { - padding: 2px 16px; + padding: 4px 16px; background-color: #FBC02D; color: black; } -.modal-body {padding: 2px 16px;} +.modal-body { + padding: 2px 16px; +} .modal-footer { - padding: 2px 16px; background-color: #FBC02D; color: black; -} \ No newline at end of file +} diff --git a/website/public/styles/main.css b/website/public/styles/main.css index abda8be..0c37afa 100644 --- a/website/public/styles/main.css +++ b/website/public/styles/main.css @@ -275,3 +275,16 @@ div[data-title]:hover:after { display: inline-block; vertical-align: middle; } + +::-webkit-scrollbar { + width: 5px; + height: 5px; +} +::-webkit-scrollbar-track { + background: none; +} +::-webkit-scrollbar-thumb { + -webkit-border-radius: 20px; + border-radius: 20px; + background: #4CAF50; +} \ No newline at end of file diff --git a/website/public/styles/post-popup.css b/website/public/styles/post-popup.css index 11fe03b..c6e96c1 100644 --- a/website/public/styles/post-popup.css +++ b/website/public/styles/post-popup.css @@ -69,4 +69,9 @@ .commentcontent { margin: 5px auto; width: 95%; +} + +.nietslecht { + font-family: Impact, Anton, sans-serif; + text-shadow: -1.5px 0 1px black, 0 1.5px 1px black, 1px 0 1.5px black, 0 -1.5px 1px black; } \ No newline at end of file diff --git a/website/public/styles/profile.css b/website/public/styles/profile.css index 85b2db5..becbeca 100644 --- a/website/public/styles/profile.css +++ b/website/public/styles/profile.css @@ -30,6 +30,7 @@ div.posts div.post { width: calc(100% - 40px); cursor: pointer; transition-duration: 250ms; + word-wrap: break-word; } div.posts div.post:hover { diff --git a/website/queries/checkInput.php b/website/queries/checkInput.php index 9b91833..52b830f 100644 --- a/website/queries/checkInput.php +++ b/website/queries/checkInput.php @@ -38,8 +38,7 @@ function checkName($variable){ if (empty($variable)) { throw new lettersAndSpacesException("Verplicht!"); } else if (!preg_match("/^[a-zA-Z ]*$/", $variable)) { - - throw new lettersAndSpacesException("Alleen letters en spaties zijn toegestaan!"); + throw new lettersAndSpacesException("Alleen letters en spaties zijn toegestaan!"); } } @@ -48,12 +47,12 @@ function validateBday($variable){ if (empty($variable)) { throw new bdayException("Verplicht!"); } else { - if (!(validateDate($variable, "Y/m/d"))) { + if (!(validateDate($variable, "Y-m-d"))) { throw new bdayException("Geen geldige datum"); } else { - $dateNow = date("Y/m/d"); + $dateNow = date("Y-m-d"); if ($dateNow < $variable) { - throw new bdayException("Geen geldige datum"); + throw new bdayException("Geen geldige datum!"); } } } @@ -97,6 +96,12 @@ function validateEmail($variable){ } } +function matchEmail(){ + if (strtolower($_POST["email"]) != strtolower($_POST["confirmEmail"])){ + throw new confirmEmailException("Emails matchen niet!"); + } +} + /* checks if an input is a valid email. */ function resetEmail($variable){ if (empty($variable)) { @@ -119,11 +124,11 @@ function matchPassword(){ /* Checks if captcha is correctly filled in */ function checkCaptcha($captcha){ if(!$captcha){ - throw new captchaException("Captcha needs to be filled in!"); + throw new captchaException("Captcha moet ingevuld worde!"); } else { $response=json_decode(file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=6Lc72xIUAAAAAPizuF3nUbklCPljVCVzgYespz8o&response=".$captcha."&remoteip=".$_SERVER['REMOTE_ADDR'])); if($response->success==false) { - throw new captchaException("You are a spammer!"); + throw new captchaException("Je bent een spammer!"); } } } @@ -206,6 +211,14 @@ class emailException extends Exception } } +class confirmEmailException extends Exception +{ + public function __construct($message = "", $code = 0, Exception $previous = null) + { + parent::__construct($message, $code, $previous); + } +} + class captchaException extends Exception { public function __construct($message = "", $code = 0, Exception $previous = null) diff --git a/website/queries/login.php b/website/queries/login.php index 2af255a..384a3d5 100644 --- a/website/queries/login.php +++ b/website/queries/login.php @@ -9,10 +9,11 @@ function getUser() { FROM `user` WHERE - `username` LIKE :username + `username` LIKE :username OR + `email` LIKE :username "); - $stmt->bindParam(":username", $_POST["uname"]); + $stmt->bindValue(":username", test_input($_POST["user"])); $stmt->execute(); return $stmt->fetch(PDO::FETCH_ASSOC); } @@ -20,7 +21,7 @@ function getUser() { function validateLogin($username, $password){ // Empty username or password field if (empty($username) || empty($password)) { - throw new loginException("Gebruikersnaam of wachtwoord is niet ingevuld"); + throw new loginException("Inloggegevens zijn niet ingevuld"); } else { $psw = test_input($password); @@ -41,6 +42,9 @@ function validateLogin($username, $password){ "; } else { $_SESSION["userID"] = $userID; +// if($_POST[rememberMe] == 1){ +// ini_set("session.gc_maxlifetime", "10"); +// } header("location: profile.php"); } } else { diff --git a/website/queries/post.php b/website/queries/post.php index 5940267..df1e227 100644 --- a/website/queries/post.php +++ b/website/queries/post.php @@ -75,7 +75,7 @@ function makePost($userID, $groupID, $title, $content) { $stmt->execute(); } -function makeComment($postID, $userID, $content) { +function makeComment($postID, $userID, $content) : int { $stmt = $GLOBALS["db"]->prepare(" INSERT INTO `comment` ( @@ -94,4 +94,55 @@ function makeComment($postID, $userID, $content) { $stmt->bindParam(':userID', $userID); $stmt->bindParam(':content', $content); $stmt->execute(); -} \ No newline at end of file + return $stmt->rowCount(); +} + +function makeNietSlecht(int $postID, int $userID) : int { + if (checkNietSlecht($postID, $userID)) { + return deleteNietSlecht($postID, $userID); + } else { + return addNietSlecht($postID, $userID); + } +} + +function checkNietSlecht(int $postID, int $userID) { + $stmt = $GLOBALS["db"]->prepare(" + SELECT + * + FROM + `niet_slecht` + WHERE + `userID` = :userID AND + `postID` = :postID + "); + $stmt->bindParam(":userID", $userID); + $stmt->bindParam(":postID", $postID); + $stmt->execute(); + return $stmt->rowCount(); +} + +function addNietSlecht(int $postID, int $userID) { + $stmt = $GLOBALS["db"]->prepare(" + INSERT INTO + `niet_slecht` (`userID`, `postID`) + VALUES (:userID, :postID) + "); + $stmt->bindParam(":userID", $userID); + $stmt->bindParam(":postID", $postID); + $stmt->execute(); + return $stmt->rowCount(); +} + +function deleteNietSlecht(int $postID, int $userID) { + $stmt = $GLOBALS["db"]->prepare(" + DELETE FROM + `niet_slecht` + WHERE + `userID` = :userID AND + `postID` = :postID + "); + $stmt->bindParam(":userID", $userID); + $stmt->bindParam(":postID", $postID); + $stmt->execute(); + return $stmt->rowCount(); +} diff --git a/website/queries/private_message.php b/website/queries/private_message.php index fecea2b..4d48d3a 100644 --- a/website/queries/private_message.php +++ b/website/queries/private_message.php @@ -1,91 +1,105 @@ prepare(" + SELECT + * + FROM + `private_message` + WHERE + `origin` = :user1 AND + `destination` = :user2 OR + `origin` = :user2 AND + `destination` = :user1 + ORDER BY + `messageID` ASC + "); - $stmt = $GLOBALS["db"]->prepare(" - SELECT - * - FROM - `private_message` - WHERE - `origin` = :user1 AND - `destination` = :user2 OR - `origin` = :user2 AND - `destination` = :user1 - ORDER BY - `messageID` ASC - "); + $stmt->bindParam(":user1", $user1ID); + $stmt->bindParam(":user2", $user2ID); - $stmt->bindParam(":user1", $user1ID); - $stmt->bindParam(":user2", $user2ID); + $stmt->execute(); - $stmt->execute(); - - return json_encode($stmt->fetchAll()); + return json_encode($stmt->fetchAll()); + } else { + return "[]"; + } } function sendMessage($destination, $content) { - $stmt = $GLOBALS["db"]->prepare(" - INSERT INTO - `private_message` - ( - `origin`, - `destination`, - `content` - ) - VALUES - ( - :origin, - :destination, - :content - ) - "); + require_once("friendship.php"); + if (getFriendshipStatus($destination) == 1) { + $stmt = $GLOBALS["db"]->prepare(" + INSERT INTO + `private_message` + ( + `origin`, + `destination`, + `content` + ) + VALUES + ( + :origin, + :destination, + :content + ) + "); - return $stmt->execute(array( - "origin" => $_SESSION["userID"], - "destination" => $destination, - "content" => $content - )); + return $stmt->execute(array( + "origin" => $_SESSION["userID"], + "destination" => $destination, + "content" => $content + )); + } else { + return false; + } } function getNewChatMessages($lastID, $destination) { - $stmt = $GLOBALS["db"]->prepare(" - SELECT - * - FROM - `private_message` - WHERE - ( - `origin` = :user1 AND - `destination` = :user2 OR - `origin` = :user2 AND - `destination` = :user1) AND - `messageID` > :lastID - ORDER BY - `messageID` ASC - "); + require_once("friendship.php"); + if (getFriendshipStatus($destination) == 1) { + $stmt = $GLOBALS["db"]->prepare(" + SELECT + * + FROM + `private_message` + WHERE + ( + `origin` = :user1 AND + `destination` = :user2 OR + `origin` = :user2 AND + `destination` = :user1) AND + `messageID` > :lastID + ORDER BY + `messageID` ASC + "); - $stmt->bindParam(':user1', $_SESSION["userID"]); - $stmt->bindParam(':user2', $destination); - $stmt->bindParam(':lastID', $lastID); + $stmt->bindParam(':user1', $_SESSION["userID"]); + $stmt->bindParam(':user2', $destination); + $stmt->bindParam(':lastID', $lastID); - $stmt->execute(); + $stmt->execute(); - return json_encode($stmt->fetchAll()); + return json_encode($stmt->fetchAll()); + } else { + return "[]"; + } } function selectAllUnreadChat() { $stmt = $GLOBALS["db"]->prepare(" SELECT - LEFT(CONCAT(`user`.`fname`, ' ', `user`.`lname`), 15) as `fullname`, + LEFT(CONCAT(`user`.`fname`, ' ', `user`.`lname`), 15) AS `fullname`, `user`.`userID`, IFNULL( `profilepicture`, '../img/avatar-standard.png' ) AS profilepicture, - LEFT(`private_message`.`content`, 15) as `content` + LEFT(`private_message`.`content`, 15) AS `content` FROM `private_message`, `friendship`, @@ -101,7 +115,8 @@ function selectAllUnreadChat() { `friendship`.chatLastVisted2 IS NULL)) AND `private_message`.`origin` = `user`.`userID` AND `private_message`.`destination` = :userID AND - `user`.`role` != 'banned' + `user`.`role` != 'banned' AND + `friendship`.`status` = 'confirmed' GROUP BY `user`.`userID` diff --git a/website/queries/register.php b/website/queries/register.php index 738ef43..bc44acf 100644 --- a/website/queries/register.php +++ b/website/queries/register.php @@ -10,7 +10,7 @@ function getExistingUsername() { `username` LIKE :username "); - $stmt->bindParam(":username", $_POST["username"]); + $stmt->bindValue(":username", test_input($_POST["username"])); $stmt->execute(); return $stmt->rowCount(); @@ -26,7 +26,7 @@ function getExistingEmail() { `email` LIKE :email "); - $stmt->bindParam(":email", $_POST["email"]); + $stmt->bindValue(":email", test_input($_POST["email"])); $stmt->execute(); return $stmt->rowCount(); @@ -42,7 +42,7 @@ function getResetEmail() { `email` LIKE :email "); - $stmt->bindParam(":email", $_POST["forgotEmail"]); + $stmt->bindValue(":email", test_input($_POST["forgotEmail"])); $stmt->execute(); return $stmt->rowCount(); @@ -70,15 +70,21 @@ function registerAccount() { $hash=password_hash($_POST["password"], PASSWORD_DEFAULT); - $stmt->bindParam(":fname", $_POST["name"]); - $stmt->bindParam(":lname", $_POST["surname"]); - $stmt->bindParam(":bday", $_POST["bday"]); - $stmt->bindParam(":username", $_POST["username"]); - $stmt->bindParam(":password", $hash); - $stmt->bindParam(":location", $_POST["location"]); - $stmt->bindParam(":email", (strtolower($_POST["email"]))); + $stmt->bindValue(":fname", test_input($_POST["name"])); + $stmt->bindValue(":lname", test_input($_POST["surname"])); + $stmt->bindValue(":bday", test_input($_POST["bday"])); + $stmt->bindValue(":username", test_input($_POST["username"])); + $stmt->bindValue(":password", test_input($hash)); + $stmt->bindValue(":location", test_input($_POST["location"])); + $stmt->bindValue(":email", test_input(strtolower($_POST["email"]))); $stmt->execute(); $stmt->rowCount(); } + +function submitselect($date, $value){ + if ($date == $value){ + echo "selected"; + } +} ?> diff --git a/website/queries/requestpassword.php b/website/queries/requestpassword.php index c0ff462..bae825a 100644 --- a/website/queries/requestpassword.php +++ b/website/queries/requestpassword.php @@ -50,5 +50,5 @@ function setHashToDatabase(int $userID, string $hash) { $stmt->bindParam(":hash", $hash); $stmt->bindParam(":userID", $userID); $stmt->execute(); - return $stmt->rowCount(); + $stmt->rowCount(); } \ No newline at end of file diff --git a/website/queries/settings.php b/website/queries/settings.php index 0bf8791..05e7fbf 100644 --- a/website/queries/settings.php +++ b/website/queries/settings.php @@ -1,6 +1,10 @@ fetch(); } +/** + * Gets the passwordHas form the database + * @return mixed passwordhash + */ function getPasswordHash() { $stmt = $GLOBALS["db"]->prepare(" SELECT @@ -73,6 +91,10 @@ function getPasswordHash() { return $stmt->fetch(); } +/** + * Changes the setting from post. + * @throws HappyAlert + */ function updateSettings() { $stmt = $GLOBALS["db"]->prepare(" UPDATE @@ -82,7 +104,9 @@ function updateSettings() { `lname` = :lname, `location` = :location, `birthdate` = :bday, - `bio` = :bio + `bio` = :bio, + `showEmail` = :showEmail, + `showBday` = :showBday WHERE `userID` = :userID "); @@ -92,15 +116,22 @@ function updateSettings() { $stmt->bindValue(":location", test_input($_POST["location"])); $stmt->bindValue(":bday", test_input($_POST["bday"])); $stmt->bindValue(":bio", test_input($_POST["bio"])); + $stmt->bindValue(":showEmail", test_input($_POST["showEmail"])); + $stmt->bindValue(":showBday", test_input($_POST["showBday"])); + $stmt->bindValue(":userID", $_SESSION["userID"]); $stmt->execute(); throw new HappyAlert("Instellingen zijn opgeslagen."); } +/** + * Change + * @throws AngryAlert + */ function changePassword() { $user = getPasswordHash(); - if (password_verify($_POST["password-old"], $user["password"])) { - if ($_POST["password-new"] == $_POST["password-confirm"] && (strlen($_POST["password-new"]) >= 8)) { + if (password_verify($_POST["password-old"], test_input($user["password"]))) { + if (test_input($_POST["password-new"]) == test_input($_POST["password-confirm"]) && (strlen(test_input($_POST["password-new"])) >= 8)) { doChangePassword(); } else { throw new AngryAlert("Wachtwoorden komen niet overeen."); @@ -110,6 +141,10 @@ function changePassword() { } } +/** + * @throws AngryAlert + * @throws HappyAlert + */ function doChangePassword() { $stmt = $GLOBALS["db"]->prepare(" UPDATE @@ -134,8 +169,8 @@ function doChangePassword() { function changeEmail() { - if ($_POST["email"] == $_POST["email-confirm"]) { - $email = strtolower($_POST["email"]); + if (test_input($_POST["email"]) == test_input($_POST["email-confirm"])) { + $email = strtolower(test_input($_POST["email"])); if (filter_var($email, FILTER_VALIDATE_EMAIL)) { //check if email exists emailIsAvailableInDatabase($email); @@ -193,7 +228,6 @@ function updateAvatar() { $tmpImg = $_FILES["pp"]["tmp_name"]; checkAvatarSize($tmpImg); - removeOldAvatar(); if (getimagesize($tmpImg)["mime"] == "image/gif") { if ($_FILES["pp"]["size"] > 4000000) { throw new AngryAlert("Bestand is te groot, maximaal 4MB toegestaan."); @@ -205,6 +239,7 @@ function updateAvatar() { $scaledImg = scaleAvatar($tmpImg); imagepng($scaledImg, $profilePictureDir . $relativePath); } + removeOldAvatar(); setAvatarToDatabase("../" . $relativePath); throw new HappyAlert("Profielfoto veranderd."); } diff --git a/website/queries/user.php b/website/queries/user.php index 9c23721..b9ba986 100644 --- a/website/queries/user.php +++ b/website/queries/user.php @@ -35,6 +35,7 @@ function getUsername($userID) { function selectUser($me, $other) { $stmt = $GLOBALS["db"]->prepare(" SELECT + `userID`, `username`, `birthdate`, `location`, @@ -94,7 +95,7 @@ function selectAllUserGroups($userID) { `group_page`.`groupID` = `group_member`.`groupID` WHERE `userID` = :userID AND - `role` = 1 + `role` = 'member' "); $stmt->bindParam(':userID', $userID, PDO::PARAM_INT); @@ -343,9 +344,10 @@ function searchSomeUsers($n, $m, $search) { FROM `user` WHERE - `username` LIKE :keyword OR + (`username` LIKE :keyword OR `fname` LIKE :keyword OR - `lname` LIKE :keyword + `lname` LIKE :keyword) AND + `role` != 'banned' ORDER BY `fname`, `lname`, diff --git a/website/views/bdayInput.php b/website/views/bdayInput.php new file mode 100644 index 0000000..f4e440f --- /dev/null +++ b/website/views/bdayInput.php @@ -0,0 +1,37 @@ + + + diff --git a/website/views/chat-view.php b/website/views/chat-view.php index 0d90149..974b441 100644 --- a/website/views/chat-view.php +++ b/website/views/chat-view.php @@ -74,6 +74,7 @@ name="content" id="newContent" placeholder="Schrijf een bericht..." + autocomplete="off" autofocus required /> diff --git a/website/views/forgotPasswordModal.php b/website/views/forgotPasswordModal.php new file mode 100644 index 0000000..d3f12f9 --- /dev/null +++ b/website/views/forgotPasswordModal.php @@ -0,0 +1,36 @@ + + + + + \ No newline at end of file diff --git a/website/views/login-view.php b/website/views/login-view.php index de4c48b..8edc777 100644 --- a/website/views/login-view.php +++ b/website/views/login-view.php @@ -13,12 +13,13 @@
- +
@@ -26,6 +27,7 @@
+ +
+ +
+
- -
- Registreer een account + +
+ - - + - - - - - - -
-
+ \ No newline at end of file diff --git a/website/views/post-view.php b/website/views/post-view.php index 61e0e05..e3ceb9b 100644 --- a/website/views/post-view.php +++ b/website/views/post-view.php @@ -2,6 +2,7 @@ $postID = $_GET['postID']; $post = selectPostById($postID)->fetch(PDO::FETCH_ASSOC); $fullname = $post['fname'] . " " . $post['lname'] . " (" . $post['username'] . ")"; +session_start(); echo("
@@ -21,10 +22,20 @@ echo("
-
+
- + + +
diff --git a/website/views/profile.php b/website/views/profile.php index 54f028d..bd009e3 100644 --- a/website/views/profile.php +++ b/website/views/profile.php @@ -1,7 +1,13 @@
"> - +
+ +
diff --git a/website/views/register-view.php b/website/views/register-view.php index 5f39472..acb5f4b 100644 --- a/website/views/register-view.php +++ b/website/views/register-view.php @@ -40,14 +40,44 @@ @@ -118,6 +148,18 @@ *
+ + +