From 9bbdfffe26b7ddc6ce254d8427634d07ea5ccc12 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?N=C3=A9munaire?= Date: Tue, 19 Jun 2012 19:13:44 +0200 Subject: [PATCH 1/3] Can report a question --- Question.class.php | 11 ++++++++++- index.php | 8 ++++---- list.php | 12 ++++++++++-- report.php | 19 ++++++++++++++++--- 4 files changed, 40 insertions(+), 10 deletions(-) diff --git a/Question.class.php b/Question.class.php index beba19f..9ed303b 100644 --- a/Question.class.php +++ b/Question.class.php @@ -65,7 +65,11 @@ class Question public function get_writer() { - return User::getUser($this->writer); + $u = User::getUser($this->writer); + if (isset($u)) + return $u; + else + return User::getUser("nemubot"); } public function get_validator() @@ -140,6 +144,11 @@ class Question $this->reported = $reported; } + public function isReported() + { + return $this->reported; + } + public function getId() { return $this->id; diff --git a/index.php b/index.php index 15ce59d..cb2b92f 100644 --- a/index.php +++ b/index.php @@ -53,8 +53,8 @@

Confirmer votre question

- Une fois la question ajoutée, un email vous a été envoyé pour que - vous confirmiez qu'il s'agit bien de vous. Cliquez sur le lien + Une fois la question ajoutée, un email vous sera envoyé pour que + vous confirmiez qu'il s'agisse bien de vous. Cliquez sur le lien pour confirmer.

@@ -79,7 +79,7 @@ Ce champ est là à titre indicatif. Il va permettre à la personne qui valide votre question d'aller vérifier par lui même la véracité de votre réponse ; et il permet également de filtrer - les questions en fonction des matière que chacun souhaite réviser. + les questions en fonction des matières que chacun souhaite réviser.

@@ -100,7 +100,7 @@ foreach($cs as $c)

La question

- La question sera afficher sur 1 ligne. Donc pas la peine de + La question sera affichée sur une ligne. Donc pas la peine de faire de retour à la ligne.

diff --git a/list.php b/list.php index 63a888b..9d4ec7b 100644 --- a/list.php +++ b/list.php @@ -29,10 +29,11 @@ else Liste des questions non-validées :: + report">Liste des questions rapportées :: Liste des questions validées :.

-

Liste de toutes les questions validées

+

Liste de toutes les questions validées

@@ -54,7 +55,7 @@ foreach($file->get_questions() as $q) { if (!isset($_GET["valid"])) { - if ($q->isValidated()) + if ($q->isValidated() && !$q->isReported()) continue; } else @@ -63,6 +64,12 @@ foreach($file->get_questions() as $q) continue; } + if (isset($_GET["report"])) + { + if (!$q->isReported()) + continue; + } + if (!empty($filter) && $q->getCourse()->getCode() != $filter) continue; @@ -83,6 +90,7 @@ if (!empty($_SESSION["connected"])) + " action="report.php">"> diff --git a/report.php b/report.php index bc131ab..83dac50 100644 --- a/report.php +++ b/report.php @@ -5,26 +5,39 @@ include("Question.class.php"); include("QuestionsFile.class.php"); -if (isset($_POST['id'])) +session_start(); + +if (isset($_GET['id']) || (isset($_POST['id']) && !empty($_SESSION["connected"]))) { - $id = $_POST['id']; + if (isset($_POST['id']) && !empty($_SESSION["connected"])) + $id = $_POST['id']; + else + $id = $_GET['id']; + $file = new QuestionsFile("questions.xml"); foreach($file->get_questions() as $q) { if ($q->getReportId() == $id) { - $q->setReported(); + $qm = $file->get_question($q->getId()); + $qm->setReported(!(isset($_POST['id']) && !empty($_SESSION["connected"]))); $id = null; + $file->save(); break; } } if (isset($id)) echo 'La question n\'a pas été trouvée'; + else if (isset($_POST['id']) && !empty($_SESSION["connected"])) + echo 'Le signalement de la question a bien été retiré'; else echo 'La question a été rapporté avec succès'; } else +{ + echo "Aucun identifiant n'a été passé à la page"; header("Location: ./"); +} ?>

Nemubot vous remercie de l'aider à améliorer la qualité de sa base de données.

From 36a57c9bc051d909c1b86b64733488d5541eb8bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?N=C3=A9munaire?= Date: Tue, 19 Jun 2012 19:23:26 +0200 Subject: [PATCH 2/3] Fix subscription --- subscribeAction.php | 75 ++++++++++++++++++++---------------- subscriptionConfirmation.php | 10 +++-- 2 files changed, 47 insertions(+), 38 deletions(-) diff --git a/subscribeAction.php b/subscribeAction.php index 9e0aa9c..ada9e9c 100644 --- a/subscribeAction.php +++ b/subscribeAction.php @@ -2,45 +2,52 @@ include("User.class.php"); -$email = $_POST['email']; -$login = $_POST['login']; - -$user = User::new_User($email, $login); - -function mail_utf8($to, $subject = '(No subject)', - $message = '', $header = '') +if (count($_POST)) { - $header_ = 'MIME-Version: 1.0' . "\r\n" . - 'Content-type: text/plain; charset=UTF-8' . "\r\n"; - return (mail($to, '=?UTF-8?B?'.base64_encode($subject).'?=', - $message, $header_ . $header)); -} + $email = $_POST['email']; + $login = $_POST['login']; -$email = $_POST['email']; -echo $email; -$subject = "[Nemubot] Confirmation d'inscription"; -$headers = "From: Nemubot \n"; -$message = "Bonjour,\n" - ."Vous avez demandé à être ajouté à la liste des participants " - ."sur le site AskWeb.\n" - ."Si c'est le cas, vous pouvez cliquer sur le lien suivant " - ."pour confirmer :\n" + if (empty($email) || empty($login)) + die("Veuillez remplir tous les champs avant de valider le formulaire."); - . "http://".$_SERVER["SERVER_NAME"] - . dirname($_SERVER["REQUEST_URI"]) . "/subscribeConfirmation.php?id=" - . $user->getId(); + $user = User::new_User($email, $login); - ."\n\n Si ce n'est pas le cas, merci de supprimer cet email\n" - ."Cordialement,\n\n" - ."-- \nNemubot"; + function mail_utf8($to, $subject = '(No subject)', + $message = '', $header = '') + { + $header_ = 'MIME-Version: 1.0' . "\r\n" . + 'Content-type: text/plain; charset=UTF-8' . "\r\n"; + return (mail($to, '=?UTF-8?B?'.base64_encode($subject).'?=', + $message, $header_ . $header)); + } -if (mail_utf8($email, $subject, $message, $headers)) -{ - echo "email sent"; + $email = $_POST['email']; + echo $email; + $subject = "[Nemubot] Confirmation d'inscription"; + $headers = "From: Nemubot \n"; + $message = "Bonjour,\n" + ."Vous avez demandé à être ajouté à la liste des participants " + ."sur le site AskWeb.\n" + ."Si c'est le cas, vous pouvez cliquer sur le lien suivant " + ."pour confirmer :\n" + + . "http://".$_SERVER["SERVER_NAME"] + . dirname($_SERVER["REQUEST_URI"]) . "/subscribeConfirmation.php?id=" + . $user->getId() + + ."\n\n Si ce n'est pas le cas, merci de supprimer cet email\n" + ."Cordialement,\n\n" + ."-- \nNemubot"; + + if (mail_utf8($email, $subject, $message, $headers)) + { + echo "Un courrier électronique vient de vous être envoyé"; + } + else + { + echo "Une erreur est survenue lors de l'envoi du courriel. Veuillez contacter l'administrateur"; + } } else -{ - echo "ERROR"; -} - + header("Location: ./"); ?> diff --git a/subscriptionConfirmation.php b/subscriptionConfirmation.php index 36648b1..3b4cf19 100644 --- a/subscriptionConfirmation.php +++ b/subscriptionConfirmation.php @@ -2,13 +2,15 @@ include("User.class.php"); -$user = User::getUser($_GET['id']); +$users = User::getUsers(); -if ($user == null) - echo "Cet utilisateur n'existe pas" +if (in_array($_GET['id'], $users)) +{ + echo "Cet utilisateur n'existe pas"; +} else { - $user->set_validated(true); + $users[$_GET['id']]->set_validated(true); echo "Utilisateur confirmé !" } From a74e9778d5a66b09ad8ce4df64e3f5e5b1a37906 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?N=C3=A9munaire?= Date: Tue, 19 Jun 2012 19:35:40 +0200 Subject: [PATCH 3/3] Add some checks before adding the user in the base --- subscribeAction.php | 13 +++++++++++-- subscriptionConfirmation.php | 6 +++--- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/subscribeAction.php b/subscribeAction.php index ada9e9c..45c5848 100644 --- a/subscribeAction.php +++ b/subscribeAction.php @@ -10,8 +10,16 @@ if (count($_POST)) if (empty($email) || empty($login)) die("Veuillez remplir tous les champs avant de valider le formulaire."); + if (!preg_match("#^.+@[a-zA-Z0-9\._-]+\.[a-zA-Z]{2,5}$#", $email)) + die("Votre adresse électronique ne semble pas valide."); + + $us = User::getUsers(); + $user = User::new_User($email, $login); + if (array_key_exists($user->getId(), $us)) + die("Un utilisateur avec la même adresse électronique existe déjà."); + function mail_utf8($to, $subject = '(No subject)', $message = '', $header = '') { @@ -22,7 +30,6 @@ if (count($_POST)) } $email = $_POST['email']; - echo $email; $subject = "[Nemubot] Confirmation d'inscription"; $headers = "From: Nemubot \n"; $message = "Bonjour,\n" @@ -32,7 +39,7 @@ if (count($_POST)) ."pour confirmer :\n" . "http://".$_SERVER["SERVER_NAME"] - . dirname($_SERVER["REQUEST_URI"]) . "/subscribeConfirmation.php?id=" + . dirname($_SERVER["REQUEST_URI"]) . "/subscriptionConfirmation.php?id=" . $user->getId() ."\n\n Si ce n'est pas le cas, merci de supprimer cet email\n" @@ -41,6 +48,8 @@ if (count($_POST)) if (mail_utf8($email, $subject, $message, $headers)) { + $us[] = $user; + User::setUsers($us); echo "Un courrier électronique vient de vous être envoyé"; } else diff --git a/subscriptionConfirmation.php b/subscriptionConfirmation.php index 3b4cf19..98ec21e 100644 --- a/subscriptionConfirmation.php +++ b/subscriptionConfirmation.php @@ -4,14 +4,14 @@ include("User.class.php"); $users = User::getUsers(); -if (in_array($_GET['id'], $users)) +if (!array_key_exists($_GET['id'], $users)) { - echo "Cet utilisateur n'existe pas"; + echo "Cet utilisateur n'existe pas !"; } else { $users[$_GET['id']]->set_validated(true); - echo "Utilisateur confirmé !" + echo "Utilisateur confirmé !"; } ?>