Merge branch 'master' into joey-testing

This commit is contained in:
Joey Lai
2017-02-02 10:44:18 +01:00
22 changed files with 436 additions and 155 deletions

View File

@@ -0,0 +1,20 @@
<?php
session_start();
require_once "../../queries/post.php";
require_once "../../queries/user.php";
if (isset($_SESSION["userID"]) and
getRoleByID($_SESSION["userID"]) != 'frozen' and
getRoleByID($_SESSION["userID"]) != 'banned') {
if (empty($_POST["postID"]) or empty($_SESSION["userID"])) {
header('HTTP/1.1 500 Non enough arguments');
}
deletePost($_POST["postID"], $_SESSION["userID"]);
return;
} else {
echo "frozen";
}

View File

@@ -1,8 +1,13 @@
<?php <?php
if(empty($_POST["usr"]) and empty($_POST["grp"])) { if(!isset($_POST["offset"]) or !isset($_POST["limit"])) {
header('HTTP/1.1 500 Non enough arguments'); header('HTTP/1.1 500 Not enough arguments');
} }
if(!isset($_POST["usr"]) and !isset($_POST["grp"])) {
header('HTTP/1.1 500 Not enough arguments');
}
session_start();
require_once ("../../queries/post.php"); require_once ("../../queries/post.php");
require_once ("../../queries/nicetime.php"); require_once ("../../queries/nicetime.php");
@@ -10,17 +15,15 @@ require_once("../../queries/user.php");
if (isset($_SESSION["userID"]) && if (isset($_SESSION["userID"]) &&
getRoleByID($_SESSION["userID"]) != 'banned') { getRoleByID($_SESSION["userID"]) != 'banned') {
if(empty($_POST["usr"])) { if(empty($_POST["usr"])) {
$posts = selectAllPosts(0, $_POST["grp"]); $posts = selectSomePosts(0, $_POST["grp"], $_POST["offset"], $_POST["limit"]);
} else { } else {
$posts = selectAllPosts($_POST["usr"], 0); $posts = selectSomePosts($_POST["usr"], 0, $_POST["offset"], $_POST["limit"]);
} }
if(!$posts) { if(!$posts) {
header('HTTP/1.1 500 Query failed'); echo false;
} } else {
$results = $posts->fetchAll(PDO::FETCH_ASSOC); $results = $posts->fetchAll(PDO::FETCH_ASSOC);
for($i = 0; $i < sizeof($results); $i++) { for($i = 0; $i < sizeof($results); $i++) {
@@ -28,6 +31,7 @@ if (isset($_SESSION["userID"]) &&
} }
echo json_encode($results); echo json_encode($results);
}
} else { } else {
header('HTTP/1.0 403 Forbidden'); header('HTTP/1.0 403 Forbidden');
} }

View File

@@ -1,5 +1,7 @@
<?php <?php
session_start();
require_once("../../queries/connect.php"); require_once("../../queries/connect.php");
require_once("../../queries/post.php"); require_once("../../queries/post.php");
require_once("../../queries/checkInput.php"); require_once("../../queries/checkInput.php");

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

View File

@@ -17,12 +17,10 @@ $(window).on("load", function () {
because serialize doesn't take submit values. */ because serialize doesn't take submit values. */
$('#admin-batchform > button').click(function () { $('#admin-batchform > button').click(function () {
$('#batchinput').prop('value', $(this).prop('value')); $('#batchinput').prop('value', $(this).prop('value'));
console.log($('#batchinput').prop('value'));
}); });
$('#admin-groupbatchform > button').click(function () { $('#admin-groupbatchform > button').click(function () {
$('#groupbatchinput').prop('value', $(this).prop('value')); $('#groupbatchinput').prop('value', $(this).prop('value'));
console.log($('#batchinput').prop('value'));
}); });
}); });
@@ -67,7 +65,6 @@ function searchFromOne() {
} }
function adminSearch() { function adminSearch() {
console.log($("#admin-searchform").serialize());
$.post( $.post(
"API/adminSearchUsers.php", "API/adminSearchUsers.php",
$("#admin-searchform").serialize() $("#admin-searchform").serialize()

View File

@@ -49,7 +49,6 @@ function addMessages(messages) {
// Initialize message variables // Initialize message variables
var thisDate = new Date(messages[i].creationdate.replace(/ /,"T")); var thisDate = new Date(messages[i].creationdate.replace(/ /,"T"));
var thisTime = thisDate.getHours() + ":" + thisDate.getMinutes(); var thisTime = thisDate.getHours() + ":" + thisDate.getMinutes();
console.log(thisDate);
var type; var type;
thisDate.setHours(0,0,0,0); thisDate.setHours(0,0,0,0);

View File

@@ -25,6 +25,7 @@ function placeGroupButtons() {
.done(function() { .done(function() {
$buttonContainer.children().remove(); $buttonContainer.children().remove();
placeGroupButtons(); placeGroupButtons();
updateMenus();
}).fail(function() { }).fail(function() {
}); });
}); });

View File

@@ -11,7 +11,8 @@ $(document).ready(function() {
// Add cookie so the menu stays open on other pages // Add cookie so the menu stays open on other pages
if (window.innerWidth > 1080) { if (window.innerWidth > 1080) {
$("#chat-history").width("calc(100% - 587px)"); $("#chat-history").css("margin-right", "266px");
$("#chat-history").css("width", "calc(100% - 512px - 75px)");
document.cookie = "menu=open; path=/"; document.cookie = "menu=open; path=/";
} else { } else {
document.cookie = "menu=closed; path=/"; document.cookie = "menu=closed; path=/";
@@ -22,7 +23,8 @@ $(document).ready(function() {
$("#notification-center").css("display", "none"); $("#notification-center").css("display", "none");
if (window.innerWidth > 1080) { if (window.innerWidth > 1080) {
$("#chat-history").width("calc(100% - 331px)"); $("#chat-history").css("margin-right", "10px");
$("#chat-history").css("width", "calc(100% - 256px - 85px)");
} else { } else {
// Make the menu invisible and move the content to the right. // Make the menu invisible and move the content to the right.
$("#contact-menu").css("display", "none"); $("#contact-menu").css("display", "none");
@@ -30,11 +32,24 @@ $(document).ready(function() {
// Change menu cookie to close // Change menu cookie to close
document.cookie = "menu=closed; path=/"; document.cookie = "menu=closed; path=/";
} }
}); });
if (getCookie("menu") == "open") { if (getCookie("menu") == "open") {
$("#own-profile-picture").click(); // Make the menu visible and move the content to the left.
$(".modal").width("calc(100% - 512px)");
$(".content").css("margin-right", "256px");
$("#notification-center").css("right", "0px");
$("#notification-center").css("display", "block");
$("#contact-menu").css("display", "block");
// Add cookie so the menu stays open on other pages
if (window.innerWidth > 1080) {
$("#chat-history").css("margin-right", "266px");
$("#chat-history").width("calc(100% - 587px)");
document.cookie = "menu=open; path=/";
} else {
document.cookie = "menu=closed; path=/";
}
} }
}); });

View File

@@ -53,6 +53,7 @@ function editFriendship(userID, value) {
$.post("API/editFriendship.php", { usr: userID, action: value }) $.post("API/editFriendship.php", { usr: userID, action: value })
.done(function() { .done(function() {
placeFriendButtons(); placeFriendButtons();
updateMenus();
}); });
} }
@@ -94,13 +95,3 @@ function showGroups(groups, list) {
return false; return false;
} }
} }
$(document).ready(function() {
$("body").delegate("textarea[maxlength]", "keydown", function() {
if ($(this).val().length / .9 >= $(this).attr("maxlength")) {
$(this).next().text($(this).val().length + "/" + $(this).attr("maxlength"));
} else {
$(this).next().text("");
}
});
});

