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 "
"; - - // link to download the finished file - $file_ext = $quiz_format->export_file_extension(); - $download_str = get_string( 'download', 'quiz' ); - $downloadextra_str = get_string( 'downloadextra','quiz' ); - if ($CFG->slasharguments) { - $efile = "{$CFG->wwwroot}/file.php/$course->id/quiz/$exportfilename".$file_ext; - } - else { - $efile = "{$CFG->wwwroot}/file.php?file=/$course->id/quiz/$exportfilename".$file_ext; - } - $efile .= "?forcedownload=1"; - echo "

$download_str

"; - echo "

$downloadextra_str

"; - - print_continue("edit.php"); - print_footer($course); - exit; - } - - /// Print upload form - - // get valid formats to generate dropdown list - $fileformatnames = get_import_export_formats( "export" ); - - // get filename - if (empty($exportfilename)) { - $exportfilename = default_export_filename($course, $category); - } - - /// Get all the existing categories now - if (!$categories = get_records_select("quiz_categories", "course = '{$course->id}' OR publish = '1'", "parent, sortorder, name ASC")) { - error("Could not find any question categories!"); - } - $categories = add_indented_names($categories); - foreach ($categories as $key => $cat) { - if ($catcourse = get_record("course", "id", $cat->course)) { - if ($cat->publish && $cat->course != $course->id) { - $cat->indentedname .= " ($catcourse->shortname)"; - } - $catmenu[$cat->id] = $cat->indentedname; - } - } - - print_heading_with_help($strexportquestions, "export", "quiz"); - - print_simple_box_start("center"); - echo "
\n"; - echo "\n"; - echo "\n"; - - echo "\n"; - - echo "\n"; - - echo "\n"; - - echo "\n"; - - echo "
\n"; - print_string("category", "quiz"); - echo ":"; - if (!$showcatmenu) { // category already specified - echo quiz_get_category_coursename($category); - echo " id\" />"; - } else { // no category specified, let user choose - choose_from_menu($catmenu, "category", $category->id, ""); - } - //echo str_replace(' ', '', $category->name) . " ($categorycourse->shortname)"; - echo "
"; - print_string("fileformat", "quiz"); - echo ":"; - choose_from_menu($fileformatnames, "format", "gift", ""); - helpbutton("export", $strexportquestions, "quiz"); - echo "
"; - print_string("exportname", "quiz" ); - echo ":"; - echo ""; - echo "
"; - echo " id\" />"; - echo " "; - echo "
\n"; - echo "
\n"; - print_simple_box_end(); - - print_footer($course); - -?> diff --git a/mod/quiz/format.php b/mod/quiz/format.php deleted file mode 100644 index 94d48d2865d..00000000000 --- a/mod/quiz/format.php +++ /dev/null @@ -1,275 +0,0 @@ -category = $category; // Important - $this->course = $course; - - return true; - } - - function importprocess($filename) { - /// Processes a given file. There's probably little need to change this - - if (! $lines = $this->readdata($filename)) { - notify("File could not be read, or was empty"); - return false; - } - - if (! $questions = $this->readquestions($lines)) { // Extract all the questions - notify("There are no questions in this file!"); - return false; - } - - notify("Importing ".count($questions)." questions"); - - $count = 0; - - foreach ($questions as $question) { // Process and store each question - $count++; - - 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 "
"; - print_continue("edit.php"); - print_footer($course); - exit; - } - } - - /// Print upload form - - // get list of available import formats - $fileformatnames = get_import_export_formats( 'import' ); - - print_heading_with_help($strimportquestions, "import", "quiz"); - - /// Get all the existing categories now - if (isadmin()) { // the admin can import into all categories - if (!$categories = get_records_select("quiz_categories", "course = '{$course->id}' OR publish = '1'", "parent, sortorder, name ASC")) { - error("Could not find any question categories!"); // Something is really wrong - } - } else { // select only the categories to which the teacher has write access - $sql = "SELECT c.* - FROM {$CFG->prefix}quiz_categories AS c, - {$CFG->prefix}user_teachers AS t - WHERE t.userid = '$USER->id' - AND t.course = c.course - AND (c.course = '$course->id' - OR (c.publish = '1' AND t.editall = '1')) - ORDER BY c.parent ASC, c.sortorder ASC, c.name ASC"; - if (!$categories = get_records_sql($sql)) { - error("Could not find any question categories!"); - } - } - $categories = add_indented_names($categories); - foreach ($categories as $key => $cat) { - if ($catcourse = get_record("course", "id", $cat->course)) { - if ($cat->publish && $cat->course != $course->id) { - $cat->indentedname .= " ($catcourse->shortname)"; - } - $catmenu[$cat->id] = $cat->indentedname; - } - } - - print_simple_box_start("center"); - echo "
\n"; - echo "\n"; - echo "\n"; - - echo "\n"; - - echo "\n"; - - echo "\n"; - - echo "
"; - print_string("category", "quiz"); - echo ":"; - if (!showcatmenu) { // category already specified - echo quiz_get_category_coursename($category); - echo " id\" />"; - } else { // no category specified, let user choose - choose_from_menu($catmenu, "category", $category->id, ""); - } - echo "
"; - print_string("fileformat", "quiz"); - echo ":"; - choose_from_menu($fileformatnames, "format", "gift", ""); - helpbutton("import", $strimportquestions, "quiz"); - echo "
"; - print_string("upload"); - echo ":"; - require_once($CFG->dirroot.'/lib/uploadlib.php'); - upload_print_form_fragment(1,array('newfile'),null,false,null,$course->maxbytes,0,false); - echo "
 "; - echo " "; - echo "
\n"; - echo "
\n"; - print_simple_box_end(); - - print_footer($course); - -?>