From 94a125ca2bf6433321d861ea37a96a774fafbc15 Mon Sep 17 00:00:00 2001
From: Olivier PEREZ <olivier@olivierperez.fr>
Date: Fri, 19 Dec 2014 00:59:27 +0100
Subject: [PATCH] Display confirmation page before to delete all comments of
 one poll.

---
 adminstuds.php                                | 39 ++++++++++++-------
 .../Framadate/Services/PollService.php        | 16 +++++++-
 tpl/confirm/delete_comment.tpl                | 11 ++++++
 3 files changed, 50 insertions(+), 16 deletions(-)
 create mode 100644 tpl/confirm/delete_comment.tpl

diff --git a/adminstuds.php b/adminstuds.php
index 84352003..84b84857 100644
--- a/adminstuds.php
+++ b/adminstuds.php
@@ -52,20 +52,6 @@ if (!$poll) {
     exit;
 }
 
-// -------------------------------
-// Remove all votes
-// -------------------------------
-if (isset($_POST['remove_all_votes'])) {
-    $pollService->cleanVotes($poll_id);
-}
-
-// -------------------------------
-// Remove all comments
-// -------------------------------
-if (isset($_POST['remove_all_comments'])) {
-    $pollService->cleanComments($poll_id);
-}
-
 // -------------------------------
 // Update poll info
 // -------------------------------
@@ -136,6 +122,30 @@ if (!empty($_POST['delete_comment'])) {
     }
 }
 
+// -------------------------------
+// Remove all votes
+// -------------------------------
+if (isset($_POST['remove_all_votes'])) {
+    $pollService->cleanVotes($poll_id);
+}
+
+// -------------------------------
+// Remove all comments
+// -------------------------------
+if (isset($_POST['remove_all_comments'])) {
+    $smarty->assign('poll_id', $poll_id);
+    $smarty->assign('admin_poll_id', $admin_poll_id);
+    $smarty->assign('title', _('Poll') . ' - ' . $poll->title);
+    $smarty->display('confirm/delete_comment.tpl');
+    exit;
+}
+if (isset($_POST['confirm_remove_all_comments'])) {
+    if ($pollService->cleanComments($poll_id)) {
+        $message = new Message('success', _('All comments deleted.'));
+    } else {
+        $message = new Message('danger', _('Failed to delete all comments.'));
+    }
+}
 
 // -------------------------------
 // Delete the entire poll
@@ -144,6 +154,7 @@ if (!empty($_POST['delete_comment'])) {
 if (isset($_POST['delete_poll'])) {
     $smarty->assign('poll_id', $poll_id);
     $smarty->assign('admin_poll_id', $admin_poll_id);
+    $smarty->assign('title', _('Poll') . ' - ' . $poll->title);
     $smarty->display('confirm/delete_poll.tpl');
     exit;
 }
diff --git a/app/classes/Framadate/Services/PollService.php b/app/classes/Framadate/Services/PollService.php
index ca73c9ca..cf97b412 100644
--- a/app/classes/Framadate/Services/PollService.php
+++ b/app/classes/Framadate/Services/PollService.php
@@ -60,8 +60,14 @@ class PollService {
         return $this->connect->insertVote($poll_id, $name, $choices);
     }
 
+    /**
+     * Remove all votes of a poll.
+     *
+     * @param $poll_id int The ID a the poll
+     * @return bool|null true is action succeeded
+     */
     function cleanVotes($poll_id) {
-        $this->connect->deleteVotesByAdminPollId($poll_id);
+        return $this->connect->deleteVotesByAdminPollId($poll_id);
     }
 
     function addComment($poll_id, $name, $comment) {
@@ -72,8 +78,14 @@ class PollService {
         return $this->connect->deleteComment($poll_id, $comment_id);
     }
 
+    /**
+     * Remove all comments of a poll.
+     *
+     * @param $poll_id int The ID a the poll
+     * @return bool|null true is action succeeded
+     */
     function cleanComments($poll_id) {
-        $this->connect->deleteCommentssByAdminPollId($poll_id);
+        return $this->connect->deleteCommentssByAdminPollId($poll_id);
     }
 
     function computeBestMoments($votes) {
diff --git a/tpl/confirm/delete_comment.tpl b/tpl/confirm/delete_comment.tpl
new file mode 100644
index 00000000..739be746
--- /dev/null
+++ b/tpl/confirm/delete_comment.tpl
@@ -0,0 +1,11 @@
+{extends file='page.tpl'}
+
+{block name=main}
+    <form action="{$admin_poll_id|poll_url:true}" method="POST">
+        <div class="alert alert-danger text-center">
+            <h2>{_("Confirm removal of all comments of the poll")}</h2>
+            <p><button class="btn btn-default" type="submit" name="cancel">{_("Keep comments")}</button>
+                <button type="submit" name="confirm_remove_all_comments" class="btn btn-danger">{_("Remove all comments!")}</button></p>
+        </div>
+    </form>
+{/block}
\ No newline at end of file
-- 
GitLab