Add classes to abstract Users and Courses
Can refuse a question (email the author) Can modify question before validation
This commit is contained in:
parent
6e9554e2f2
commit
42fec70edf
14 changed files with 667 additions and 401 deletions
140
questions.php
140
questions.php
|
|
@ -1,51 +1,45 @@
|
|||
<!DOCTYPE html>
|
||||
|
||||
<?php
|
||||
|
||||
//error_reporting(E_ALL);
|
||||
define("FILENAME", "questions_file.nemubot");
|
||||
|
||||
define("FILENAME", "questions.xml");
|
||||
|
||||
include("User.class.php");
|
||||
include("Course.class.php");
|
||||
include("Question.class.php");
|
||||
include("QuestionsFile.class.php");
|
||||
|
||||
function isInList($mail)
|
||||
function isInUsersList($mail)
|
||||
{
|
||||
$file = fopen('email.txt', 'r');
|
||||
$number = fgets($file);
|
||||
$i = 0;
|
||||
$file_mail = fgets($file);
|
||||
$us = User::getUsers();
|
||||
|
||||
while ($i < $number)
|
||||
foreach($us as $u)
|
||||
{
|
||||
if (trim($mail) == trim($file_mail))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
$file_mail = fgets($file);
|
||||
$i++;
|
||||
if ($u->getEmail() == $mail && $u->isValidated())
|
||||
return $u;
|
||||
}
|
||||
|
||||
return false;
|
||||
return false;
|
||||
}
|
||||
|
||||
function isInCoursesList($course)
|
||||
{
|
||||
return Course::getCourse($course);
|
||||
}
|
||||
|
||||
// Change this variable depending on the server
|
||||
$confirmationAddress = "confirmation.php?id=";
|
||||
|
||||
if (isset ($_POST['send']))
|
||||
if (isset($_POST['send']))
|
||||
{
|
||||
//Gets parameters: course, question and answers
|
||||
$course = "";
|
||||
$question = $_POST["question"];
|
||||
$answers = array();
|
||||
|
||||
foreach ($_POST as $key => $value)
|
||||
{
|
||||
if ($key == "question")
|
||||
$question = $value;
|
||||
else if ($key == "course")
|
||||
$course = $value;
|
||||
else if (preg_match("#^answer#", $key) && $key != "")
|
||||
$answers[] = $value;
|
||||
if (preg_match("#^answer[0-9]+$#", $key))
|
||||
if (!empty($value))
|
||||
$answers[] = $value;
|
||||
}
|
||||
|
||||
//Check we have at least a question and an answer
|
||||
|
|
@ -53,76 +47,68 @@ if (isset ($_POST['send']))
|
|||
die("Veuillez indiquer une question !");
|
||||
else if (count($answers) <= 0)
|
||||
die("Veuillez indiquer au moins une réponse correcte !");
|
||||
else if (count($_POST['email']) <= 0 || !isInList($_POST['email']))
|
||||
die("Veuillez indiquer une adresse mail valide");
|
||||
else if (empty($_POST["email"]) || ($usr = isInUsersList($_POST["email"])) == null)
|
||||
die("Veuillez indiquer une adresse électronique valide !");
|
||||
else if (empty($_POST["course"]) || ($course = isInCoursesList($_POST["course"])) == null)
|
||||
die("Veuillez indiquer un cours valide !");
|
||||
else
|
||||
{
|
||||
$quest = Question::new_Question($question, $answers, $course);
|
||||
$quest->set_validator($_POST['email']);
|
||||
if (!empty($_POST["id"]))
|
||||
{
|
||||
$file = new QuestionsFile("questions.xml");
|
||||
$quest = $file->get_question($_POST["id"]);
|
||||
|
||||
$quest->setQuestion($question);
|
||||
$quest->setAnswer($answers);
|
||||
$quest->setCourse($course);
|
||||
}
|
||||
else
|
||||
{
|
||||
$quest = Question::new_Question($question, $answers, $course->getId());
|
||||
|
||||
$file = new QuestionsFile('questions.xml');
|
||||
$file->add_question($quest);
|
||||
}
|
||||
$quest->set_writer($usr);
|
||||
$quest->set_validator($usr);
|
||||
|
||||
// @TODO: Create/Load a QuestionFile and add the question (it must be unique)
|
||||
$file = new QuestionsFile('questions.xml');
|
||||
$file->add_question($quest);
|
||||
$file->save();
|
||||
|
||||
// @TODO: Find a validator (from the list of previous senders for example?)
|
||||
|
||||
// @TODO: Update the question and save the file
|
||||
|
||||
// @TODO: Send mail to the selected validator
|
||||
|
||||
// Get an email from the list
|
||||
|
||||
/* This code works, perhaps should be placed in a method in Question class?*/
|
||||
$to = $_POST['email'];
|
||||
//Send confirmation to sender
|
||||
$subject = "[Nemubot] Confirmation d'une question";
|
||||
$headers = "From: Nemubot <bot@nemunai.re>";
|
||||
$message = "Bonjour,\n"
|
||||
."Une nouvelle question a été proposée à Nemubot en utilisant
|
||||
cette adresse email.\n\n"
|
||||
."Une nouvelle question a été proposée à Nemubot en utilisant cette \n"
|
||||
."adresse email.\n\n"
|
||||
|
||||
."Rappels de la questions:\n"
|
||||
.'Cours concerné : ' . $course . "\n"
|
||||
.'La question est : ' . $question . "\n"
|
||||
.'Les réponses sont : ' . print_r($answers, true) . "\n"
|
||||
."Rappel de la question :\n"
|
||||
." - Cours concerné : " . $course->getName() . "\n"
|
||||
." - Question posée : " . $question . "\n"
|
||||
." - Les réponses valides sont :\n".$quest->getAnswersMail()."\n"
|
||||
|
||||
."Si vous avez effectivement posé cette question, merci "
|
||||
."de cliquer sur le lien ci-dessous pour confirmer.\n"
|
||||
."Si vous ne comprenez rien à cet email ou que vous n'avez pas "
|
||||
."posté de nouvelles questions, vous pouvez supprimer ce message.\n\n"
|
||||
."Si vous avez effectivement posé cette question, merci de cliquer sur \n"
|
||||
."le lien ci-dessous pour confirmer.\n"
|
||||
."Si vous ne comprenez rien à cet email ou que vous n'avez pas posté de \n"
|
||||
."nouvelles questions, vous pouvez supprimer ce message.\n\n"
|
||||
|
||||
."Adresse de confirmation de la question:\n"
|
||||
. "http://".$_SERVER["SERVER_NAME"]
|
||||
. dirname($_SERVER["REQUEST_URI"])."/changeQuestion.php?id="
|
||||
. $quest->getId()
|
||||
."Adresse de confirmation de la question :\n"
|
||||
."http://".$_SERVER["SERVER_NAME"].dirname($_SERVER["REQUEST_URI"])
|
||||
."changeQuestion.php?id=".$quest->getId()
|
||||
|
||||
. "\n\n Merci beaucoup de votre participation\n"
|
||||
. "\n\nMerci beaucoup de votre participation.\n"
|
||||
."Cordialement,\n"
|
||||
|
||||
."-- \nNemubot.";
|
||||
;
|
||||
."-- \nNemubot\nQCM accessible sur le réseau IRC rezosup, cannal #epita-qcm";
|
||||
|
||||
|
||||
if ($quest->mail_utf8($to, $subject, $message, $headers))
|
||||
{
|
||||
echo ("Email sent");
|
||||
}
|
||||
if (!empty($_POST["id"]))
|
||||
header("Location: ./changeQuestion.php?id=".$quest->getId());
|
||||
else if ($quest->mail_utf8($usr->getEmail(), $subject, $message, $headers))
|
||||
header("Location: ./thanks.php?id=" . $quest->getId());
|
||||
else
|
||||
echo ("Error with the email");
|
||||
//*/
|
||||
echo ("Une erreur s'est produite lors de l'envoi du courrier de confirmation. Veuillez contacter l'administrateur du service.");
|
||||
}
|
||||
header("Location: ./thanks.php?id=" . $quest->getId());
|
||||
}
|
||||
else
|
||||
header("Location: ./");
|
||||
|
||||
?>
|
||||
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf8" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
</body>
|
||||
</html>
|
||||
Reference in a new issue