View File

@@ -45,25 +45,50 @@ function postPost() {
} }
var masonryMode = 0;
var windowWidth;
var columnCount;
var columns;
var postLimit;
var postAmount = 0;
var noposts = false;
$(document).ready(function () {
windowWidth = $(window).width();
columnCount = Math.floor($(".posts").width() / 250);
columns = new Array(columnCount);
postLimit = columnCount * 7;
});
$(window).on("load", function() { $(window).on("load", function() {
$(".modal-close").click(function () { $(".modal-close").click(function (){closeModal()});
// http://stackoverflow.com/questions/9439725/javascript-how-to-detect-if-browser-window-is-scrolled-to-bottom
window.onscroll = function(ev) {
if($(window).scrollTop() + $(window).height() == $(document).height() ) {
loadMorePosts(userID, groupID, postAmount, postLimit);
}
};
});
function closeModal() {
$(".modal").hide(); $(".modal").hide();
scrollbarMargin(0, 'auto'); scrollbarMargin(0, 'auto');
$('#modal-response').hide(); $('#modal-response').hide();
$('.modal-default').show(); $('.modal-default').show();
}); }
});
var masonryMode = 0;
var windowWidth = $(window).width();
$(window).resize(function() { $(window).resize(function() {
clearTimeout(window.resizedFinished); clearTimeout(window.resizedFinished);
window.resizeFinished = setTimeout(function() { window.resizeFinished = setTimeout(function() {
if ($(window).width() != windowWidth) { if ($(window).width() != windowWidth) {
windowWidth = $(window).width(); windowWidth = $(window).width();
if (columnCount != Math.floor($(".posts").width() / 250)) {
columnCount = Math.floor($(".posts").width() / 250);
masonry(masonryMode); masonry(masonryMode);
} }
}
}, 250); }, 250);
}); });
@@ -72,12 +97,10 @@ var $container = $(".posts");
function masonry(mode) { function masonry(mode) {
masonryMode = mode; masonryMode = mode;
$container.children().remove(); $container.children().remove();
columnCount = Math.floor($(".posts").width() / 250);
/* /*
* Initialise columns. * Initialise columns.
*/ */
var columns = new Array(columnCount);
for (i = 0; i < columnCount; i++) { for (i = 0; i < columnCount; i++) {
$column = $("<div class=\"column\">"); $column = $("<div class=\"column\">");
@@ -106,6 +129,14 @@ function masonry(mode) {
/* /*
* Function will find the column with the shortest height. * Function will find the column with the shortest height.
*/ */
/*
* Get the posts from the server.
*/
loadMorePosts(userID, groupID, 0, postLimit);
}
function getShortestColumn(columns) { function getShortestColumn(columns) {
column = columns[0]; column = columns[0];
@@ -117,11 +148,25 @@ function masonry(mode) {
return column; return column;
} }
/* function loadMorePosts(uID, gID, offset, limit) {
* Get the posts from the server. if (noposts) {
*/ return;
$.post("API/getPosts.php", { usr : userID, grp : groupID }) }
console.log(uID, gID, offset, limit);
$.post("API/getPosts.php", { usr : uID,
grp : gID,
offset : offset,
limit : limit})
.done(function(data) { .done(function(data) {
if (!data) {
$('.noposts').show();
noposts = true;
return;
}
posts = JSON.parse(data); posts = JSON.parse(data);
/* /*
@@ -139,5 +184,6 @@ function masonry(mode) {
shortestColumn[0] = shortestColumn[0] + $post.height() + margin; shortestColumn[0] = shortestColumn[0] + $post.height() + margin;
}); });
}); });
}
postAmount += limit;
}

View File

@@ -2,92 +2,125 @@ var menuFriendsData;
var menuGroupsData; var menuGroupsData;
var notificationMessagesData; var notificationMessagesData;
var notificationRequestsData; var notificationRequestsData;
var updatingMenus = 0;
// On document load, load menus and loops loading menus every 10 seconds.
$(document).ready(function() { $(document).ready(function() {
loadMenuFriends(5); updateMenus();
loadNotificationFriends(); setInterval(updateMenus, 10000);
loadUnreadMessages();
loadMenuGroups();
setInterval(updateMenus, 3000);
}); });
// Update the menu and notification items. // Update the menu and notification items.
function updateMenus() { function updateMenus() {
if (updatingMenus <= 0) {
loadMenuFriends(5); loadMenuFriends(5);
loadNotificationFriends(); loadNotificationFriends();
loadUnreadMessages(); loadUnreadMessages();
loadMenuGroups(); loadMenuGroups();
} }
}
// Get, every 3 seconds, the friends and insert them in the menu. // Get the friends and insert them in the menu.
function loadMenuFriends(limit) { function loadMenuFriends(limit) {
updatingMenus ++;
$.post( $.post(
"API/loadFriends.php", "API/loadFriends.php",
{ {
limit: 5 limit: 5
} }
).done(function(data) { ).done(function(data) {
if (data == "" || data == "[]") {
$("#friends-menu-section").hide();
} else {
$("#friends-menu-section").show();
}
if (menuFriendsData != data) { if (menuFriendsData != data) {
menuFriendsData = data; menuFriendsData = data;
if (showFriends(data, "#menu-friends-list", 5, "profile.php", "GET", limit)) { if (!showFriends(data, "#menu-friends-list", 5, "profile.php", "GET", limit)) {
$("#friends-menu-section").show();
} else {
$("#friends-menu-section").hide(); $("#friends-menu-section").hide();
} }
} }
}).fail(function() {
$("#friends-menu-section").hide();
}).always(function() {
updatingMenus --;
}); });
} }
// Get, every 3 seconds, the groups and insert them in the menu. // Get the groups and insert them in the menu.
function loadMenuGroups() { function loadMenuGroups() {
updatingMenus ++;
$.post( $.post(
"API/loadGroups.php", "API/loadGroups.php",
{ {
limit: 5 limit: 5
} }
).done(function(data) { ).done(function(data) {
if (data == "" || data == "[]") {
$("#groups-menu-section").hide();
} else {
$("#groups-menu-section").show();
}
if (menuGroupsData != data) { if (menuGroupsData != data) {
menuGroupsData = data; menuGroupsData = data;
if (showGroups(data, "#menu-groups-list")) { if (!showGroups(data, "#menu-groups-list")) {
$("#groups-menu-section").show();
} else {
$("#groups-menu-section").hide(); $("#groups-menu-section").hide();
} }
} }
}).fail(function() {
$("#groups-menu-section").hide();
}).always(function() {
updatingMenus --;
}); });
} }
// Get, every 3 seconds, the friends requests and insert them in the notification center. // Get the friends requests and insert them in the notification center.
function loadNotificationFriends() { function loadNotificationFriends() {
updatingMenus ++;
$.post( $.post(
"API/loadFriendRequest.php" "API/loadFriendRequest.php"
).done(function(data) { ).done(function(data) {
if (data == "" || data == "[]") {
$("#friend-request-section").hide();
} else {
$("#friend-request-section").show();
}
if (notificationRequestsData != data) { if (notificationRequestsData != data) {
notificationRequestsData = data; notificationRequestsData = data;
if (showFriendsPlus(data, "#friend-requests-list", 5, "profile.php", "GET")) { if (!showFriendsPlus(data, "#friend-requests-list", 5, "profile.php", "GET")) {
$("#friend-request-section").show();
} else {
$("#friend-request-section").hide(); $("#friend-request-section").hide();
} }
} }
}).fail(function() {
$("#friend-request-section").hide();
}).always(function() {
updatingMenus --;
}); });
} }
// Get, every 3 seconds, the unread messages and insert them in the notification center. // Get the unread messages and insert them in the notification center.
function loadUnreadMessages() { function loadUnreadMessages() {
updatingMenus ++;
$.post( $.post(
"API/loadChatNotifications.php" "API/loadChatNotifications.php"
).done(function(data) { ).done(function(data) {
if (data == "" || data == "[]") {
$("#unread-messages-section").hide();
} else {
$("#unread-messages-section").show();
}
if (notificationMessagesData != data) { if (notificationMessagesData != data) {
notificationMessagesData = data; notificationMessagesData = data;
if (showFriendsPlus(data, "#unread-chat-list", 5, "chat.php", "GET")) { if (!showFriendsPlus(data, "#unread-chat-list", 5, "chat.php", "GET")) {
$("#unread-messages-section").show();
} else {
$("#unread-messages-section").hide(); $("#unread-messages-section").hide();
} }
} }
}).fail(function() {
$("#unread-messages-section").hide();
}).always(function() {
updatingMenus --;
}); });
} }

View File

@@ -1,3 +1,4 @@
function postComment(buttonValue) { function postComment(buttonValue) {
formData = $("#newcommentform").serializeArray(); formData = $("#newcommentform").serializeArray();
formData.push({name: "button", value: buttonValue}); formData.push({name: "button", value: buttonValue});
@@ -20,3 +21,17 @@ function postComment(buttonValue) {
$('#modal-response').html(fancyText(data)); $('#modal-response').html(fancyText(data));
}); });
} }
function deletePost(postID) {
var formData = [{name: "postID", value: postID}];
$.post(
"API/deletePost.php",
formData
).done(function (response) {
if (response == "frozen") {
alert("Je account is bevroren, dus je kan geen posts verwijderen. Contacteer een admin als je denkt dat dit onjuist is.");
}
});
closeModal();
masonry(masonryMode);
}

View File

@@ -56,5 +56,5 @@
} }
.bancommentform input[type="text"] { .bancommentform input[type="text"] {
width: 100%; width: 80%;
} }

View File

@@ -14,7 +14,7 @@
/* Modal Content/Box */ /* Modal Content/Box */
.modal-content { .modal-content {
margin: 5% auto; margin: 50px auto;
width: 70%; /* Could be more or less, depending on screen size */ width: 70%; /* Could be more or less, depending on screen size */
overflow-y: auto; overflow-y: auto;
} }
@@ -84,3 +84,20 @@
height: 24px; height: 24px;
width: 24px; width: 24px;
} }
.deleteButton {
background-color: firebrick;
}
.deleteButton i {
display: inline-block;
}
.deleteButton:hover span {
display: inline-block;
}
.deleteButton span {
display: none;
}

View File

@@ -123,6 +123,11 @@ div.posts .post form textarea.newpost {
font-size: 0.8em; font-size: 0.8em;
} }
.noposts {
display: none;
text-align: center;
}
@media only screen and (max-width: 1500px) { @media only screen and (max-width: 1500px) {
.post-box { .post-box {
width: calc(50% - 68px); width: calc(50% - 68px);

View File

@@ -193,7 +193,9 @@ function search20GroupsFromNByStatus($n, $keyword, $status) {
return $q; return $q;
} }
function searchSomeGroupsByStatus($n, $m, $keyword, $status) { function searchSomeGroupsByStatus($n, $m, $search, $status) {
// parentheses not needed in where clause, for clarity as
// role search should override status filter.
$q = prepareQuery(" $q = prepareQuery("
SELECT SELECT
`groupID`, `groupID`,
@@ -203,16 +205,18 @@ function searchSomeGroupsByStatus($n, $m, $keyword, $status) {
FROM FROM
`group_page` `group_page`
WHERE WHERE
`name` LIKE :keyword AND (`name` LIKE :keyword AND
FIND_IN_SET (`status`, :statuses) FIND_IN_SET (`status`, :statuses)) OR
`status` = :search
ORDER BY ORDER BY
`name` `name`
LIMIT LIMIT
:n, :m :n, :m
"); ");
$keyword = "%$keyword%"; $keyword = "%$search%";
$q->bindParam(':keyword', $keyword); $q->bindParam(':keyword', $keyword);
$q->bindParam(':search', $search);
$q->bindParam(':n', $n, PDO::PARAM_INT); $q->bindParam(':n', $n, PDO::PARAM_INT);
$q->bindParam(':m', $m, PDO::PARAM_INT); $q->bindParam(':m', $m, PDO::PARAM_INT);
$statuses = implode(',', $status); $statuses = implode(',', $status);
@@ -221,21 +225,23 @@ function searchSomeGroupsByStatus($n, $m, $keyword, $status) {
return $q; return $q;
} }
function countSomeGroupsByStatus($keyword, $status) { function countSomeGroupsByStatus($search, $status) {
$q = prepareQuery(" $q = prepareQuery("
SELECT SELECT
COUNT(*) COUNT(*)
FROM FROM
`group_page` `group_page`
WHERE WHERE
`name` LIKE :keyword AND (`name` LIKE :keyword AND
FIND_IN_SET (`status`, :statuses) FIND_IN_SET (`status`, :statuses)) OR
`status` = :search
ORDER BY ORDER BY
`name` `name`
"); ");
$keyword = "%$keyword%"; $keyword = "%$search%";
$q->bindParam(':keyword', $keyword); $q->bindParam(':keyword', $keyword);
$q->bindParam(':search', $search);
$statuses = implode(',', $status); $statuses = implode(',', $status);
$q->bindParam(':statuses', $statuses); $q->bindParam(':statuses', $statuses);
$q->execute(); $q->execute();

View File

@@ -46,6 +46,57 @@ function selectAllPosts($userID, $groupID) {
} }
function selectSomePosts($userID, $groupID, $offset, $limit) {
$stmt = prepareQuery("
SELECT
`post`.`postID`,
`post`.`author`,
`title`,
CASE LENGTH(`post`.`content`) >= 150 AND `post`.`content` NOT LIKE '<img%'
WHEN TRUE THEN
CONCAT(LEFT(`post`.`content`, 150), '...')
WHEN FALSE THEN
`post`.`content`
END
AS `content`,
`post`.`creationdate`,
COUNT(DISTINCT `commentID`) AS `comments`,
COUNT(DISTINCT `niet_slecht`.`postID`) AS `niet_slechts`
FROM
`post`
LEFT JOIN
`niet_slecht`
ON
`post`.`postID` = `niet_slecht`.`postID`
LEFT JOIN
`comment`
ON
`post`.`postID` = `comment`.`postID`
WHERE
`post`.`author` = :userID AND
`groupID` IS NULL OR
`groupID` = :groupID
GROUP BY
`post`.`postID`
ORDER BY
`post`.`creationdate` DESC
LIMIT
:offset, :limit
");
$stmt->bindParam(':userID', $userID, PDO::PARAM_INT);
$stmt->bindParam(':groupID', $groupID , PDO::PARAM_INT);
$stmt->bindParam(':offset', intval($offset), PDO::PARAM_INT);
$stmt->bindParam(':limit', intval($limit), PDO::PARAM_INT);
if(!$stmt->execute()) {
return False;
}
if($stmt->rowCount() == 0) {
return False;
}
return $stmt;
}
function selectPostById($postID) { function selectPostById($postID) {
$stmt = prepareQuery(" $stmt = prepareQuery("
SELECT SELECT
@@ -192,3 +243,56 @@ function deleteNietSlecht(int $postID, int $userID) {
$stmt->execute(); $stmt->execute();
return $stmt->rowCount(); return $stmt->rowCount();
} }
function deletePost(int $postID, int $userID) {
if (checkPermissionOnPost($postID, $userID)) {
$stmt = prepareQuery("
DELETE FROM
`post`
WHERE
`postID` = :postID
");
$stmt->bindParam(":postID", $postID);
$stmt->execute();
}
}
function checkPermissionOnPost(int $postID, int $userID) : bool {
$getGroupID = prepareQuery("
SELECT
`author`,
`groupID`
FROM
`post`
WHERE
`postID` = :postID
");
$getGroupID->bindParam(":postID", $postID);
$getGroupID->execute();
$postinfo = $getGroupID->fetch();
if ($postinfo["groupID"] == null) {
// User post
return ($userID == $postinfo["author"]);
} else {
// Group post
$roleInGroup = getRoleInGroup($userID, $postinfo["groupID"]);
return ($roleInGroup == "mod" or $roleInGroup == "admin");
}
}
function getRoleInGroup(int $userID, int $groupID) {
$stmt = prepareQuery("
SELECT
`role`
FROM
`group_member`
WHERE
`userID` = :userID AND
`groupID` = :groupID
");
$stmt->bindParam(":userID", $userID);
$stmt->bindParam(":groupID", $groupID);
$stmt->execute();
return $stmt->fetch()["role"];
}

View File

@@ -18,7 +18,8 @@ function getSettings() {
`bio`, `bio`,
`profilepicture`, `profilepicture`,
`showBday`, `showBday`,
`showEmail` `showEmail`,
`showProfile`
FROM FROM
`user` `user`
WHERE WHERE
@@ -64,7 +65,8 @@ function updateSettings() {
`birthdate` = :bday, `birthdate` = :bday,
`bio` = :bio, `bio` = :bio,
`showEmail` = :showEmail, `showEmail` = :showEmail,
`showBday` = :showBday `showBday` = :showBday,
`showProfile` = :showProfile
WHERE WHERE
`userID` = :userID `userID` = :userID
"); ");
@@ -79,6 +81,7 @@ function updateSettings() {
$stmt->bindValue(":bio", test_input($_POST["bio"])); $stmt->bindValue(":bio", test_input($_POST["bio"]));
$stmt->bindValue(":showEmail", (array_key_exists("showEmail", $_POST) ? "1" : "0")); $stmt->bindValue(":showEmail", (array_key_exists("showEmail", $_POST) ? "1" : "0"));
$stmt->bindValue(":showBday", (array_key_exists("showBday", $_POST) ? "1" : "0")); $stmt->bindValue(":showBday", (array_key_exists("showBday", $_POST) ? "1" : "0"));
$stmt->bindValue(":showProfile", (array_key_exists("showProfile", $_POST) ? "1" : "0"));
$stmt->bindValue(":userID", $_SESSION["userID"]); $stmt->bindValue(":userID", $_SESSION["userID"]);
$stmt->execute(); $stmt->execute();

View File

@@ -205,7 +205,9 @@ function search20UsersFromNByStatus($n, $keyword, $status) {
return $q; return $q;
} }
function searchSomeUsersByStatus($n, $m, $keyword, $status) { function searchSomeUsersByStatus($n, $m, $search, $status) {
// parentheses not needed in where clause, for clarity as
// role search should override status filter.
$q = prepareQuery(" $q = prepareQuery("
SELECT SELECT
`userID`, `userID`,
@@ -219,8 +221,9 @@ function searchSomeUsersByStatus($n, $m, $keyword, $status) {
FROM FROM
`user` `user`
WHERE WHERE
`username` LIKE :keyword AND (`username` LIKE :keyword AND
FIND_IN_SET (`role`, :statuses) FIND_IN_SET (`role`, :statuses)) OR
`role` = :search
ORDER BY ORDER BY
`role`, `role`,
`username` `username`
@@ -228,8 +231,9 @@ function searchSomeUsersByStatus($n, $m, $keyword, $status) {
:n, :m :n, :m
"); ");
$keyword = "%$keyword%"; $keyword = "%$search%";
$q->bindParam(':keyword', $keyword); $q->bindParam(':keyword', $keyword);
$q->bindParam(':search', $search);
$q->bindParam(':n', $n, PDO::PARAM_INT); $q->bindParam(':n', $n, PDO::PARAM_INT);
$q->bindParam(':m', $m, PDO::PARAM_INT); $q->bindParam(':m', $m, PDO::PARAM_INT);
$statuses = implode(',', $status); $statuses = implode(',', $status);
@@ -238,22 +242,24 @@ function searchSomeUsersByStatus($n, $m, $keyword, $status) {
return $q; return $q;
} }
function countSomeUsersByStatus($keyword, $status) { function countSomeUsersByStatus($search, $status) {
$q = prepareQuery(" $q = prepareQuery("
SELECT SELECT
COUNT(*) COUNT(*)
FROM FROM
`user` `user`
WHERE WHERE
`username` LIKE :keyword AND (`username` LIKE :keyword AND
FIND_IN_SET (`role`, :statuses) FIND_IN_SET (`role`, :statuses)) OR
`role` = :search
ORDER BY ORDER BY
`role`, `role`,
`username` `username`
"); ");
$keyword = "%$keyword%"; $keyword = "%$search%";
$q->bindParam(':keyword', $keyword); $q->bindParam(':keyword', $keyword);
$q->bindParam(':search', $search);
$statuses = implode(',', $status); $statuses = implode(',', $status);
$q->bindParam(':statuses', $statuses); $q->bindParam(':statuses', $statuses);
$q->execute(); $q->execute();

View File

@@ -2,23 +2,28 @@
$postID = $_GET['postID']; $postID = $_GET['postID'];
$post = selectPostById($postID)->fetch(PDO::FETCH_ASSOC); $post = selectPostById($postID)->fetch(PDO::FETCH_ASSOC);
$fullname = $post['fname'] . " " . $post['lname'] . " (" . $post['username'] . ")"; $fullname = $post['fname'] . " " . $post['lname'] . " (" . $post['username'] . ")";
session_start(); ?>
echo("
<div class='post-header header'> <div class='post-header header'>
<h4>" . $post['title'] . "</h4> <h4><?=$post['title']?></h4>
<?php if (checkPermissionOnPost($postID, $_SESSION["userID"])) {?>
<button class="deleteButton"
onclick="deletePost('<?=$postID?>')"
type="submit">
<i class="fa fa-trash"></i>
<span>Verwijder post</span>
</button><br />
<?php } ?>
<span class='postinfo'> <span class='postinfo'>
gepost door $fullname, gepost door <?=$fullname?>,
<span class='posttime' title='" . $post['creationdate'] . "'> <span class='posttime' title='<?=$post['creationdate']?>'>
" . nicetime($post['creationdate']) . " <?=nicetime($post['creationdate'])?>
</span> </span>
</span> </span>
</div> </div>
<div class='post-content'> <div class='post-content'>
<p>" . $post['content'] . "</p> <p><?=$post['content']?></p>
</div> </div>
"); ?>
<div class='post-comments'> <div class='post-comments'>
<div class="commentfield"> <div class="commentfield">

View File

@@ -71,6 +71,10 @@
</div> </div>
<div class="noposts platform">
<p>Geen posts meer!</p>
</div>
<div class="modal"> <div class="modal">
<div class="modal-content platform"> <div class="modal-content platform">
<div class="modal-close"> <div class="modal-close">

View File

@@ -96,6 +96,14 @@ $settings = getSettings();
<?=($settings["showEmail"] ? "checked" : "")?> <?=($settings["showEmail"] ? "checked" : "")?>
> >
</li> </li>
<li>
<label for="showProfile">Publiek profiel</label>
<input type="checkbox"
name="showProfile"
id="showProfile"
<?=($settings["showProfile"] ? "checked" : "")?>
>
</li>
<li> <li>
<label for="bio">Bio</label> <label for="bio">Bio</label>
<textarea name="bio" <textarea name="bio"