moodle/mod/quiz/question.php
moodler 01d11b97d9 No checking is now done on question name and question text.
If question name is empty, then it's assigned to be same as the question text.

The question text can now be empty if people want that.
2004-08-05 05:31:40 +00:00

168 lines
5.6 KiB
PHP

<?PHP // $Id$
/// For creating and editing quiz questions.
require_once("../../config.php");
require_once("lib.php");
require_once("../../files/mimetypes.php");
optional_variable($id); // question id
optional_variable($qtype);
optional_variable($category);
if ($id) {
if (! $question = get_record("quiz_questions", "id", $id)) {
error("This question doesn't exist");
}
if (!empty($category)) {
$question->category = $category;
}
if (! $category = get_record("quiz_categories", "id", $question->category)) {
error("This question doesn't belong to a valid category!");
}
if (! $course = get_record("course", "id", $category->course)) {
error("This question category doesn't belong to a valid course!");
}
$qtype = $question->qtype;
} else if ($category) {
if (! $category = get_record("quiz_categories", "id", $category)) {
error("This wasn't a valid category!");
}
if (! $course = get_record("course", "id", $category->course)) {
error("This category doesn't belong to a valid course!");
}
$question->category = $category->id;
$question->qtype = $qtype;
} else {
error("Must specify question id or category");
}
if (empty($qtype)) {
error("No question type was specified!");
} else if (!isset($QUIZ_QTYPES[$qtype])) {
error("Could not find question type: '$qtype'");
}
require_login($course->id);
if (!isteacheredit($course->id)) {
error("You can't modify these questions!");
}
$strquizzes = get_string('modulenameplural', 'quiz');
$streditingquiz = get_string(isset($SESSION->modform->instance) ? "editingquiz" : "editquestions", "quiz");
$streditingquestion = get_string("editingquestion", "quiz");
print_header("$course->shortname: $streditingquestion", "$course->shortname: $streditingquestion",
"<a href=\"$CFG->wwwroot/course/view.php?id=$course->id\">$course->shortname</a> ".
"-> <a href=\"$CFG->wwwroot/mod/quiz/index.php?id=$course->id\">$strquizzes</a>".
" -> <a href=\"edit.php\">$streditingquiz</a> -> $streditingquestion");
if (isset($delete)) {
if (isset($confirm)) {
if ($confirm == md5($delete)) {
if (!delete_records("quiz_questions", "id", $question->id)) {
error("An error occurred trying to delete question (id $question->id)");
}
redirect("edit.php");
} else {
error("Confirmation string was incorrect");
}
} else {
if ($category->publish) {
$quizzes = get_records("quiz");
} else {
$quizzes = get_records("quiz", "course", $course->id);
}
$beingused = array();
if ($quizzes) {
foreach ($quizzes as $quiz) {
$qqq = explode(",", $quiz->questions);
foreach ($qqq as $key => $value) {
if ($value == $delete) {
$beingused[] = $quiz->name;
}
}
}
}
if ($beingused) {
$beingused = implode(", ", $beingused);
$beingused = get_string("questioninuse", "quiz", "<I>$question->name</I>")."<P>".$beingused;
notice($beingused, "edit.php");
} else {
notice_yesno(get_string("deletequestioncheck", "quiz", $question->name),
"question.php?id=$question->id&delete=$delete&confirm=".md5($delete), "edit.php");
}
print_footer($course);
exit;
}
}
if ($form = data_submitted()) {
$question = $QUIZ_QTYPES[$qtype]->save_question($question, $form, $course);
}
$grades = array(1,0.9,0.8,0.75,0.70,0.66666,0.60,0.50,0.40,0.33333,0.30,0.25,0.20,0.16666,0.10,0.05,0);
foreach ($grades as $grade) {
$percentage = 100 * $grade;
$neggrade = -$grade;
$gradeoptions["$grade"] = "$percentage %";
$gradeoptionsfull["$grade"] = "$percentage %";
$gradeoptionsfull["$neggrade"] = -$percentage." %";
}
$gradeoptionsfull["0"] = $gradeoptions["0"] = get_string("none");
arsort($gradeoptions, SORT_NUMERIC);
arsort($gradeoptionsfull, SORT_NUMERIC);
if (!$categories = quiz_get_category_menu($course->id, true)) {
error("No categories!");
}
make_upload_directory("$course->id"); // Just in case
$coursefiles = get_directory_list("$CFG->dataroot/$course->id", $CFG->moddata);
foreach ($coursefiles as $filename) {
if (mimeinfo("icon", $filename) == "image.gif") {
$images["$filename"] = $filename;
}
}
// Print the question editing form
if (empty($question->id)) {
$question->id = "";
}
if (empty($question->name)) {
$question->name = "";
}
if (empty($question->questiontext)) {
$question->questiontext = "";
}
if (empty($question->image)) {
$question->image = "";
}
// Set up some Richtext editing if necessary
if ($usehtmleditor = can_use_richtext_editor()) {
$defaultformat = FORMAT_HTML;
} else {
$defaultformat = FORMAT_MOODLE;
}
require('questiontypes/'.$QUIZ_QTYPES[$qtype]->name().'/editquestion.php');
if ($usehtmleditor) {
use_html_editor('questiontext');
}
print_footer($course);
?>