19 Commits

Author SHA1 Message Date
Hendrik
f566c6eec4 comments 2017-02-03 12:43:24 +01:00
Hendrik
f3aebddfea commentses 2017-02-03 12:21:37 +01:00
Hendrik
b07d0712aa Merge branch 'marijn-groups' into hendrik-testing 2017-02-03 12:08:42 +01:00
Marijn Jansen
6d5de98c1d comments 2017-02-03 11:31:18 +01:00
Hendrik
771567660c removed session id lol 2017-02-03 11:19:06 +01:00
Hendrik
a0ef234b79 Merge branch 'master' into hendrik-testing 2017-02-03 11:15:01 +01:00
Hendrik
da061de226 validated adminpanel, added shown friends limit in profile. 2017-02-03 11:14:03 +01:00
Marijn Jansen
f18088d8d2 Merge branch 'marijn-groups' into 'master'
Comments

See merge request !203
2017-02-03 11:13:46 +01:00
Marijn Jansen
ac2ce3d07b Merge branch 'master' into marijn-groups 2017-02-03 11:13:20 +01:00
Marijn Jansen
c69b5d8ed3 Comments 2017-02-03 11:12:02 +01:00
Marijn Jansen
5de3a84683 Merge branch 'marijn-groups' into 'master'
Marijn groups

See merge request !201
2017-02-03 10:59:35 +01:00
Marijn Jansen
b8d6136a9d Added deadmin! 2017-02-03 10:59:10 +01:00
Lars van Hijfte
1862369013 Merge branch 'joey-testing' into 'master'
Joey testing

See merge request !200
2017-02-03 10:54:47 +01:00
Lars van Hijfte
5e8fa6791f Merge branch 'joey-testing' into 'master'
Fixed url

See merge request !198
2017-02-03 10:45:33 +01:00
Marijn Jansen
28e9269b52 Delete groups 2017-02-03 10:44:50 +01:00
Hendrik
bb352c7a7a merge 2017-02-03 10:41:29 +01:00
Hendrik
0f202088a1 Merge branch 'master' into hendrik-testing 2017-02-03 10:40:44 +01:00
Hendrik
fde736b8c5 misc 2017-02-03 10:33:44 +01:00
Hendrik
afb45d6709 add closing of modal on escape key and clicking outside 2017-02-02 15:51:27 +01:00
28 changed files with 489 additions and 92 deletions

View File

