From 14727bd94c367646472797a9cd5908c18734c5b9 Mon Sep 17 00:00:00 2001 From: Olivier PEREZ <olivier@olivierperez.fr> Date: Fri, 19 Dec 2014 00:27:30 +0100 Subject: [PATCH] admin: Add availability to delete all votes of a poll. --- adminstuds.php | 8 ++++++++ app/classes/Framadate/FramaDB.php | 14 ++++++++++++++ app/classes/Framadate/Services/PollService.php | 4 ++++ 3 files changed, 26 insertions(+) diff --git a/adminstuds.php b/adminstuds.php index 676922d7..6da08c69 100644 --- a/adminstuds.php +++ b/adminstuds.php @@ -52,6 +52,13 @@ if (!$poll) { exit; } +// ------------------------------- +// Remove all votes +// ------------------------------- +if (isset($_POST['remove_all_votes'])) { + $pollService->cleanVotes($admin_poll_id, $poll_id); +} + // ------------------------------- // Update poll info // ------------------------------- @@ -111,6 +118,7 @@ if (isset($_POST['update_poll_info'])) { // ------------------------------- // Delete a comment // ------------------------------- + if (!empty($_POST['delete_comment'])) { $comment_id = filter_input(INPUT_POST, 'delete_comment', FILTER_VALIDATE_INT); diff --git a/app/classes/Framadate/FramaDB.php b/app/classes/Framadate/FramaDB.php index f20f80e9..2359bc17 100644 --- a/app/classes/Framadate/FramaDB.php +++ b/app/classes/Framadate/FramaDB.php @@ -102,6 +102,20 @@ class FramaDB return $newVote; } + function deleteVotesByAdminPollId($admin_poll_id, $poll_id) { + $prepared = $this->prepare('SELECT 1 FROM sondage WHERE admin_poll_id = ? AND poll_id = ?'); + $prepared->execute([$admin_poll_id, $poll_id]); + $count = $prepared->rowCount(); + $prepared->closeCursor(); + + if ($count === 1) { + $prepared = $this->prepare('DELETE FROM user_studs WHERE id_sondage = ?'); + return $prepared->execute([$poll_id]); + } else { + return null; + } + } + function updateVote($poll_id, $vote_id, $choices) { $prepared = $this->prepare('UPDATE user_studs SET reponses = ? WHERE id_sondage = ? AND id_users = ?'); return $prepared->execute([$choices, $poll_id, $vote_id]); diff --git a/app/classes/Framadate/Services/PollService.php b/app/classes/Framadate/Services/PollService.php index d1fb9239..34d93e1f 100644 --- a/app/classes/Framadate/Services/PollService.php +++ b/app/classes/Framadate/Services/PollService.php @@ -60,6 +60,10 @@ class PollService { return $this->connect->insertVote($poll_id, $name, $choices); } + function cleanVotes($admin_poll_id, $poll_id) { + $this->connect->deleteVotesByAdminPollId($admin_poll_id, $poll_id); + } + function addComment($poll_id, $name, $comment) { return $this->connect->insertComment($poll_id, $name, $comment); } -- GitLab