libdir . '/uploadlib.php'); require_once($CFG->libdir . '/questionlib.php'); list($thispageurl, $courseid, $cmid, $cm, $module, $pagevars) = question_edit_setup(false, false); // get parameters $params = new stdClass; $params->choosefile = optional_param('choosefile','',PARAM_PATH); $catfromfile = optional_param('catfromfile', 0, PARAM_BOOL ); $format = optional_param('format','',PARAM_FILE); $params->matchgrades = optional_param('matchgrades','',PARAM_ALPHA); $params->stoponerror = optional_param('stoponerror', 0, PARAM_BOOL); $params->category = optional_param( 'category', 0, PARAM_INT ); // get display strings $txt = new stdClass(); $txt->category = get_string('category','quiz'); $txt->choosefile = get_string('choosefile','quiz'); $txt->file = get_string('file'); $txt->fileformat = get_string('fileformat','quiz'); $txt->fromfile = get_string('fromfile','quiz'); $txt->importcategory = get_string('importcategory','quiz'); $txt->importerror = get_string('importerror','quiz'); $txt->importfilearea = get_string('importfilearea','quiz'); $txt->importfileupload = get_string('importfileupload','quiz'); $txt->importfromthisfile = get_string('importfromthisfile','quiz'); $txt->importquestions = get_string("importquestions", "quiz"); $txt->matchgrades = get_string('matchgrades','quiz'); $txt->matchgradeserror = get_string('matchgradeserror','quiz'); $txt->matchgradesnearest = get_string('matchgradesnearest','quiz'); $txt->modulename = get_string('modulename','quiz'); $txt->modulenameplural = get_string('modulenameplural','quiz'); $txt->onlyteachersimport = get_string('onlyteachersimport','quiz'); $txt->questions = get_string("questions", "quiz"); $txt->quizzes = get_string('modulenameplural', 'quiz'); $txt->stoponerror = get_string('stoponerror', 'quiz'); $txt->upload = get_string('upload'); $txt->uploadproblem = get_string('uploadproblem'); $txt->uploadthisfile = get_string('uploadthisfile'); // matching options $matchgrades = array(); $matchgrades['error'] = $txt->matchgradeserror; $matchgrades['nearest'] = $txt->matchgradesnearest; // not sure where $pagevars['cat'] comes from, but it doesn't respect // the user's choice on the form - so this bodge if (empty($params->category)) { $params->category = $pagevars['cat']; } if (!$category = get_record("question_categories", "id", $params->category)) { // if no valid category was given, use the default category print_error('nocategory','quiz'); } // check category is valid (against THIS courseid, before we change it) $validcats = question_category_options( $cmid, false, true ); if (!array_key_exists( $params->category, $validcats )) { print_error( 'invalidcategory', 'quiz' ); } $localcourseid = $cmid; $courseid = $category->course; if (!$course = get_record("course", "id", $courseid)) { error("Invalid course!"); } require_login($course->id, false); $context = get_context_instance(CONTEXT_COURSE, $course->id); require_capability('moodle/question:import', $context); // ensure the files area exists for this course make_upload_directory( "$course->id" ); //========== // PAGE HEADER //========== if ($cm!==null) { $strupdatemodule = has_capability('moodle/course:manageactivities', get_context_instance(CONTEXT_COURSE, $course->id)) ? update_module_button($cm->id, $course->id, get_string('modulename', $cm->modname)) : ""; $navlinks = array(); $navlinks[] = array('name' => get_string('modulenameplural', $cm->modname), 'link' => "$CFG->wwwroot/mod/{$cm->modname}/index.php?id=$course->id", 'type' => 'activity'); $navlinks[] = array('name' => format_string($module->name), 'link' => "$CFG->wwwroot/mod/{$cm->modname}/view.php?cmid={$cm->id}", 'type' => 'title'); $navlinks[] = array('name' => $txt->importquestions, 'link' => '', 'type' => 'title'); $navigation = build_navigation($navlinks); print_header_simple($txt->importquestions, '', $navigation, "", "", true, $strupdatemodule); $currenttab = 'edit'; $mode = 'import'; ${$cm->modname} = $module; include($CFG->dirroot."/mod/$cm->modname/tabs.php"); } else { // Print basic page layout. $navlinks = array(); $navlinks[] = array('name' => $txt->importquestions, 'link' => '', 'type' => 'title'); $navigation = build_navigation($navlinks); print_header_simple($txt->importquestions, '', $navigation); // print tabs $currenttab = 'import'; include('tabs.php'); } // file upload form sumitted if (!empty($format) and confirm_sesskey() ) { // file checks out ok $fileisgood = false; // work out if this is an uploaded file // or one from the filesarea. if (!empty($params->choosefile)) { $importfile = "{$CFG->dataroot}/{$course->id}/{$params->choosefile}"; if (file_exists($importfile)) { $fileisgood = true; } else { notify($txt->uploadproblem); } } else { // must be upload file if (empty($_FILES['newfile'])) { notify( $txt->uploadproblem ); } else if ((!is_uploaded_file($_FILES['newfile']['tmp_name']) or $_FILES['newfile']['size'] == 0)) { notify( $txt->uploadproblem ); } else { $importfile = $_FILES['newfile']['tmp_name']; $fileisgood = true; } } // process if we are happy file is ok if ($fileisgood) { if (! is_readable("format/$format/format.php")) { error( get_string('formatnotfound','quiz', $format) ); } require("format.php"); // Parent class require("format/$format/format.php"); $classname = "qformat_$format"; $qformat = new $classname(); // load data into class $qformat->setCategory( $category ); $qformat->setCourse( $course ); $qformat->setFilename( $importfile ); $qformat->setMatchgrades( $params->matchgrades ); $qformat->setCatfromfile( $catfromfile ); $qformat->setStoponerror( $params->stoponerror ); // Do anything before that we need to if (! $qformat->importpreprocess()) { error( $txt->importerror, $thispageurl->out(false, array('category'=>$category->id))); } // Process the uploaded file if (! $qformat->importprocess() ) { error( $txt->importerror, $thispageurl->out(false, array('category'=>$category->id))); } // In case anything needs to be done after if (! $qformat->importpostprocess()) { error( $txt->importerror, $thispageurl->out(false, array('category'=>$category->id))); } echo "
"; print_continue("edit.php?".$thispageurl->get_query_string()); print_footer($course); exit; } } /// Print upload form // get list of available import formats $fileformatnames = get_import_export_formats( 'import' ); print_heading_with_help($txt->importquestions, "import", "quiz"); /// Get all the existing categories now $catmenu = question_category_options($course->id, false, true); //========== // DISPLAY //========== ?>
hidden_params_out(array(), 3); ?>
category; ?>: id, ""); ?> fromfile; ?> importcategory, 'quiz'); ?>
fileformat; ?>: importquestions, 'quiz'); ?>
matchgrades; ?> matchgradeserror,'' ); helpbutton('matchgrades', $txt->matchgrades, 'quiz'); ?>
stoponerror; ?> stoponerror, 'quiz'); ?>
importfileupload; ?>
upload; ?>: maxbytes,0,false); ?>
 
importfilearea; ?>
file; ?>:
  id}&choose=form.choosefile", "coursefiles", $txt->choosefile, 500, 750, $txt->choosefile); ?>