Merge branch 'marijn-groups' into 'master'
Add mods/admin to a group. See merge request !194
This commit was merged in pull request #198.
This commit is contained in:
@@ -23,12 +23,27 @@ $alertClass;
|
||||
$alertMessage;
|
||||
if ($_SERVER["REQUEST_METHOD"] == "POST") {
|
||||
try {
|
||||
if ($_POST["form"] == "group") {
|
||||
switch ($_POST["form"]) {
|
||||
case "group":
|
||||
updateGroupSettings($_POST["groupID"]);
|
||||
} else if ($_POST["form"] == "picture") {
|
||||
break;
|
||||
case "picture":
|
||||
if (checkGroupAdmin($_POST["groupID"], $_SESSION["userID"])) {
|
||||
updateAvatar($_POST["groupID"]);
|
||||
}
|
||||
break;
|
||||
case "mod":
|
||||
if (!array_key_exists("userID", $_POST)) {
|
||||
throw new AngryAlert("Geen gebruiker geselecteerd.");
|
||||
}
|
||||
upgradeUser($_POST["groupID"], $_POST["userID"], "mod");
|
||||
break;
|
||||
case "admin":
|
||||
if (!array_key_exists("userID", $_POST)) {
|
||||
throw new AngryAlert("Geen gebruiker geselecteerd.");
|
||||
}
|
||||
upgradeUser($_POST["groupID"], $_POST["userID"], "admin");
|
||||
break;
|
||||
}
|
||||
} catch (AlertMessage $w) {
|
||||
$alertClass = $w->getClass();
|
||||
|
||||
@@ -59,3 +59,51 @@ function checkGroupAdmin(int $groupID, int $userID) : bool {
|
||||
$role = $stmt->fetch()["role"];
|
||||
return ($role == "admin");
|
||||
}
|
||||
|
||||
function getAllGroupMembers(int $groupID) {
|
||||
$stmt = prepareQuery("
|
||||
SELECT
|
||||
`username`,
|
||||
`user`.`userID`,
|
||||
CONCAT(`fname`, ' ', `lname`) AS `fullname`,
|
||||
`group_member`.`role`
|
||||
FROM
|
||||
`group_member`
|
||||
LEFT JOIN
|
||||
`user`
|
||||
ON
|
||||
`group_member`.`userID` = `user`.`userID`
|
||||
WHERE
|
||||
`groupID` = :groupID AND `group_member`.`role` = 'member'
|
||||
");
|
||||
|
||||
$stmt->bindParam(':groupID', $groupID);
|
||||
if (!$stmt->execute()) {
|
||||
return False;
|
||||
}
|
||||
return $stmt->fetchAll();
|
||||
}
|
||||
|
||||
function upgradeUser(int $groupID, int $userID, string $role) {
|
||||
if (!checkGroupAdmin($groupID, $_SESSION["userID"])) {
|
||||
throw new AngryAlert("Geen toestemming om te wijzigen");
|
||||
}
|
||||
|
||||
$stmt = prepareQuery("
|
||||
UPDATE
|
||||
`group_member`
|
||||
SET
|
||||
`role` = :role
|
||||
WHERE
|
||||
`userID` = :userID AND `groupID` = :groupID
|
||||
");
|
||||
$stmt->bindValue(":groupID", $groupID);
|
||||
$stmt->bindValue(":userID", $userID);
|
||||
$stmt->bindValue(":role", $role);
|
||||
$stmt->execute();
|
||||
if ($stmt->rowCount()) {
|
||||
throw new HappyAlert("Permissie aangepast!");
|
||||
} else {
|
||||
throw new AngryAlert("Er is iets mis gegaan");
|
||||
}
|
||||
}
|
||||
@@ -148,6 +148,10 @@ function doChangePassword() {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Changes the users email if it is valid.
|
||||
* @throws AngryAlert
|
||||
*/
|
||||
function changeEmail() {
|
||||
|
||||
if (test_input($_POST["email"]) == test_input($_POST["email-confirm"])) {
|
||||
@@ -164,6 +168,11 @@ function changeEmail() {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if an emailadres is available in the database.
|
||||
* @param $email
|
||||
* @throws AngryAlert
|
||||
*/
|
||||
function emailIsAvailableInDatabase($email) {
|
||||
$stmt = prepareQuery("
|
||||
SELECT
|
||||
@@ -181,6 +190,12 @@ function emailIsAvailableInDatabase($email) {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Does the actual changing of an email-adress.
|
||||
* @param $email
|
||||
* @throws AngryAlert
|
||||
* @throws HappyAlert
|
||||
*/
|
||||
function doChangeEmail($email) {
|
||||
$stmt = prepareQuery("
|
||||
UPDATE
|
||||
|
||||
@@ -85,6 +85,35 @@ $groupinfo = getGroupSettings($_GET["groupID"]);
|
||||
</li>
|
||||
</ul>
|
||||
</form>
|
||||
<form class="platform" method="post">
|
||||
<h5>Voeg een admin/mod toe</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
|
||||
$groupMembers = getAllGroupMembers($_GET["groupID"]);
|
||||
foreach ($groupMembers as $groupMember) {?>
|
||||
<option value="<?=$groupMember["userID"]?>">
|
||||
<?=$groupMember["fullname"]?> (<?=$groupMember["username"]?>)
|
||||
</option>
|
||||
<?php } ?>
|
||||
</select>
|
||||
<button name="form"
|
||||
value="admin"
|
||||
>
|
||||
Maak Admin
|
||||
</button>
|
||||
<button name="form"
|
||||
value="mod"
|
||||
>
|
||||
Maak Moderator
|
||||
</button>
|
||||
</il>
|
||||
</ul>
|
||||
</form>
|
||||
<div class="platform">
|
||||
<ul>
|
||||
<li>
|
||||
|
||||
Reference in New Issue
Block a user