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