MDL-27964 lesson - Old file picker is replaced with new filepicker, currently all imported questions will be saved in /temp/questionimport/ where questionbank files are saved.

This commit is contained in:
Rajesh Taneja 2011-06-23 10:12:18 +08:00
parent 7fde489dae
commit b89bf55f84
2 changed files with 54 additions and 23 deletions

View file

@ -66,8 +66,12 @@ if ($data = $mform->get_data()) {
require_sesskey(); require_sesskey();
if (!$importfile = $mform->get_importfile_name()) { $realfilename = $mform->get_new_filename('questionfile');
print_error('uploadproblem', 'moodle'); //TODO: Leave all imported questions in Questionimport for now.
$importfile = "{$CFG->dataroot}/temp/questionimport/{$realfilename}";
make_upload_directory('temp/questionimport');
if (!$result = $mform->save_file('questionfile', $importfile, true)) {
throw new moodle_exception('uploadproblem');
} }
$formatclass = 'qformat_'.$data->format; $formatclass = 'qformat_'.$data->format;

View file

@ -32,8 +32,8 @@ defined('MOODLE_INTERNAL') || die();
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/ */
class lesson_import_form extends moodleform { class lesson_import_form extends moodleform {
public function definition() { public function definition() {
global $COURSE;
$mform = $this->_form; $mform = $this->_form;
@ -48,30 +48,57 @@ class lesson_import_form extends moodleform {
$mform->setType('format', 'text'); $mform->setType('format', 'text');
$mform->addRule('format', null, 'required'); $mform->addRule('format', null, 'required');
$mform->addElement('file', 'newfile', get_string('upload'), array('size'=>'50')); //Using filemanager as filepicker
$mform->addRule('newfile', null, 'required'); $mform->addElement('filepicker', 'questionfile', get_string('upload'));
$mform->addRule('questionfile', null, 'required', null, 'client');
$this->add_action_buttons(null, get_string("uploadthisfile"));
$this->add_action_buttons(null, get_string("import"));
} }
public function get_importfile_name(){ /**
if ($this->is_submitted() and $this->is_validated()) { * Checks that a file has been uploaded, and that it is of a plausible type.
// return the temporary filename to process * @param array $data the submitted data.
return $_FILES['newfile']['tmp_name']; * @param array $errors the errors so far.
}else{ * @return array the updated errors.
return NULL; */
} protected function validate_uploaded_file($data, $errors) {
global $CFG;
if (empty($data['questionfile'])) {
$errors['questionfile'] = get_string('required');
return $errors;
} }
public function get_importfile_realname(){ $files = $this->get_draft_files('questionfile');
if ($this->is_submitted() and $this->is_validated()) { if (count($files) < 1) {
// return the temporary filename to process $errors['questionfile'] = get_string('required');
// TODO change this to use the files API properly. return $errors;
return $_FILES['newfile']['name'];
}else{
return NULL;
}
} }
$formatfile = $CFG->dirroot.'/question/format/'.$data['format'].'/format.php';
if (!is_readable($formatfile)) {
throw new moodle_exception('formatnotfound', 'lesson', '', $data['format']);
}
require_once($formatfile);
$classname = 'qformat_' . $data['format'];
$qformat = new $classname();
$file = reset($files);
if ($file->get_mimetype() != $qformat->mime_type()) {
$a = new stdClass();
$a->actualtype = $file->get_mimetype();
$a->expectedtype = $qformat->mime_type();
$errors['newfile'] = get_string('importwrongfiletype', 'lesson', $a);
}
return $errors;
}
public function validation($data, $files) {
$errors = parent::validation($data, $files);
$errors = $this->validate_uploaded_file($data, $errors);
return $errors;
}
} }