diff --git a/mod/quiz/export.php b/mod/quiz/export.php deleted file mode 100644 index 7866808ba62..00000000000 --- a/mod/quiz/export.php +++ /dev/null @@ -1,195 +0,0 @@ -libdir.'/questionlib.php'); - - $categoryid = optional_param('category',0, PARAM_INT); - $courseid = required_param('courseid',PARAM_INT); - $format = optional_param('format','', PARAM_CLEANFILE ); - $exportfilename = optional_param('exportfilename','',PARAM_CLEANFILE ); - - if (! $course = get_record("course", "id", $courseid)) { - error("Course does not exist!"); - } - - if (!$categoryid) { // need to get category from modform - $showcatmenu = true; // will ensure that user can choose category - if (isset($SESSION->modform)) { - $categoryid = $SESSION->modform->category; - } - } - - if (! $category = get_record("quiz_categories", "id", $categoryid)) { - $category = quiz_get_default_category($courseid); - } - - if (! $categorycourse = get_record("course", "id", $category->course)) { - error("This category doesn't belong to a valid course!"); - } - - require_login($course->id, false); - - if (!isteacher($course->id)) { - error("Only the teacher can export quiz questions!"); - } - - // ensure the files area exists for this course - make_upload_directory( "$course->id" ); - - $strexportquestions = get_string("exportquestions", "quiz"); - $strquestions = get_string("questions", "quiz"); - - $strquizzes = get_string('modulenameplural', 'quiz'); - $streditingquiz = get_string(isset($SESSION->modform->instance) ? "editingquiz" : "editquestions", "quiz"); - - $dirname = get_string("exportfilename","quiz"); - - /// Header: - - if (isset($SESSION->modform->instance) and $quiz = get_record('quiz', 'id', $SESSION->modform->instance)) { - $strupdatemodule = isteacheredit($course->id) - ? update_module_button($SESSION->modform->cmid, $course->id, get_string('modulename', 'quiz')) - : ""; - print_header_simple($strexportquestions, '', - "id\">".get_string('modulenameplural', 'quiz').''. - " -> id\">".format_string($quiz->name).''. - ' -> '.$strexportquestions, - "", "", true, $strupdatemodule); - $currenttab = 'edit'; - $mode = 'export'; - include('tabs.php'); - } else { - print_header_simple($strexportquestions, '', - ''.get_string('editquestions', 'quiz').''. - ' -> '.$strexportquestions); - } - - if (!empty($format)) { /// Filename - - if (!confirm_sesskey()) { - echo( 'Sesskey error' ); - } - - if (! is_readable("format/$format/format.php")) { - error('Format not known ('.clean_text($form->format).')'); - } - - require("format.php"); // Parent class - require("format/$format/format.php"); - - $classname = "quiz_format_$format"; - $quiz_format = new $classname(); - - if (! $quiz_format->exportpreprocess($category, $course)) { // Do anything before that we need to - error("Error occurred during pre-processing!", - "$CFG->wwwroot/mod/quiz/export.php?category=$category->id"); - } - - if (! $quiz_format->exportprocess($exportfilename)) { // Process the export data - error("Error occurred during processing!", - "$CFG->wwwroot/mod/quiz/export.php?category=$category->id"); - } - - if (! $quiz_format->exportpostprocess()) { // In case anything needs to be done after - error("Error occurred during post-processing!", - "$CFG->wwwroot/mod/quiz/export.php?category=$category->id"); - } - echo "
$count. ".stripslashes($question->questiontext)."
"; - - $question->category = $this->category->id; - $question->stamp = make_unique_id_code(); // Set the unique code (not to be changed) - $question->version = 1; // Original version of this question - - if (!$question->id = insert_record("quiz_questions", $question)) { - error("Could not insert new question!"); - } - - $this->questionids[] = $question->id; - - // Now to save all the answers and type-specific options - - global $QTYPES; - $result = $QTYPES[$question->qtype] - ->save_question_options($question); - - if (!empty($result->error)) { - notify($result->error); - return false; - } - - if (!empty($result->notice)) { - notify($result->notice); - return true; - } - } - return true; - } - - - function readdata($filename) { - /// Returns complete file with an array, one item per line - - if (is_readable($filename)) { - $filearray = file($filename); - - /// Check for Macintosh OS line returns (ie file on one line), and fix - if (ereg("\r", $filearray[0]) AND !ereg("\n", $filearray[0])) { - return explode("\r", $filearray[0]); - } else { - return $filearray; - } - } - return false; - } - - function readquestions($lines) { - /// Parses an array of lines into an array of questions, - /// where each item is a question object as defined by - /// readquestion(). Questions are defined as anything - /// between blank lines. - - $questions = array(); - $currentquestion = array(); - - foreach ($lines as $line) { - $line = trim($line); - if (empty($line)) { - if (!empty($currentquestion)) { - if ($question = $this->readquestion($currentquestion)) { - $questions[] = $question; - } - $currentquestion = array(); - } - } else { - $currentquestion[] = $line; - } - } - - if (!empty($currentquestion)) { // There may be a final question - if ($question = $this->readquestion($currentquestion)) { - $questions[] = $question; - } - } - - return $questions; - } - - - function defaultquestion() { - // returns an "empty" question - // Somewhere to specify question parameters that are not handled - // by import but are required db fields. - // This should not be overridden. - $question = new stdClass(); - $question->shuffleanswers = 0; - $question->defaultgrade = 1; - $question->image = ""; - $question->usecase = 0; - $question->multiplier = array(); - - return $question; - } - - function readquestion($lines) { - /// Given an array of lines known to define a question in - /// this format, this function converts it into a question - /// object suitable for processing and insertion into Moodle. - - echo "This quiz format has not yet been completed!
"; - - return NULL; - } - - - function importpostprocess() { - /// Does any post-processing that may be desired - /// Argument is a simple array of question ids that - /// have just been added. - - return true; - } - -// Export functions - - - function export_file_extension() { - /// return the files extension appropriate for this type - /// override if you don't want .txt - - return ".txt"; - } - - function exportpreprocess($category, $course) { - /// Does any pre-processing that may be desired - - $this->category = $category; // Important - $this->course = $course; // As is this! - - return true; - } - - function presave_process( $content ) { - /// enables any processing to be done on the content - /// just prior to the file being saved - /// default is to do nothing - - return $content; - } - - function exportprocess($filename) { - /// Exports a given category. There's probably little need to change this - - global $CFG; - - // create a directory for the exports (if not already existing) - $dirname = get_string("exportfilename","quiz"); - $courseid = $this->course->id; - $path = $CFG->dataroot.'/'.$courseid.'/'.$dirname; - if (!is_dir($path)) { - if (!mkdir($path, $CFG->directorypermissions)) { - error("Cannot create path: $path"); - } - } - - // get the questions (from database) in this category - // only get q's with no parents (no cloze subquestions specifically) - $questions = get_questions_category( $this->category, true ); - - notify("Exporting questions."); - if (!count($questions)) { - return true; - } - $count = 0; - - // results are first written into string (and then to a file) - // so create/initialize the string here - $expout = ""; - - // iterate through questions - foreach($questions as $question) { - $count++; - $qtype = $question->qtype; - // ignore random questiond - if ($qtype!=RANDOM) { - echo "$count. ".stripslashes($question->questiontext)."
"; - $expout .= $this->writequestion( $question ) . "\n"; - } - } - - // final pre-process on exported data - $expout = $this->presave_process( $expout ); - - // write file - $filepath = $path."/".$filename . $this->export_file_extension(); - if (!$fh=fopen($filepath,"w")) { - error("Cannot open for writing: $filepath"); - } - if (!fwrite($fh, $expout)) { - error("Cannot write exported questions to $filepath"); - } - fclose($fh); - - return true; - } - - function exportpostprocess() { - /// Does any post-processing that may be desired - - return true; - } - - function writequestion($question) { - /// Turns a question object into textual output in the given format - /// must be overidden - - echo "This quiz format has not yet been completed!
"; - - return NULL; - } - -} - -?> diff --git a/mod/quiz/import.php b/mod/quiz/import.php deleted file mode 100644 index 15c850f35e0..00000000000 --- a/mod/quiz/import.php +++ /dev/null @@ -1,202 +0,0 @@ -libdir.'/questionlib.php'); - - $categoryid = optional_param('category', 0, PARAM_INT); - $courseid = optional_param('course', 0, PARAM_INT); - $format = optional_param('format','',PARAM_CLEANFILE); - - if (!$categoryid) { // try to get category from modform - $showcatmenu = true; // will ensure that user can choose category - if (isset($SESSION->modform)) { - $categoryid = $SESSION->modform->category; - } - } - - if (! $category = get_record("quiz_categories", "id", $categoryid)) { - // if no valid category was given, use the default category - if ($courseid) { - $category = quiz_get_default_category($courseid); - } else { - error("No category specified"); - } - } - - if (!$courseid) { // need to get the course from the chosen category - $courseid = $category->course; - } - - if (! $course = get_record("course", "id", $courseid)) { - error("Invalid course!"); - } - - require_login($course->id, false); - - if (!isteacheredit($course->id)) { - error("Only editing teachers can import quiz questions!"); - } - - // ensure the files area exists for this course - make_upload_directory( "$course->id" ); - - $strimportquestions = get_string("importquestions", "quiz"); - $strquestions = get_string("questions", "quiz"); - - $strquizzes = get_string('modulenameplural', 'quiz'); - $streditingquiz = get_string(isset($SESSION->modform->instance) ? "editingquiz" : "editquestions", "quiz"); - - - /// Header: - - if (isset($SESSION->modform->instance) and $quiz = get_record('quiz', 'id', $SESSION->modform->instance)) { - $strupdatemodule = isteacheredit($course->id) - ? update_module_button($SESSION->modform->cmid, $course->id, get_string('modulename', 'quiz')) - : ""; - print_header_simple($strimportquestions, '', - "id\">".get_string('modulenameplural', 'quiz').''. - " -> id\">".format_string($quiz->name).''. - ' -> '.$strimportquestions, - "", "", true, $strupdatemodule); - $currenttab = 'edit'; - $mode = 'import'; - include('tabs.php'); - } else { - print_header_simple($strimportquestions, '', - "id\">".get_string('modulenameplural', 'quiz').''. - '-> '.get_string('editquestions', 'quiz').''. - ' -> '.$strimportquestions); - } - - - if (!empty($format)) { /// Filename - - if (!confirm_sesskey()) { - error( 'sesskey error' ); - } - - if (empty($_FILES['newfile'])) { // file was just uploaded - notify(get_string("uploadproblem") ); - } - - if ((!is_uploaded_file($_FILES['newfile']['tmp_name']) or $_FILES['newfile']['size'] == 0)) { - notify(get_string("uploadnofilefound") ); - - } else { // Valid file is found - - if (! is_readable("format/$format/format.php")) { - error("Format not known ($format)"); - } - - require("format.php"); // Parent class - require("format/$format/format.php"); - - $classname = "quiz_format_$format"; - $quiz_format = new $classname(); - - if (! $quiz_format->importpreprocess($category,$course)) { // Do anything before that we need to - error("Error occurred during pre-processing!", - "$CFG->wwwroot/mod/quiz/import.php?category=$category->id"); - } - - if (! $quiz_format->importprocess($_FILES['newfile']['tmp_name'])) { // Process the uploaded file - error("Error occurred during processing!", - "$CFG->wwwroot/mod/quiz/import.php?category=$category->id"); - } - - if (! $quiz_format->importpostprocess()) { // In case anything needs to be done after - error("Error occurred during post-processing!", - "$CFG->wwwroot/mod/quiz/import.php?category=$category->id"); - } - - echo "