From f29f455e8d3bf4a3a696892f22116a66426b2bbb Mon Sep 17 00:00:00 2001 From: Gilles-Philippe Leblanc Date: Fri, 14 Mar 2014 07:37:09 -0400 Subject: [PATCH] MDL-44585 grade_import: Restrict the accepted types in the gradebook import --- grade/import/csv/index.php | 3 ++- grade/import/grade_import_form.php | 12 ++++++++++-- grade/import/xml/grade_import_form.php | 17 +++++++++++++++-- grade/import/xml/index.php | 2 +- 4 files changed, 28 insertions(+), 6 deletions(-) diff --git a/grade/import/csv/index.php b/grade/import/csv/index.php index ece046d6be7..3a931a2de30 100644 --- a/grade/import/csv/index.php +++ b/grade/import/csv/index.php @@ -74,7 +74,8 @@ if ($id) { } // Set up the import form. -$mform = new grade_import_form(null, array('includeseparator'=>true, 'verbosescales'=>true)); +$mform = new grade_import_form(null, array('includeseparator' => true, 'verbosescales' => true, 'acceptedtypes' => + array('.csv', '.txt'))); // If the csv file hasn't been imported yet then look for a form submission or // show the initial submission form. diff --git a/grade/import/grade_import_form.php b/grade/import/grade_import_form.php index c7011221be9..10dad0797f5 100644 --- a/grade/import/grade_import_form.php +++ b/grade/import/grade_import_form.php @@ -38,8 +38,16 @@ class grade_import_form extends moodleform { $mform->addElement('hidden', 'id', optional_param('id', 0, PARAM_INT)); $mform->setType('id', PARAM_INT); $mform->addElement('header', 'general', get_string('importfile', 'grades')); - // file upload - $mform->addElement('filepicker', 'userfile', get_string('file')); + + // Restrict the possible upload file types. + if (!empty($features['acceptedtypes'])) { + $acceptedtypes = $features['acceptedtypes']; + } else { + $acceptedtypes = '*'; + } + + // File upload. + $mform->addElement('filepicker', 'userfile', get_string('file'), null, array('accepted_types' => $acceptedtypes)); $mform->addRule('userfile', null, 'required'); $encodings = textlib::get_encodings(); $mform->addElement('select', 'encoding', get_string('encoding', 'grades'), $encodings); diff --git a/grade/import/xml/grade_import_form.php b/grade/import/xml/grade_import_form.php index 7a879de2b43..7792147a8ba 100644 --- a/grade/import/xml/grade_import_form.php +++ b/grade/import/xml/grade_import_form.php @@ -27,6 +27,12 @@ class grade_import_form extends moodleform { $mform =& $this->_form; + if (isset($this->_customdata)) { + $features = $this->_customdata; + } else { + $features = array(); + } + // course id needs to be passed for auth purposes $mform->addElement('hidden', 'id', optional_param('id', 0, PARAM_INT)); $mform->setType('id', PARAM_INT); @@ -36,8 +42,15 @@ class grade_import_form extends moodleform { $mform->addElement('advcheckbox', 'feedback', get_string('importfeedback', 'grades')); $mform->setDefault('feedback', 0); - // file upload - $mform->addElement('filepicker', 'userfile', get_string('file')); + // Restrict the possible upload file types. + if (!empty($features['acceptedtypes'])) { + $acceptedtypes = $features['acceptedtypes']; + } else { + $acceptedtypes = '*'; + } + + // File upload. + $mform->addElement('filepicker', 'userfile', get_string('file'), null, array('accepted_types' => $acceptedtypes)); $mform->disabledIf('userfile', 'url', 'noteq', ''); $mform->addElement('text', 'url', get_string('fileurl', 'gradeimport_xml'), 'size="80"'); diff --git a/grade/import/xml/index.php b/grade/import/xml/index.php index de16555494c..a48a8c7becd 100644 --- a/grade/import/xml/index.php +++ b/grade/import/xml/index.php @@ -41,7 +41,7 @@ if (!empty($CFG->gradepublishing)) { $CFG->gradepublishing = has_capability('gradeimport/xml:publish', $context); } -$mform = new grade_import_form(); +$mform = new grade_import_form(null, array('acceptedtypes' => array('.xml'))); if ($data = $mform->get_data()) { // Large files are likely to take their time and memory. Let PHP know