From ab5f9e013a58e695c3472cc4b1621c849e89b258 Mon Sep 17 00:00:00 2001 From: Olivier PEREZ <olivier@olivierperez.fr> Date: Wed, 17 Dec 2014 13:47:14 +0100 Subject: [PATCH] Implement comments functionnality --- app/classes/Framadate/FramaDB.php | 5 +++ .../Framadate/Services/PollService.php | 4 +++ studs.php | 35 ++++++++++++++++--- tpl/studs.tpl | 29 ++++++++------- 4 files changed, 56 insertions(+), 17 deletions(-) diff --git a/app/classes/Framadate/FramaDB.php b/app/classes/Framadate/FramaDB.php index 184f7b6a..7e1d8e53 100644 --- a/app/classes/Framadate/FramaDB.php +++ b/app/classes/Framadate/FramaDB.php @@ -84,4 +84,9 @@ class FramaDB return $prepared->execute([$choices, $poll_id, $vote_id]); } + function insertComment($poll_id, $name, $comment) { + $prepared = $this->prepare('INSERT INTO comments (id_sondage, usercomment, comment) VALUES (?,?,?)'); + return $prepared->execute([$poll_id, $name, $comment]); + } + } diff --git a/app/classes/Framadate/Services/PollService.php b/app/classes/Framadate/Services/PollService.php index 51fa3e7b..d37272fc 100644 --- a/app/classes/Framadate/Services/PollService.php +++ b/app/classes/Framadate/Services/PollService.php @@ -39,6 +39,10 @@ class PollService { return $this->connect->insertVote($poll_id, $name, $choices); } + function addComment($poll_id, $name, $comment) { + return $this->connect->insertComment($poll_id, $name, $comment); + } + function computeBestMoments($votes) { $result = []; foreach ($votes as $vote) { diff --git a/studs.php b/studs.php index f2850be1..400cd7a6 100644 --- a/studs.php +++ b/studs.php @@ -18,13 +18,14 @@ */ use Framadate\Services\PollService; use Framadate\Services\InputService; -use Framadate\Utils; use Framadate\Message; +use Framadate\Utils; include_once __DIR__ . '/app/inc/init.php'; /* Variables */ /* --------- */ +$poll_id = null; $message = null; /* Services */ @@ -79,9 +80,9 @@ if (!empty($_POST['save'])) { // Save edition of an old vote // Update vote $result = $pollService->updateVote($poll_id, $editedVote, $choices); if ($result) { - $message = new Message('success', _('Update vote successfully!')); + $message = new Message('success', _('Update vote successfully.')); } else { - $message = new Message('danger', _('Update vote failed!')); + $message = new Message('danger', _('Update vote failed.')); } } } elseif (isset($_POST['save'])) { // Add a new vote @@ -99,13 +100,37 @@ if (!empty($_POST['save'])) { // Save edition of an old vote // Add vote $result = $pollService->addVote($poll_id, $name, $choices); if ($result) { - $message = new Message('success', _('Update vote successfully!')); + $message = new Message('success', _('Update vote successfully.')); } else { - $message = new Message('danger', _('Update vote failed!')); + $message = new Message('danger', _('Update vote failed.')); } } } +// ------------------------------- +// Add a comment +// ------------------------------- + +if (isset($_POST['add_comment'])) { + $name = filter_input(INPUT_POST, 'name', FILTER_VALIDATE_REGEXP, ['options'=>['regexp'=>'/^[a-z0-9_ -]+$/i']]); + $comment = filter_input(INPUT_POST, 'comment', FILTER_DEFAULT); + + if (empty($name)) { + $message = new Message('danger', _('Name is incorrect.')); + } + + if ($message == null) { + // Add comment + $result = $pollService->addComment($poll_id, $name, $comment); + if ($result) { + $message = new Message('success', _('Comment added.')); + } else { + $message = new Message('danger', _('Comment failed.')); + } + } + +} + // Retrieve data $slots = $pollService->allSlotsByPollId($poll_id); $votes = $pollService->allUserVotesByPollId($poll_id); diff --git a/tpl/studs.tpl b/tpl/studs.tpl index ef761359..dc7f0dcc 100644 --- a/tpl/studs.tpl +++ b/tpl/studs.tpl @@ -281,19 +281,24 @@ {* Add comment form *} <div class="hidden-print alert alert-info"> - <div class="col-md-6 col-md-offset-3"> - <fieldset id="add-comment"><legend>{_("Add a comment in the poll")}</legend> - <div class="form-group"> - <p><label for="commentuser">{_("Your name")}</label><input type=text class="form-control" name="commentuser" id="commentuser" /></p> - </div> - <div class="form-group"> - <p><label for="comment">{_("Your comment")}</label><br /> - <textarea name="comment" id="comment" class="form-control" rows="2" cols="40"></textarea></p> + <form action="{$poll_id|poll_url}#comments" method="POST"> + <div class="col-md-6 col-md-offset-3"> + <fieldset id="add-comment"><legend>{_("Add a comment to the poll")}</legend> + <div class="form-group"> + <label for="name" class="control-label">{_("Your name")}</label> + <input type="text" name="name" id="name" class="form-control" /> + </div> + <div class="form-group"> + <label for="comment" class="control-label">{_("Your comment")}</label> + <textarea name="comment" id="comment" class="form-control" rows="2" cols="40"></textarea> + </div> + <div class="pull-right"> + <input type="submit" name="add_comment" value="{_("Send the comment")}" class="btn btn-success"> + </div> + </fieldset> </div> - <p class="text-center"><input type="submit" name="ajoutcomment" value="{_("Send the comment")}" class="btn btn-success"></p> - </fieldset> - </div> - <div class="clearfix"></div> + <div class="clearfix"></div> + </form> </div> {/if} {/block} \ No newline at end of file -- GitLab