Add support for two-levels zips for IMS/QTI v1.2 import - refs BT#11438 - refs CT#7518

1.10.x
Yannick Warnier 10 years ago
parent da67d2e40f
commit 840f49cfbd
  1. 42
      main/exercice/export/exercise_import.inc.php

@ -124,17 +124,22 @@ function import_exercise($file)
$questionHandle = opendir($baseWorkDir . '/' . $file);
while (false !== ($questionFile = readdir($questionHandle))) {
if (preg_match('/.xml$/i', $questionFile)) {
$result = qti_parse_file($baseWorkDir, $file, $questionFile);
$filePath = $baseWorkDir . $file;
$file_found = true;
$isQti = isQtiQuestionBank($baseWorkDir . '/' . $file . '/' . $questionFile);
if ($isQti) {
$result = qti_parse_file($baseWorkDir, $file, $questionFile);
$filePath = $baseWorkDir . $file;
$file_found = true;
}
}
}
} elseif (preg_match('/.xml$/i', $file)) {
// Else ignore file
$result = qti_parse_file($baseWorkDir, '', $file);
$filePath = $baseWorkDir . '/' . $file;
$file_found = true;
$isQti = isQtiQuestionBank($baseWorkDir . '/' . $file);
//$isManifest = isQtiManifest($baseWorkDir . '/' . $file);
if ($isQti) {
$result = qti_parse_file($baseWorkDir, '', $file);
$filePath = $baseWorkDir . '/' . $file;
$file_found = true;
}
}
}
@ -899,3 +904,24 @@ function elementDataQti1($parser, $data)
}
}
function isQtiQuestionBank($filePath) {
$data = file_get_contents($filePath);
if (!empty($data)) {
$match = preg_match('/ims_qtiasiv(\d)p(\d)/', $data);
if ($match) {
return true;
}
}
return false;
}
function isQtiManifest($filePath) {
$data = file_get_contents($filePath);
if (!empty($data)) {
$match = preg_match('/imsccv(\d)p(\d)/', $data);
if ($match) {
return true;
}
}
return false;
}
Loading…
Cancel
Save