From b965da0a6c01668d2476ab2e112ffffd4b5e6859 Mon Sep 17 00:00:00 2001 From: Peder Bergebakken Sundt Date: Thu, 9 Aug 2018 00:49:49 +0200 Subject: [PATCH] Add ability to join and leave groups, get row id in a way supported by both mysql and sqlite --- src/pvv/side/projectmanager.php | 2 +- www/css/admin.css | 2 +- www/index.php | 1 - www/prosjekt/update.php | 45 ++++++++++++++++++++++++++++++--- 4 files changed, 43 insertions(+), 7 deletions(-) diff --git a/src/pvv/side/projectmanager.php b/src/pvv/side/projectmanager.php index c09bbca..deff2ce 100644 --- a/src/pvv/side/projectmanager.php +++ b/src/pvv/side/projectmanager.php @@ -115,4 +115,4 @@ class ProjectManager{ return $owner; } -} \ No newline at end of file +} diff --git a/www/css/admin.css b/www/css/admin.css index 44a0678..638b2bf 100644 --- a/www/css/admin.css +++ b/www/css/admin.css @@ -97,4 +97,4 @@ .newuserelement input { border: none; background-color: #ddd; -} \ No newline at end of file +} diff --git a/www/index.php b/www/index.php index 86c326b..ac4a42e 100644 --- a/www/index.php +++ b/www/index.php @@ -8,7 +8,6 @@ $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $motdfetcher = new \pvv\side\MOTD($pdo); $motd = $motdfetcher->getMOTD(); ?> - diff --git a/www/prosjekt/update.php b/www/prosjekt/update.php index b9a3eb7..972ddfd 100644 --- a/www/prosjekt/update.php +++ b/www/prosjekt/update.php @@ -18,6 +18,7 @@ $attrs = $as->getAttributes(); $id = $_POST['id']; $do_delete = isset($_POST['delete']); +$do_join_or_leave = isset($_POST['join_or_leave']); $active = $_POST['active']; @@ -36,18 +37,54 @@ if($id == 0){ $statement->bindParam(':desc', $desc, PDO::PARAM_STR); $statement->execute(); + $new_id = $pdo->lastInsertId(); - // there's a better way to do this. i just don't know it right now - $ownerQuery = 'INSERT INTO projectmembers (projectid, name, uname, mail, role, lead, owner) VALUES (last_insert_rowid(), :owner, :owneruname, :owneremail, \'Prosjektleder\', 1, 1)'; - $statement = $pdo->prepare($ownerQuery); + $ownerQuery = "INSERT INTO projectmembers (projectid, name, uname, mail, role, lead, owner) VALUES (:id, :owner, :owneruname, :owneremail, 'Prosjektleder', 1, 1)"; + $statement = $pdo->prepare($ownerQuery); + $statement->bindParam(':id', $new_id, PDO::PARAM_STR); $statement->bindParam(':owner', $name, PDO::PARAM_STR); $statement->bindParam(':owneruname', $uname, PDO::PARAM_STR); $statement->bindParam(':owneremail', $mail, PDO::PARAM_STR); $statement->execute(); -}else{ +} +else { $projectManager = new \pvv\side\ProjectManager($pdo); $owner = $projectManager->getProjectOwner($id); + $members = $projectManager->getProjectMembers($id); + + //if ($do_join_or_leave and $owner['uname'] != $uname) { + if ($do_join_or_leave) { + $is_member = False; + foreach($members as $member){ + if ($member['uname'] == $uname and $member['owner']==0){ + $is_member = True; + break; + } + } + if ($is_member){//leave + $query = "DELETE FROM projectmembers WHERE projectid=:id AND uname=:uname and lead=0 and owner=0;"; + $statement = $pdo->prepare($query); + $statement->bindParam(':id', $id, PDO::PARAM_STR); + $statement->bindParam(':uname', $uname, PDO::PARAM_STR); + + $statement->execute(); + print("leave"); + } + else{//join + $query = "INSERT INTO projectmembers (projectid, name, uname, mail, role, lead, owner) VALUES (:id, :name, :uname, :mail, 'Medlem', 0, 0)"; + $statement = $pdo->prepare($query); + $statement->bindParam(':id', $id, PDO::PARAM_STR); + $statement->bindParam(':name', $name, PDO::PARAM_STR); + $statement->bindParam(':uname', $uname, PDO::PARAM_STR); + $statement->bindParam(':mail', $mail, PDO::PARAM_STR); + + $statement->execute(); + print("join"); + } + header('Location: ./info.php?id=' . $id); + exit(); + } if($uname != $owner['uname']){ header('Content-Type: text/plain', true, 403);