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

@ -32,8 +32,8 @@ defined('MOODLE_INTERNAL') || die();
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class lesson_import_form extends moodleform {
public function definition() {
global $COURSE;
$mform = $this->_form;
@ -48,30 +48,57 @@ class lesson_import_form extends moodleform {
$mform->setType('format', 'text');
$mform->addRule('format', null, 'required');
$mform->addElement('file', 'newfile', get_string('upload'), array('size'=>'50'));
$mform->addRule('newfile', null, 'required');
$this->add_action_buttons(null, get_string("uploadthisfile"));
//Using filemanager as filepicker
$mform->addElement('filepicker', 'questionfile', get_string('upload'));
$mform->addRule('questionfile', null, 'required', null, 'client');
$this->add_action_buttons(null, get_string("import"));
}
public function get_importfile_name(){
if ($this->is_submitted() and $this->is_validated()) {
// return the temporary filename to process
return $_FILES['newfile']['tmp_name'];
}else{
return NULL;
/**
* Checks that a file has been uploaded, and that it is of a plausible type.
* @param array $data the submitted data.
* @param array $errors the errors so far.
* @return array the updated errors.
*/
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(){
if ($this->is_submitted() and $this->is_validated()) {
// return the temporary filename to process
// TODO change this to use the files API properly.
return $_FILES['newfile']['name'];
}else{
return NULL;
$files = $this->get_draft_files('questionfile');
if (count($files) < 1) {
$errors['questionfile'] = get_string('required');
return $errors;
}
$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;
}
}