Merge branch 'master' into joey-testing
This commit is contained in:
20
website/public/API/deletePost.php
Normal file
20
website/public/API/deletePost.php
Normal 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";
|
||||||
|
}
|
||||||
@@ -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,24 +15,23 @@ 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 = selectSomePosts(0, $_POST["grp"], $_POST["offset"], $_POST["limit"]);
|
||||||
$posts = selectAllPosts(0, $_POST["grp"]);
|
|
||||||
} else {
|
} else {
|
||||||
$posts = selectAllPosts($_POST["usr"], 0);
|
$posts = selectSomePosts($_POST["usr"], 0, $_POST["offset"], $_POST["limit"]);
|
||||||
}
|
|
||||||
|
|
||||||
if (!$posts) {
|
|
||||||
header('HTTP/1.1 500 Query failed');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(!$posts) {
|
||||||
|
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++) {
|
||||||
$results[$i]["nicetime"] = nicetime($results[$i]["creationdate"]);
|
$results[$i]["nicetime"] = nicetime($results[$i]["creationdate"]);
|
||||||
}
|
}
|
||||||
|
|
||||||
echo json_encode($results);
|
echo json_encode($results);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
header('HTTP/1.0 403 Forbidden');
|
header('HTTP/1.0 403 Forbidden');
|
||||||
}
|
}
|
||||||
@@ -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");
|
||||||
|
|||||||
BIN
website/public/img/nietslecht_small.png
Normal file
BIN
website/public/img/nietslecht_small.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 25 KiB |
@@ -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()
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ function placeGroupButtons() {
|
|||||||
.done(function() {
|
.done(function() {
|
||||||
$buttonContainer.children().remove();
|
$buttonContainer.children().remove();
|
||||||
placeGroupButtons();
|
placeGroupButtons();
|
||||||
|
updateMenus();
|
||||||
}).fail(function() {
|
}).fail(function() {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -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=/";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -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("");
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
@@ -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,7 +129,15 @@ function masonry(mode) {
|
|||||||
/*
|
/*
|
||||||
* Function will find the column with the shortest height.
|
* Function will find the column with the shortest height.
|
||||||
*/
|
*/
|
||||||
function getShortestColumn(columns) {
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Get the posts from the server.
|
||||||
|
*/
|
||||||
|
loadMorePosts(userID, groupID, 0, postLimit);
|
||||||
|
}
|
||||||
|
|
||||||
|
function getShortestColumn(columns) {
|
||||||
column = columns[0];
|
column = columns[0];
|
||||||
|
|
||||||
for (i = 1; i < columnCount; i++) {
|
for (i = 1; i < columnCount; i++) {
|
||||||
@@ -115,13 +146,27 @@ function masonry(mode) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
return column;
|
return column;
|
||||||
|
}
|
||||||
|
|
||||||
|
function loadMorePosts(uID, gID, offset, limit) {
|
||||||
|
if (noposts) {
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
console.log(uID, gID, offset, limit);
|
||||||
* Get the posts from the server.
|
|
||||||
*/
|
|
||||||
$.post("API/getPosts.php", { usr : userID, grp : groupID })
|
$.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;
|
||||||
|
}
|
||||||
@@ -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 --;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -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);
|
||||||
|
}
|
||||||
@@ -56,5 +56,5 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.bancommentform input[type="text"] {
|
.bancommentform input[type="text"] {
|
||||||
width: 100%;
|
width: 80%;
|
||||||
}
|
}
|
||||||
@@ -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;
|
||||||
|
}
|
||||||
@@ -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);
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
@@ -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"];
|
||||||
|
}
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
@@ -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">
|
||||||
|
|||||||
@@ -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">
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|||||||
Reference in New Issue
Block a user