diff --git a/website/public/groupAdmin.php b/website/public/groupAdmin.php index 6095149..ec6eee8 100644 --- a/website/public/groupAdmin.php +++ b/website/public/groupAdmin.php @@ -21,6 +21,8 @@ require_once "../queries/alerts.php"; include("../views/main.php"); $alertClass; $alertMessage; + +// Select which button has been pressed. if ($_SERVER["REQUEST_METHOD"] == "POST") { try { switch ($_POST["form"]) { @@ -44,6 +46,15 @@ if ($_SERVER["REQUEST_METHOD"] == "POST") { } upgradeUser($_POST["groupID"], $_POST["userID"], "admin"); 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) { $alertClass = $w->getClass(); diff --git a/website/public/settings.php b/website/public/settings.php index 9247d26..7208141 100644 --- a/website/public/settings.php +++ b/website/public/settings.php @@ -14,6 +14,8 @@ getClass(); diff --git a/website/queries/connect.php b/website/queries/connect.php index 3971a74..30ce271 100644 --- a/website/queries/connect.php +++ b/website/queries/connect.php @@ -10,6 +10,11 @@ else { or die('Error connecting to mysql server'); } +/** + * Helperfunction to create a database query. + * @param string $query + * @return PDOStatement + */ function prepareQuery(string $query) : PDOStatement { return $GLOBALS["db"]->prepare($query); } \ No newline at end of file diff --git a/website/queries/createGroup.php b/website/queries/createGroup.php index 20ee28b..1b093fb 100644 --- a/website/queries/createGroup.php +++ b/website/queries/createGroup.php @@ -2,6 +2,10 @@ require_once "../queries/checkInput.php"; require_once "../queries/picture.php"; require_once "../queries/alerts.php"; + +/** + * Creates a group. + */ function createGroup() { $createGroup = prepareQuery(" diff --git a/website/queries/groupAdmin.php b/website/queries/groupAdmin.php index e3580b6..8cefb9b 100644 --- a/website/queries/groupAdmin.php +++ b/website/queries/groupAdmin.php @@ -1,4 +1,9 @@ fetch(); } +/** + * Updates the settings for a group. + * @param int $groupID + * @throws AngryAlert + * @throws HappyAlert + */ function updateGroupSettings(int $groupID) { 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 { $stmt = prepareQuery(" SELECT @@ -60,7 +77,40 @@ function checkGroupAdmin(int $groupID, int $userID) : bool { 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(" SELECT `username`, @@ -74,16 +124,25 @@ function getAllGroupMembers(int $groupID) { ON `group_member`.`userID` = `user`.`userID` WHERE - `groupID` = :groupID AND `group_member`.`role` = 'member' + `groupID` = :groupID AND `group_member`.`role` = :role "); $stmt->bindParam(':groupID', $groupID); + $stmt->bindParam(":role", $role); if (!$stmt->execute()) { return False; } 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) { if (!checkGroupAdmin($groupID, $_SESSION["userID"])) { throw new AngryAlert("Geen toestemming om te wijzigen"); @@ -106,4 +165,28 @@ function upgradeUser(int $groupID, int $userID, string $role) { } else { 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"); + } } \ No newline at end of file diff --git a/website/queries/settings.php b/website/queries/settings.php index 26237ec..6d6dc74 100644 --- a/website/queries/settings.php +++ b/website/queries/settings.php @@ -16,7 +16,10 @@ function getSettings() { `location`, `birthdate`, `bio`, - `profilepicture`, + IFNULL( + `profilepicture`, + '../img/avatar-standard.png' + ) AS profilepicture, `showBday`, `showEmail`, `showProfile` diff --git a/website/views/groupAdmin.php b/website/views/groupAdmin.php index 54fbee8..d406e5c 100644 --- a/website/views/groupAdmin.php +++ b/website/views/groupAdmin.php @@ -16,7 +16,7 @@ $groupinfo = getGroupSettings($_GET["groupID"]);
  • "> - +
  • @@ -51,8 +51,7 @@ $groupinfo = getGroupSettings($_GET["groupID"]); + > Opslaan @@ -80,8 +79,7 @@ $groupinfo = getGroupSettings($_GET["groupID"]); + > Verander profielfoto @@ -94,7 +92,7 @@ $groupinfo = getGroupSettings($_GET["groupID"]); " type="hidden"> + + + + + + +
    + +
    diff --git a/website/views/homeLoginRegister.php b/website/views/homeLoginRegister.php index ad7be40..2e00905 100644 --- a/website/views/homeLoginRegister.php +++ b/website/views/homeLoginRegister.php @@ -29,13 +29,12 @@ $user = $psw = $remember =""; $loginErr = $resetErr = $fbRegisterErr =""; if ($_SERVER["REQUEST_METHOD"] == "POST") { - $url = $_POST["url"]; // Checks for which button is pressed switch ($_POST["submit"]) { case "login": try { $user = ($_POST["user"]); - validateLogin($_POST["user"], $_POST["psw"], $url); + validateLogin($_POST["user"], $_POST["psw"], $_POST["url"]); } catch(loginException $e) { $loginErr = $e->getMessage(); }