MDL-28364 handle question formats that support multiple file types
authorJonathon Fowler <fowlerj@usq.edu.au>
Mon, 27 Feb 2012 05:25:40 +0000 (15:25 +1000)
committerJonathon Fowler <fowlerj@usq.edu.au>
Mon, 27 Feb 2012 23:39:06 +0000 (09:39 +1000)
question/format.php
question/format/blackboard_six/format.php
question/import_form.php

index 081b68b..a9471af 100644 (file)
@@ -102,6 +102,20 @@ class qformat_default {
     public function export_file_extension() {
         return '.txt';
     }
+    
+    /**
+     * Check if the given file is capable of being imported by this plugin.
+     *
+     * Note that expensive or detailed integrity checks on the file should
+     * not be performed by this method. Simple file type or magic-number tests
+     * would be suitable.
+     *
+     * @param stored_file $file the file to check 
+     * @return bool whether this plugin can import the file
+     */
+    public function can_import_file($file) {
+        return ($file->get_mimetype() == $this->mime_type());
+    }
 
     // Accessor methods
 
index 484a31d..ed9f73d 100644 (file)
@@ -39,6 +39,14 @@ class qformat_blackboard_six extends qformat_default {
     function provide_import() {
         return true;
     }
+    
+    public function can_import_file($file) {
+        $mimetypes = array(
+            mimeinfo('type', '.dat'),
+            mimeinfo('type', '.zip')
+        );
+        return in_array($file->get_mimetype(), $mimetypes);
+    }
 
 
     //Function to check and create the needed dir to unzip file to
index 571e8cb..719317d 100644 (file)
@@ -133,7 +133,7 @@ class question_import_form extends moodleform {
         $qformat = new $classname();
 
         $file = reset($files);
-        if ($file->get_mimetype() != $qformat->mime_type()) {
+        if (!$qformat->can_import_file($file)) {
             $a = new stdClass();
             $a->actualtype = $file->get_mimetype();
             $a->expectedtype = $qformat->mime_type();