@@ -21,6 +21,8 @@ require_once "../queries/alerts.php";
include("../views/main.php"); include("../views/main.php");
$alertClass; $alertClass;
$alertMessage; $alertMessage;
// Select which button has been pressed.
if ($_SERVER["REQUEST_METHOD"] == "POST") { if ($_SERVER["REQUEST_METHOD"] == "POST") {
try { try {
switch ($_POST["form"]) { switch ($_POST["form"]) {
@@ -44,6 +46,15 @@ if ($_SERVER["REQUEST_METHOD"] == "POST") {
} }
upgradeUser($_POST["groupID"], $_POST["userID"], "admin"); upgradeUser($_POST["groupID"], $_POST["userID"], "admin");
break; break;
case "deadmin":
if (!array_key_exists("userID", $_POST)) {
throw new AngryAlert("Geen gebruiker geselecteerd.");
}
upgradeUser($_POST["groupID"], $_POST["userID"], "member");
break;
case "delete":
deleteGroup();
break;
} }
} catch (AlertMessage $w) { } catch (AlertMessage $w) {
$alertClass = $w->getClass(); $alertClass = $w->getClass();

View File

@@ -24,12 +24,14 @@ $(window).on("load", function () {
}); });
}); });
// Toggles all checkboxes based on one.
function checkAll() { function checkAll() {
$('.checkbox-list').each(function () { $('.checkbox-list').each(function () {
$(this).prop('checked', $('#checkall').prop('checked')); $(this).prop('checked', $('#checkall').prop('checked'));
}); });
} }
// Simple function that checks if checkall should stay checked.
function checkCheckAll() { function checkCheckAll() {
var checked = true; var checked = true;
@@ -43,6 +45,7 @@ function checkCheckAll() {
$('#checkall').prop('checked', checked); $('#checkall').prop('checked', checked);
} }
// Toggle of filter options.
function changeFilter() { function changeFilter() {
if ($('#pagetype').find(":selected").val() == "group") { if ($('#pagetype').find(":selected").val() == "group") {
document.getElementById('admin-filter').style.display = 'none'; document.getElementById('admin-filter').style.display = 'none';
@@ -59,11 +62,13 @@ function changeFilter() {
} }
} }
// Sets the search page to one, relevant when changing filter or search.
function searchFromOne() { function searchFromOne() {
$('#currentpage').prop('value', 1); $('#currentpage').prop('value', 1);
adminSearch(); adminSearch();
} }
// AJAX live search.
function adminSearch() { function adminSearch() {
$.post( $.post(
"API/adminSearchUsers.php", "API/adminSearchUsers.php",
@@ -74,6 +79,7 @@ function adminSearch() {
}) })
} }
// AJAX live update.
function adminUpdate(form) { function adminUpdate(form) {
$.post( $.post(
"API/adminChangeUser.php", "API/adminChangeUser.php",
@@ -83,6 +89,7 @@ function adminUpdate(form) {
}) })
} }
// AJAX pagenumber functionality.
function updatePageN() { function updatePageN() {
$.post( $.post(
"API/adminPageNumber.php", "API/adminPageNumber.php",
@@ -92,11 +99,13 @@ function updatePageN() {
}) })
} }
// Intended for the edit button to show a form.
function toggleBancomment(button) { function toggleBancomment(button) {
$(button).siblings("div").toggle(); $(button).siblings("div").toggle();
$(button).toggle(); $(button).toggle();
} }
// AJAX value editing.
function editComment(form) { function editComment(form) {
$.post( $.post(
"API/adminChangeUser.php", "API/adminChangeUser.php",

View File

@@ -7,7 +7,7 @@ var facebookModal = document.getElementById("fbModal");
// Get the button that opens the modal // Get the button that opens the modal
var registerBtn = document.getElementById("registerBtn"); var registerBtn = document.getElementById("registerBtn");
var btn = document.getElementById("myBtn"); var btn = document.getElementById("myBtn");
var fbBtn = document.getElementById("fbBtn");
// Get the <span> element that closes the modal // Get the <span> element that closes the modal
var span = document.getElementsByClassName("close")[0]; var span = document.getElementsByClassName("close")[0];
@@ -24,9 +24,6 @@ btn.onclick = function () {
registerBtn.onclick = function () { registerBtn.onclick = function () {
registerModal.style.display = "block"; registerModal.style.display = "block";
} }
fbBtn.onclick = function () {
facebookModal.style.display = "block";
}
/** /**
* WHen the user clicks on (X), close the modal * WHen the user clicks on (X), close the modal

View File

@@ -91,6 +91,21 @@ $(window).on("load", function() {
loadMorePosts(userID, groupID, postAmount, postLimit); loadMorePosts(userID, groupID, postAmount, postLimit);
} }
}; };
$(document).keyup(function(e) {
if (e.keyCode == 27) {
closeModal();
}
});
$('.modal').click(function() {
closeModal();
});
$('.modal-content').click(function(event){
event.stopPropagation();
});
}); });
function closeModal() { function closeModal() {

View File

@@ -1,4 +1,9 @@
/**
* Posts a comment or "Niet slecht." on a post.
* Button specifies between comment and "Niet slecht.".
* Alerts or redirects if frozen or not logged in.
*/
function postComment(buttonValue) { function postComment(buttonValue) {
formData = $("#newcommentform").serializeArray(); formData = $("#newcommentform").serializeArray();
formData.push({name: "button", value: buttonValue}); formData.push({name: "button", value: buttonValue});
@@ -24,6 +29,10 @@ function postComment(buttonValue) {
}); });
} }
/**
* Deletes a post given by postID, closes modal and reloads posts.
* @param postID
*/
function deletePost(postID) { function deletePost(postID) {
var formData = [{name: "postID", value: postID}]; var formData = [{name: "postID", value: postID}];
$.post( $.post(

View File

@@ -1,3 +1,4 @@
// Checks if user is logged in and offers to logout.
function checkLoggedIn() { function checkLoggedIn() {
if (confirm("U bent al ingelogd!\nWilt u uitloggen?\nKlik ok om uit te loggen.") == true) { if (confirm("U bent al ingelogd!\nWilt u uitloggen?\nKlik ok om uit te loggen.") == true) {
window.location.href = "logout.php"; window.location.href = "logout.php";
@@ -6,18 +7,22 @@ function checkLoggedIn() {
} }
} }
// Alert for validation mail.
function emailAlert(){ function emailAlert(){
alert("Bevestigingsemail is gestuurd!\n"); alert("Bevestigingsemail is gestuurd!\n");
} }
// Alert for banned account.
function bannedAlert(){ function bannedAlert(){
alert("Uw account is geband!"); alert("Uw account is geband!");
} }
// Alert for frozen account.
function frozenAlert(){ function frozenAlert(){
alert("Uw account is bevroren!\n"); alert("Uw account is bevroren!\n");
} }
// Alert for unconfirmed email.
function emailNotConfirmed(){ function emailNotConfirmed(){
alert("Uw account is nog niet bevestigd!\nEr is een nieuwe email gestuurd om uw account te bevestigen"); alert("Uw account is nog niet bevestigd!\nEr is een nieuwe email gestuurd om uw account te bevestigen");
} }

View File

@@ -14,6 +14,8 @@
<?php <?php
$alertClass; $alertClass;
$alertMessage; $alertMessage;
// Select which button has been pressed.
if ($_SERVER["REQUEST_METHOD"] == "POST") { if ($_SERVER["REQUEST_METHOD"] == "POST") {
try { try {
switch ($_POST["form"]) { switch ($_POST["form"]) {
@@ -29,7 +31,6 @@ if ($_SERVER["REQUEST_METHOD"] == "POST") {
case "picture": case "picture":
updateAvatar(); updateAvatar();
break; break;
} }
} catch (AlertMessage $w) { } catch (AlertMessage $w) {
$alertClass = $w->getClass(); $alertClass = $w->getClass();

View File

@@ -34,9 +34,10 @@
width: 100%; width: 100%;
} }
.usertable .table-username {width: 150px} .table-checkbox {width: 20px}
.usertable .table-status {width: 100px} .table-username {width: 150px}
.usertable .table-action {width: 200px} .table-status {width: 100px}
.table-action {width: 200px}
.usertable th, td { .usertable th, td {
border-bottom: 1px solid #ddd; border-bottom: 1px solid #ddd;
@@ -51,6 +52,10 @@
background-color: #f5f5f5; background-color: #f5f5f5;
} }
.bancomment {
width: 80%;
}
.bancommentedit { .bancommentedit {
display: none; display: none;
} }

View File

@@ -41,7 +41,11 @@ function checkInputChoice($variable, $option){
} }
} }
/* Checks for only letters and spaces. */ /**
* Checks for only letters and spaces.
* @param $variable
* @throws lettersAndSpacesException
*/
function checkName($variable){ function checkName($variable){
if (empty($variable)) { if (empty($variable)) {
throw new lettersAndSpacesException("Verplicht!"); throw new lettersAndSpacesException("Verplicht!");
@@ -52,7 +56,11 @@ function checkName($variable){
} }
} }
/* Checks for bday */ /**
* Checks for bday
* @param $variable
* @throws bdayException
*/
function validateBday($variable){ function validateBday($variable){
if (empty($variable)) { if (empty($variable)) {
throw new bdayException("Verplicht!"); throw new bdayException("Verplicht!");
@@ -216,9 +224,13 @@ function test_input($data) {
$data = trim($data); $data = trim($data);
$data = stripslashes($data); $data = stripslashes($data);
$data = htmlspecialchars($data); $data = htmlspecialchars($data);
$data = trim($data);
return $data; return $data;
} }
/**
* Class lettersAndSpacesException
*/
class lettersAndSpacesException extends Exception class lettersAndSpacesException extends Exception
{ {
public function __construct($message = "", $code = 0, Exception $previous = null) public function __construct($message = "", $code = 0, Exception $previous = null)
@@ -227,7 +239,9 @@ class lettersAndSpacesException extends Exception
} }
} }
/**
* Class bdayException
*/
class bdayException extends Exception class bdayException extends Exception
{ {
public function __construct($message = "", $code = 0, Exception $previous = null) public function __construct($message = "", $code = 0, Exception $previous = null)
@@ -236,6 +250,9 @@ class bdayException extends Exception
} }
} }
/**
* Class usernameException
*/
class usernameException extends Exception class usernameException extends Exception
{ {
public function __construct($message = "", $code = 0, Exception $previous = null) public function __construct($message = "", $code = 0, Exception $previous = null)
@@ -244,6 +261,9 @@ class usernameException extends Exception
} }
} }
/**
* Class passwordException
*/
class passwordException extends Exception class passwordException extends Exception
{ {
public function __construct($message = "", $code = 0, Exception $previous = null) public function __construct($message = "", $code = 0, Exception $previous = null)
@@ -252,6 +272,9 @@ class passwordException extends Exception
} }
} }
/**
* Class confirmPasswordException
*/
class confirmPasswordException extends Exception class confirmPasswordException extends Exception
{ {
public function __construct($message = "", $code = 0, Exception $previous = null) public function __construct($message = "", $code = 0, Exception $previous = null)
@@ -260,6 +283,9 @@ class confirmPasswordException extends Exception
} }
} }
/**
* Class fbConfirmPasswordException
*/
class fbConfirmPasswordException extends Exception class fbConfirmPasswordException extends Exception
{ {
public function __construct($message = "", $code = 0, Exception $previous = null) public function __construct($message = "", $code = 0, Exception $previous = null)
@@ -268,6 +294,9 @@ class fbConfirmPasswordException extends Exception
} }
} }
/**
* Class emailException
*/
class emailException extends Exception class emailException extends Exception
{ {
public function __construct($message = "", $code = 0, Exception $previous = null) public function __construct($message = "", $code = 0, Exception $previous = null)
@@ -276,6 +305,9 @@ class emailException extends Exception
} }
} }
/**
* Class confirmEmailException
*/
class confirmEmailException extends Exception class confirmEmailException extends Exception
{ {
public function __construct($message = "", $code = 0, Exception $previous = null) public function __construct($message = "", $code = 0, Exception $previous = null)
@@ -284,6 +316,9 @@ class confirmEmailException extends Exception
} }
} }
/**
* Class captchaException
*/
class captchaException extends Exception class captchaException extends Exception
{ {
public function __construct($message = "", $code = 0, Exception $previous = null) public function __construct($message = "", $code = 0, Exception $previous = null)
@@ -292,6 +327,9 @@ class captchaException extends Exception
} }
} }
/**
* Class registerException
*/
class registerException extends Exception class registerException extends Exception
{ {
public function __construct($message = "", $code = 0, Exception $previous = null) public function __construct($message = "", $code = 0, Exception $previous = null)

View File

@@ -10,6 +10,11 @@ else {
or die('Error connecting to mysql server'); or die('Error connecting to mysql server');
} }
/**
* Helperfunction to create a database query.
* @param string $query
* @return PDOStatement
*/
function prepareQuery(string $query) : PDOStatement { function prepareQuery(string $query) : PDOStatement {
return $GLOBALS["db"]->prepare($query); return $GLOBALS["db"]->prepare($query);
} }

View File

@@ -2,8 +2,13 @@
require_once "../queries/checkInput.php"; require_once "../queries/checkInput.php";
require_once "../queries/picture.php"; require_once "../queries/picture.php";
require_once "../queries/alerts.php"; require_once "../queries/alerts.php";
/**
* Creates a group.
*/
function createGroup() function createGroup()
{ {
// Creates the group.
$createGroup = prepareQuery(" $createGroup = prepareQuery("
INSERT INTO INSERT INTO
`group_page` (`name`, `description`) `group_page` (`name`, `description`)
@@ -13,6 +18,7 @@ function createGroup()
$createGroup->bindValue(':description', test_input($_POST["bio"])); $createGroup->bindValue(':description', test_input($_POST["bio"]));
$createGroup->execute(); $createGroup->execute();
// Gets the groupID just created.
$getGroupID = prepareQuery(" $getGroupID = prepareQuery("
SELECT SELECT
`groupID` `groupID`
@@ -24,6 +30,7 @@ function createGroup()
$getGroupID->execute(); $getGroupID->execute();
$groupID = $getGroupID->fetch()["groupID"]; $groupID = $getGroupID->fetch()["groupID"];
// Adds the user as an admin.
$makeUserAdmin = prepareQuery(" $makeUserAdmin = prepareQuery("
INSERT INTO INSERT INTO
`group_member` (userID, groupID, role) `group_member` (userID, groupID, role)

View File

@@ -1,5 +1,8 @@
<?php <?php
/**
* Sends a confirm email if you know the username.
* @param string $username
*/
function sendConfirmEmailUsername(string $username) { function sendConfirmEmailUsername(string $username) {
$stmt = prepareQuery(" $stmt = prepareQuery("
SELECT SELECT
@@ -15,6 +18,10 @@ function sendConfirmEmailUsername(string $username) {
sendConfirmEmail($userID); sendConfirmEmail($userID);
} }
/**
* Sends a confirm email if you know the userID.
* @param int $userID
*/
function sendConfirmEmail(int $userID) { function sendConfirmEmail(int $userID) {
$stmt = prepareQuery(" $stmt = prepareQuery("
SELECT SELECT

View File

@@ -2,10 +2,21 @@
require_once ("connect.php"); require_once ("connect.php");
/**
* Selects all friends of a user.
* @param $userID
* @return string
*/
function selectFriends($userID) { function selectFriends($userID) {
return selectLimitedFriends($userID, 9999); return selectLimitedFriends($userID, 9999);
} }
/**
* Returns a limited amount of friends of a user.
* @param $userID
* @param $limit
* @return string
*/
function selectLimitedFriends($userID, $limit) { function selectLimitedFriends($userID, $limit) {
$stmt = prepareQuery(" $stmt = prepareQuery("
SELECT SELECT
@@ -46,7 +57,11 @@ function selectLimitedFriends($userID, $limit) {
return json_encode($stmt->fetchAll()); return json_encode($stmt->fetchAll());
} }
/**
* Selects all friends of a user.
* @param $userID
* @return PDOStatement
*/
function selectAllFriends($userID) { function selectAllFriends($userID) {
$stmt = prepareQuery(" $stmt = prepareQuery("
SELECT SELECT
@@ -83,6 +98,10 @@ function selectAllFriends($userID) {
return $stmt; return $stmt;
} }
/**
* Returns all friend requests of the current user.
* @return string
*/
function selectAllFriendRequests() { function selectAllFriendRequests() {
$stmt = prepareQuery(" $stmt = prepareQuery("
SELECT SELECT
@@ -119,6 +138,11 @@ function selectAllFriendRequests() {
return json_encode($stmt->fetchAll()); return json_encode($stmt->fetchAll());
} }
/**
* Gets the friendship status from current user and userID.
* @param $userID
* @return int
*/
function getFriendshipStatus($userID) { function getFriendshipStatus($userID) {
# -2: Query failed. # -2: Query failed.
# -1: user1 and 2 are the same user # -1: user1 and 2 are the same user
@@ -162,6 +186,11 @@ function getFriendshipStatus($userID) {
return intval($stmt->fetch()["friend_state"]); return intval($stmt->fetch()["friend_state"]);
} }
/**
* Request friendship from current user to target user.
* @param $userID
* @return bool
*/
function requestFriendship($userID) { function requestFriendship($userID) {
$stmt = prepareQuery(" $stmt = prepareQuery("
INSERT INTO `friendship` (user1ID, user2ID) INSERT INTO `friendship` (user1ID, user2ID)
@@ -173,6 +202,11 @@ function requestFriendship($userID) {
return $stmt->execute(); return $stmt->execute();
} }
/**
* Removes friendship between current and target user.
* @param $userID
* @return bool
*/
function removeFriendship($userID) { function removeFriendship($userID) {
$stmt = prepareQuery(" $stmt = prepareQuery("
DELETE FROM `friendship` DELETE FROM `friendship`
@@ -189,6 +223,11 @@ function removeFriendship($userID) {
return $stmt->execute(); return $stmt->execute();
} }
/**
* Sets the friendship between current and target user to accepted.
* @param $userID
* @return bool
*/
function acceptFriendship($userID) { function acceptFriendship($userID) {
$stmt = prepareQuery(" $stmt = prepareQuery("
UPDATE `friendship` UPDATE `friendship`
@@ -204,6 +243,11 @@ function acceptFriendship($userID) {
return $stmt->execute(); return $stmt->execute();
} }
/**
* Sets the last time the user visited the chat with specified friend.
* @param $friend
* @return PDOStatement
*/
function setLastVisited($friend) { function setLastVisited($friend) {
$stmt = prepareQuery(" $stmt = prepareQuery("
UPDATE UPDATE
@@ -234,6 +278,13 @@ function setLastVisited($friend) {
return $stmt; return $stmt;
} }
/**
* Searches m friends from n filtered by search.
* @param $n
* @param $m
* @param $search
* @return string
*/
function searchSomeFriends($n, $m, $search) { function searchSomeFriends($n, $m, $search) {
$stmt = prepareQuery(" $stmt = prepareQuery("
SELECT SELECT
@@ -281,6 +332,11 @@ function searchSomeFriends($n, $m, $search) {
return json_encode($stmt->fetchAll()); return json_encode($stmt->fetchAll());
} }
/**
* Counts all friends of current user filtered by search.
* @param $search
* @return string
*/
function countSomeFriends($search) { function countSomeFriends($search) {
$stmt = prepareQuery(" $stmt = prepareQuery("
SELECT SELECT

View File

@@ -1,4 +1,9 @@
<?php <?php
/**
* Gets the current settings for a group.
* @param int $groupID
* @return mixed
*/
function getGroupSettings(int $groupID) { function getGroupSettings(int $groupID) {
$stmt = prepareQuery(" $stmt = prepareQuery("
SELECT SELECT
@@ -15,6 +20,12 @@ function getGroupSettings(int $groupID) {
return $stmt->fetch(); return $stmt->fetch();
} }
/**
* Updates the settings for a group.
* @param int $groupID
* @throws AngryAlert
* @throws HappyAlert
*/
function updateGroupSettings(int $groupID) function updateGroupSettings(int $groupID)
{ {
if (!checkGroupAdmin($groupID, $_SESSION["userID"])) { if (!checkGroupAdmin($groupID, $_SESSION["userID"])) {
@@ -40,6 +51,12 @@ function updateGroupSettings(int $groupID)
} }
} }
/**
* Checks if an user is an admin for a page.
* @param int $groupID
* @param int $userID
* @return bool
*/
function checkGroupAdmin(int $groupID, int $userID) : bool { function checkGroupAdmin(int $groupID, int $userID) : bool {
$stmt = prepareQuery(" $stmt = prepareQuery("
SELECT SELECT
@@ -60,7 +77,40 @@ function checkGroupAdmin(int $groupID, int $userID) : bool {
return ($role == "admin"); return ($role == "admin");
} }
function getAllGroupMembers(int $groupID) { /**
* Returns all normal members for a group.
* @param int $groupID
* @return array|bool
*/
function getAllGroupUsers(int $groupID) {
return getAllGroupMembers($groupID, 'member');
}
/**
* Returns all admin for a group.
* @param int $groupID
* @return array|bool
*/
function getAllGroupAdmins(int $groupID) {
return getAllGroupMembers($groupID, 'admin');
}
/**
* Returns all Moderators for a group.
* @param int $groupID
* @return array|bool
*/
function getAllGroupMods(int $groupID) {
return getAllGroupMembers($groupID, 'mod');
}
/**
* Returns all members for a group specified by a string.
* @param int $groupID
* @param string $role
* @return array|bool
*/
function getAllGroupMembers(int $groupID, string $role) {
$stmt = prepareQuery(" $stmt = prepareQuery("
SELECT SELECT
`username`, `username`,
@@ -74,16 +124,25 @@ function getAllGroupMembers(int $groupID) {
ON ON
`group_member`.`userID` = `user`.`userID` `group_member`.`userID` = `user`.`userID`
WHERE WHERE
`groupID` = :groupID AND `group_member`.`role` = 'member' `groupID` = :groupID AND `group_member`.`role` = :role
"); ");
$stmt->bindParam(':groupID', $groupID); $stmt->bindParam(':groupID', $groupID);
$stmt->bindParam(":role", $role);
if (!$stmt->execute()) { if (!$stmt->execute()) {
return False; return False;
} }
return $stmt->fetchAll(); return $stmt->fetchAll();
} }
/**
* Upgrades or downgrades a groupmember to a different role.
* @param int $groupID
* @param int $userID
* @param string $role
* @throws AngryAlert
* @throws HappyAlert
*/
function upgradeUser(int $groupID, int $userID, string $role) { function upgradeUser(int $groupID, int $userID, string $role) {
if (!checkGroupAdmin($groupID, $_SESSION["userID"])) { if (!checkGroupAdmin($groupID, $_SESSION["userID"])) {
throw new AngryAlert("Geen toestemming om te wijzigen"); throw new AngryAlert("Geen toestemming om te wijzigen");
@@ -106,4 +165,28 @@ function upgradeUser(int $groupID, int $userID, string $role) {
} else { } else {
throw new AngryAlert("Er is iets mis gegaan"); throw new AngryAlert("Er is iets mis gegaan");
} }
}
/**
* Removes a group form the database.
* @throws AngryAlert
* @throws HappyAlert
*/
function deleteGroup() {
if (!checkGroupAdmin($_POST["groupID"], $_SESSION["userID"])) {
throw new AngryAlert("Geen toestemming om de groep te verwijderen!");
}
$stmt = prepareQuery("
DELETE FROM
`group_page`
WHERE
`groupID` = :groupID
");
$stmt->bindValue(":groupID", $_POST["groupID"]);
$stmt->execute();
if ($stmt->rowCount()) {
throw new HappyAlert("Group verwijderd!");
} else {
throw new AngryAlert("Er is iets mis gegaan");
}
} }

View File

@@ -1,9 +1,20 @@
<?php <?php
/**
* Returns all groups a user is member of.
* @param $userID
* @return string
*/
function selectAllGroupsFromUser($userID) { function selectAllGroupsFromUser($userID) {
return selectLimitedGroupsFromUser($userID, 9999); return selectLimitedGroupsFromUser($userID, 9999);
} }
/**
* Selects number of groups that a user is member of.
* @param $userID
* @param $limit
* @return string
*/
function selectLimitedGroupsFromUser($userID, $limit) { function selectLimitedGroupsFromUser($userID, $limit) {
$stmt = prepareQuery(" $stmt = prepareQuery("
SELECT SELECT
@@ -27,6 +38,13 @@ function selectLimitedGroupsFromUser($userID, $limit) {
return json_encode($stmt->fetchAll()); return json_encode($stmt->fetchAll());
} }
/**
* Returns m groups offset by n filtered by search that the current user is part of.
* @param $n
* @param $m
* @param $search
* @return string
*/
function searchSomeOwnGroups($n, $m, $search) { function searchSomeOwnGroups($n, $m, $search) {
$stmt = prepareQuery(" $stmt = prepareQuery("
SELECT SELECT
@@ -55,6 +73,11 @@ function searchSomeOwnGroups($n, $m, $search) {
return json_encode($stmt->fetchAll()); return json_encode($stmt->fetchAll());
} }
/**
* Counts all groups filtered by search that the current user is member of.
* @param $search
* @return string
*/
function countSomeOwnGroups($search) { function countSomeOwnGroups($search) {
$stmt = prepareQuery(" $stmt = prepareQuery("
SELECT SELECT
@@ -78,6 +101,13 @@ function countSomeOwnGroups($search) {
return $stmt->fetchColumn(); return $stmt->fetchColumn();
} }
/**
* Adds a user by userID to a group by groupID with a specified role.
* @param $groupID
* @param $userID
* @param $role
* @return bool
*/
function addMember($groupID, $userID, $role) { function addMember($groupID, $userID, $role) {
$stmt = prepareQuery(" $stmt = prepareQuery("
INSERT INTO INSERT INTO
@@ -92,6 +122,13 @@ function addMember($groupID, $userID, $role) {
return $stmt->execute(); return $stmt->execute();
} }
/**
* Changes te role of a user within a group to the specified one.
* @param $groupID
* @param $userID
* @param $role
* @return bool
*/
function changeMember($groupID, $userID, $role) { function changeMember($groupID, $userID, $role) {
$stmt = prepareQuery(" $stmt = prepareQuery("
UPDATE UPDATE
@@ -109,6 +146,12 @@ function changeMember($groupID, $userID, $role) {
return $stmt->execute(); return $stmt->execute();
} }
/**
* Removes a user from a group.
* @param $groupID
* @param $userID
* @return bool
*/
function deleteMember($groupID, $userID) { function deleteMember($groupID, $userID) {
$stmt = prepareQuery(" $stmt = prepareQuery("
DELETE FROM DELETE FROM

View File

@@ -2,6 +2,10 @@
require_once("connect.php"); require_once("connect.php");
/**
* Selects some info from a group by name.
* @return bool|mixed
*/
function selectGroupByName($name) { function selectGroupByName($name) {
$stmt = prepareQuery(" $stmt = prepareQuery("
SELECT SELECT
@@ -41,6 +45,11 @@ function selectGroupByName($name) {
return $row; return $row;
} }
/**
* Selects the current user's role within a group by the group's ID.
* @param int $groupID
* @return bool|string
*/
function selectGroupRole(int $groupID) { function selectGroupRole(int $groupID) {
$stmt = prepareQuery(" $stmt = prepareQuery("
SELECT SELECT
@@ -63,6 +72,11 @@ function selectGroupRole(int $groupID) {
return $stmt->fetch()["role"]; return $stmt->fetch()["role"];
} }
/**
* Returns the status of a group by it's ID.
* @param int $groupID
* @return bool
*/
function selectGroupStatus(int $groupID) { function selectGroupStatus(int $groupID) {
$stmt = prepareQuery(" $stmt = prepareQuery("
SELECT SELECT
@@ -80,6 +94,11 @@ function selectGroupStatus(int $groupID) {
return $stmt->fetch()["status"]; return $stmt->fetch()["status"];
} }
/**
* Returns some info of all group members.
* @param int $groupID
* @return bool|PDOStatement
*/
function selectGroupMembers(int $groupID) { function selectGroupMembers(int $groupID) {
$stmt = prepareQuery(" $stmt = prepareQuery("
SELECT SELECT
@@ -105,9 +124,14 @@ function selectGroupMembers(int $groupID) {
if (!$stmt->execute()) { if (!$stmt->execute()) {
return False; return False;
} }
return $stmt->fetchAll(); return $stmt;
} }
/**
* Returns group info by it's ID.
* @param $groupID
* @return PDOStatement
*/
function selectGroupById($groupID) { function selectGroupById($groupID) {
$q = prepareQuery(" $q = prepareQuery("
SELECT SELECT
@@ -127,6 +151,11 @@ function selectGroupById($groupID) {
return $q; return $q;
} }
/**
* Returns some info of 20 groups offset by n.
* @param $n
* @return PDOStatement
*/
function select20GroupsFromN($n) { function select20GroupsFromN($n) {
$q = prepareQuery(" $q = prepareQuery("
SELECT SELECT
@@ -149,6 +178,12 @@ function select20GroupsFromN($n) {
return $q; return $q;
} }
/**
* Returns info of 20 groups offset by n, filtered by status.
* @param $n
* @param $status
* @return PDOStatement
*/
function select20GroupsByStatusFromN($n, $status) { function select20GroupsByStatusFromN($n, $status) {
$q = prepareQuery(" $q = prepareQuery("
SELECT SELECT
@@ -174,6 +209,13 @@ function select20GroupsByStatusFromN($n, $status) {
return $q; return $q;
} }
/**
* Returns info of 20 groups offset by n, filtered by status, filtered by search.
* @param $n
* @param $keyword
* @param $status
* @return PDOStatement
*/
function search20GroupsFromNByStatus($n, $keyword, $status) { function search20GroupsFromNByStatus($n, $keyword, $status) {
$q = prepareQuery(" $q = prepareQuery("
SELECT SELECT
@@ -201,6 +243,14 @@ function search20GroupsFromNByStatus($n, $keyword, $status) {
return $q; return $q;
} }
/**
* Returns info of n groups offset by m, filtered by status and search.
* @param $n
* @param $m
* @param $search
* @param $status
* @return PDOStatement
*/
function searchSomeGroupsByStatus($n, $m, $search, $status) { function searchSomeGroupsByStatus($n, $m, $search, $status) {
// parentheses not needed in where clause, for clarity as // parentheses not needed in where clause, for clarity as
// role search should override status filter. // role search should override status filter.
@@ -233,6 +283,12 @@ function searchSomeGroupsByStatus($n, $m, $search, $status) {
return $q; return $q;
} }
/**
* Count all groups filtered by status and search.
* @param $search
* @param $status
* @return PDOStatement
*/
function countSomeGroupsByStatus($search, $status) { function countSomeGroupsByStatus($search, $status) {
$q = prepareQuery(" $q = prepareQuery("
SELECT SELECT
@@ -256,6 +312,12 @@ function countSomeGroupsByStatus($search, $status) {
return $q; return $q;
} }
/**
* Changes the status of a group with the given ID.
* @param $id
* @param $status
* @return PDOStatement
*/
function changeGroupStatusByID($id, $status) { function changeGroupStatusByID($id, $status) {
$q = prepareQuery(" $q = prepareQuery("
UPDATE UPDATE
@@ -272,6 +334,12 @@ function changeGroupStatusByID($id, $status) {
return $q; return $q;
} }
/**
* Changes the status of multiple groups to 1 status by an array of IDs.
* @param $ids
* @param $status
* @return PDOStatement
*/
function changeMultipleGroupStatusByID($ids, $status) { function changeMultipleGroupStatusByID($ids, $status) {
$q = prepareQuery(" $q = prepareQuery("
UPDATE UPDATE
@@ -289,6 +357,13 @@ function changeMultipleGroupStatusByID($ids, $status) {
return $q; return $q;
} }
/**
* Returns m groups offset by n, filtered by search.
* @param $n
* @param $m
* @param $search
* @return string
*/
function searchSomeGroups($n, $m, $search) { function searchSomeGroups($n, $m, $search) {
$stmt = prepareQuery(" $stmt = prepareQuery("
SELECT SELECT
@@ -312,6 +387,11 @@ function searchSomeGroups($n, $m, $search) {
return json_encode($stmt->fetchAll()); return json_encode($stmt->fetchAll());
} }
/**
* Counts all group filtered by search.
* @param $search
* @return PDOStatement
*/
function countSomeGroups($search) { function countSomeGroups($search) {
$stmt = prepareQuery(" $stmt = prepareQuery("
SELECT SELECT

View File

@@ -1,6 +1,9 @@
<?php <?php
//Find matching password with the inputted username/emailadress. /**
* Find matching password with the inputted username/emailadress.
* @return mixed
*/
function getUser() { function getUser() {
$stmt = prepareQuery(" $stmt = prepareQuery("
SELECT SELECT
@@ -35,7 +38,8 @@ function getUserID() {
} }
function validateLogin($username, $password, $url){ function validateLogin($username, $password, $url){
// Empty username or password field echo $url;
// Empty username or password field
if (empty($username) || empty($password)) { if (empty($username) || empty($password)) {
throw new loginException("Inloggegevens zijn niet ingevuld"); throw new loginException("Inloggegevens zijn niet ingevuld");
} }

View File

@@ -281,6 +281,12 @@ function checkPermissionOnPost(int $postID, int $userID) : bool {
} }
} }
/**
* Returns role of an user.
* @param int $userID
* @param int $groupID
* @return mixed role of an user.
*/
function getRoleInGroup(int $userID, int $groupID) { function getRoleInGroup(int $userID, int $groupID) {
$stmt = prepareQuery(" $stmt = prepareQuery("
SELECT SELECT

View File

@@ -1,9 +1,5 @@
<?php <?php
/**
* Returns 1 if an username exists with the filled in username.
* @return int
*/
function getExistingUsername() { function getExistingUsername() {
$stmt = prepareQuery(" $stmt = prepareQuery("
SELECT SELECT
@@ -20,10 +16,6 @@ function getExistingUsername() {
} }
/**
* Returns 1 if an username exists with facebooklogin
* @return int
*/
function getExistingFBUsername() { function getExistingFBUsername() {
$stmt = prepareQuery(" $stmt = prepareQuery("
SELECT SELECT
@@ -40,10 +32,6 @@ function getExistingFBUsername() {
} }
/**
* Returns 1 if an email exists with the filled in email.
* @return int
*/
function getExistingEmail() { function getExistingEmail() {
$stmt = prepareQuery(" $stmt = prepareQuery("
SELECT SELECT
@@ -60,10 +48,6 @@ function getExistingEmail() {
} }
/**
* Returns 1 if an email exists with facebook register
* @return int
*/
function getExistingFBEmail() { function getExistingFBEmail() {
$stmt = prepareQuery(" $stmt = prepareQuery("
SELECT SELECT
@@ -81,10 +65,6 @@ function getExistingFBEmail() {
} }
/**
* Returns 1 if an email exists with the forgot email input
* @return int
*/
function getResetEmail() { function getResetEmail() {
$stmt = prepareQuery(" $stmt = prepareQuery("
SELECT SELECT
@@ -101,9 +81,6 @@ function getResetEmail() {
} }
/**
* Registers a new account in the database
*/
function registerAccount() { function registerAccount() {
$stmt = prepareQuery(" $stmt = prepareQuery("
INSERT INTO INSERT INTO
@@ -142,9 +119,6 @@ function registerAccount() {
$stmt->rowCount(); $stmt->rowCount();
} }
/**
* Registers a new account with facebook register
*/
function fbRegisterAccount() { function fbRegisterAccount() {
$stmt = prepareQuery(" $stmt = prepareQuery("
INSERT INTO INSERT INTO
@@ -184,11 +158,6 @@ function fbRegisterAccount() {
return $stmt->execute(); return $stmt->execute();
} }
/**
* Checks which dates need to be selected when there is an invalid registration.
* @param $date
* @param $value
*/
function submitselect($date, $value){ function submitselect($date, $value){
if ($date == $value){ if ($date == $value){
echo "selected"; echo "selected";

View File

@@ -1,10 +1,6 @@
<?php <?php
include_once "../queries/connect.php"; include_once "../queries/connect.php";
/**
* Sends a link to an email to change the password of an account
* @param string $email
*/
function sendPasswordRecovery(string $email) { function sendPasswordRecovery(string $email) {
if (filter_var($email, FILTER_VALIDATE_EMAIL)) { if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
$stmt = prepareQuery(" $stmt = prepareQuery("
@@ -28,16 +24,11 @@ function sendPasswordRecovery(string $email) {
$hashedHash = password_hash($hash, PASSWORD_DEFAULT); $hashedHash = password_hash($hash, PASSWORD_DEFAULT);
setHashToDatabase($userID, $hash); setHashToDatabase($userID, $hash);
doSendPasswordRecovery($userID, $email, $username, $hashedHash); doSendPasswordRecovery($userID, $email, $username, $hashedHash);
} else {
// TODO: Be angry!
} }
} }
/**
* Sets the message in the email to reset a password of an account.
* @param int $userID
* @param string $email
* @param string $username
* @param string $hash
*/
function doSendPasswordRecovery(int $userID, string $email, string $username, string $hash) { function doSendPasswordRecovery(int $userID, string $email, string $username, string $hash) {
$resetLink = "https://myhyvesbookplus.nl/resetpassword.php?u=$userID&h=$hash"; $resetLink = "https://myhyvesbookplus.nl/resetpassword.php?u=$userID&h=$hash";
@@ -47,11 +38,6 @@ function doSendPasswordRecovery(int $userID, string $email, string $username, st
mail($email, $subject, $body, $header); mail($email, $subject, $body, $header);
} }
/**
* Sets the previous password invalid.
* @param int $userID
* @param string $hash
*/
function setHashToDatabase(int $userID, string $hash) { function setHashToDatabase(int $userID, string $hash) {
$stmt = prepareQuery(" $stmt = prepareQuery("
UPDATE UPDATE

View File

@@ -16,7 +16,10 @@ function getSettings() {
`location`, `location`,
`birthdate`, `birthdate`,
`bio`, `bio`,
`profilepicture`, IFNULL(
`profilepicture`,
'../img/avatar-standard.png'
) AS profilepicture,
`showBday`, `showBday`,
`showEmail`, `showEmail`,
`showProfile` `showProfile`

View File

@@ -3,7 +3,7 @@
<th class="table-username">Groepsnaam</th> <th class="table-username">Groepsnaam</th>
<th class="table-status">Status</th> <th class="table-status">Status</th>
<th class="table-comment">Beschrijving</th> <th class="table-comment">Beschrijving</th>
<th class="table-action">Actie</th> <th class="table-action">Zichtbaarheid</th>
</tr> </tr>
<?php <?php

View File

@@ -13,6 +13,7 @@ Pagina:
id="currentpage" id="currentpage"
form="admin-searchform" form="admin-searchform"
onchange="adminSearch();"> onchange="adminSearch();">
<!-- Construct the options. -->
<?php <?php
for ($i=1; $i <= ceil($countresults / $entries); $i++) { for ($i=1; $i <= ceil($countresults / $entries); $i++) {
if ($currentpage == $i) { if ($currentpage == $i) {

View File

@@ -1,5 +1,4 @@
<!-- Form value holding. -->
<!-- function test_input taken from http://www.w3schools.com/php/php_form_validation.asp -->
<?php <?php
$search = ""; $search = "";
$status = array("user", "frozen", "banned", "unconfirmed", "admin", "owner"); $status = array("user", "frozen", "banned", "unconfirmed", "admin", "owner");
@@ -127,11 +126,11 @@ if (isset($_GET["groupstatus"])) {
if ($userinfo == 'owner') { if ($userinfo == 'owner') {
echo "<button type=\"submit\" echo "<button type=\"submit\"
name=\"batchactions\" name=\"batchactions\"
id=\"admin\" id=\"batch-admin\"
value=\"admin\">Maak Admin</button> value=\"admin\">Maak Admin</button>
<button type=\"submit\" <button type=\"submit\"
name=\"batchactions\" name=\"batchactions\"
id=\"owner\" id=\"batch-owner\"
value=\"owner\">Maak Eigenaar</button>"; value=\"owner\">Maak Eigenaar</button>";
} }
?> ?>
@@ -140,9 +139,9 @@ if (isset($_GET["groupstatus"])) {
onsubmit="adminUpdate(this); return false;"> onsubmit="adminUpdate(this); return false;">
<input type="hidden" name="groupbatchactions" id="groupbatchinput"> <input type="hidden" name="groupbatchactions" id="groupbatchinput">
<button type="submit" name="batchactions" id="hide" value="hidden">Verborgen</button> <button type="submit" name="batchactions" id="batch-hide" value="hidden">Verborgen</button>
<button type="submit" name="batchactions" id="ban" value="public">Publiek</button> <button type="submit" name="batchactions" id="batch-public" value="public">Publiek</button>
<button type="submit" name="batchactions" id="members" value="membersonly">Alleen Leden</button> <button type="submit" name="batchactions" id="batch-members" value="membersonly">Alleen Leden</button>
</form> </form>
</div> </div>
@@ -152,5 +151,3 @@ if (isset($_GET["groupstatus"])) {
</div> </div>
</div> </div>
</div> </div>
</body>
</html>

View File

@@ -1,9 +1,3 @@
<?php
if(isset($acces_token)) {
echo '<button id="fbBtn" class="button">Facebook registreer</button>';
}
?>
<!-- The Modal --> <!-- The Modal -->
<div id="fbModal" class="modal"> <div id="fbModal" class="modal">
<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" <form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>"

View File

@@ -16,9 +16,18 @@
<h2>Leden (<?= $group['members'] ?>)</h2> <h2>Leden (<?= $group['members'] ?>)</h2>
<p> <p>
<?php <?php
foreach($members as $member) { $membercount = $members->rowCount();
$memberdif = $membercount - 7;
for ($i = 0; $i < min($membercount, 7); $i += 1) {
$member = $members->fetch();
echo "<a href=\"profile.php?username=" . $member["username"] . "\" data-title=\"" . $member["username"] . "\"><img class=\"profile-picture\" src=\"" . $member["profilepicture"] . "\" alt=\"" . $member["username"] . "'s profielfoto\"></a>"; echo "<a href=\"profile.php?username=" . $member["username"] . "\" data-title=\"" . $member["username"] . "\"><img class=\"profile-picture\" src=\"" . $member["profilepicture"] . "\" alt=\"" . $member["username"] . "'s profielfoto\"></a>";
} }
if ($memberdif > 0) {
echo $memberdif === 1 ? "en nog 1 andere." : "...en nog $memberdif anderen.";
}
?> ?>
</p> </p>
</div> </div>

View File

@@ -16,7 +16,7 @@ $groupinfo = getGroupSettings($_GET["groupID"]);
<li> <li>
<label></label> <label></label>
<a href="group.php?groupname=<?=$groupinfo["name"]?>"> <a href="group.php?groupname=<?=$groupinfo["name"]?>">
<button class="fa fa-chevron-left"> Terug naar de groep</button> <button><i class="fa fa-chevron-left"></i> Terug naar de groep</button>
</a> </a>
</li> </li>
</ul> </ul>
@@ -51,8 +51,7 @@ $groupinfo = getGroupSettings($_GET["groupID"]);
<button type="submit" <button type="submit"
name="form" name="form"
value="group" value="group"
class="fa fa-save" ><i class="fa fa-save"></i> Opslaan</button>
> Opslaan</button>
</li> </li>
</ul> </ul>
</form> </form>
@@ -80,8 +79,7 @@ $groupinfo = getGroupSettings($_GET["groupID"]);
<button type="submit" <button type="submit"
name="form" name="form"
value="picture" value="picture"
class="fa fa-picture-o" ><i class="fa fa-picture-o"></i> Verander profielfoto</button>
> Verander profielfoto</button>
</li> </li>
</ul> </ul>
</form> </form>
@@ -94,7 +92,7 @@ $groupinfo = getGroupSettings($_GET["groupID"]);
<select name="userID"> <select name="userID">
<option disabled selected>Geen gebruiker geselecteerd:</option> <option disabled selected>Geen gebruiker geselecteerd:</option>
<?php <?php
$groupMembers = getAllGroupMembers($_GET["groupID"]); $groupMembers = getAllGroupUsers($_GET["groupID"]);
foreach ($groupMembers as $groupMember) {?> foreach ($groupMembers as $groupMember) {?>
<option value="<?=$groupMember["userID"]?>"> <option value="<?=$groupMember["userID"]?>">
<?=$groupMember["fullname"]?> (<?=$groupMember["username"]?>) <?=$groupMember["fullname"]?> (<?=$groupMember["username"]?>)
@@ -114,11 +112,55 @@ $groupinfo = getGroupSettings($_GET["groupID"]);
</il> </il>
</ul> </ul>
</form> </form>
<form class="platform" method="post">
<h5>Verwijder een admin/mod</h5>
<ul>
<il>
<input name="groupID" value="<?=$_GET["groupID"]?>" type="hidden">
<label>Selecteer gebruiker</label>
<select name="userID">
<option disabled selected>Geen gebruiker geselecteerd:</option>
<?php
$groupAdmins = getAllGroupAdmins($_GET["groupID"]);
foreach ($groupAdmins as $groupAdmin) {?>
<option value="<?=$groupAdmin["userID"]?>">
<?=$groupAdmin["fullname"]?> (<?=$groupAdmin["username"]?>) (<?=$groupAdmin["role"]?>)
</option>
<?php } ?>
<?php
$groupMods = getAllGroupMods($_GET["groupID"]);
foreach ($groupMods as $groupMod) {?>
<option value="<?=$groupMod["userID"]?>">
<?=$groupMod["fullname"]?> (<?=$groupMod["username"]?>) (<?=$groupMod["role"]?>)
</option>
<?php } ?>
</select>
<button name="form"
value="deadmin"
>
Verwijder
</button>
</il>
</ul>
</form>
<form class="platform" method="post">
<ul>
<h5>Verwijder groep</h5>
<li>
<label></label>
<input name="groupID" value="<?=$_GET["groupID"]?>" type="hidden">
<button class="red"
name="form"
value="delete"
><i class="fa fa-trash"></i> Verwijder groep</button>
</li>
</ul>
</form>
<div class="platform"> <div class="platform">
<ul> <ul>
<li> <li>
<label></label> <label></label>
<a href="group.php?groupname=<?=$groupinfo["name"]?>"><button class="fa fa-chevron-left"> Terug naar de groep</button></a> <a href="group.php?groupname=<?=$groupinfo["name"]?>"><button><i class="fa fa-chevron-left"></i> Terug naar de groep</button></a>
</li> </li>
</ul> </ul>
</div> </div>

View File

@@ -55,10 +55,17 @@
<h3>Vrienden</h3> <h3>Vrienden</h3>
<p> <p>
<?php <?php
while($friend = $profile_friends->fetch()) { $friendcount = $profile_friends->rowCount();
$frienddif = $friendcount - 7;
for ($i = 0; $i < min($friendcount, 7); $i += 1) {
$friend = $profile_friends->fetch();
echo "<a href='profile.php?username=${friend["username"]}' data-title='${friend["username"]}'><img class='profile-picture' height='42' width='42' src='${friend["profilepicture"]}' alt='${friend["username"]}' /></a>"; echo "<a href='profile.php?username=${friend["username"]}' data-title='${friend["username"]}'><img class='profile-picture' height='42' width='42' src='${friend["profilepicture"]}' alt='${friend["username"]}' /></a>";
} }
if ($frienddif > 0) {
echo $frienddif === 1 ? "en nog 1 andere." : "...en nog $frienddif anderen.";
}
if($profile_friends->rowCount() === 0) { if($profile_friends->rowCount() === 0) {
echo "<p>Deze gebruiker heeft nog geen vrienden gemaakt.</p>"; echo "<p>Deze gebruiker heeft nog geen vrienden gemaakt.</p>";
@@ -71,10 +78,18 @@
<h3>Groepen</h3> <h3>Groepen</h3>
<p> <p>
<?php <?php
while($group = $profile_groups->fetch()) { $groupcount = $profile_groups->rowCount();
$groupdif = $groupcount - 7;
for ($i = 0; $i < min($groupcount, 7); $i += 1) {
$group = $profile_groups->fetch();
echo "<a href='group.php?groupname=${group['name']}' data-title='${group["name"]}'><img class='group-picture' src='${group["picture"]}' alt='${group["name"]}s logo'></a>"; echo "<a href='group.php?groupname=${group['name']}' data-title='${group["name"]}'><img class='group-picture' src='${group["picture"]}' alt='${group["name"]}s logo'></a>";
} }
if ($groupdif > 0) {
echo $groupdif === 1 ? "en nog 1 andere." : "...en nog $groupdif anderen.";
}
if($profile_groups->rowCount() === 0) { if($profile_groups->rowCount() === 0) {
echo "<p>Deze gebruiker is nog geen lid van een groep.</p>"; echo "<p>Deze gebruiker is nog geen lid van een groep.</p>";
} }