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
Filter par code de cours :
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"]))
+
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é !";
}
?>