$res .= '<table class="liste">';
$res .= '<tr><th><strong>' . __('Update your quiz') . '</strong></th></tr>';
$res .= '<tr><td>Please upload your quiz (ZIP file expected)</td></tr>';
- $res .= '<tr class="odd"><td><input type="file" name="file" /></td></tr>';
+ $res .= '<tr class="odd"><td><input type="file" name="file[]" multiple /></td></tr>';
$res .= '<tr><td class="right"><a href="#" class="submit">' . $core->typo->BoutonOK(__('Proceed to update')) . '</a></td></td>';
$res .= '</table>';
$res .= '</form>';
return $res;
}
- public static function updateQuiz()
+ /**
+ * @param $tmp_name
+ * @param $name
+ * @return false|string
+ * @throws Exception
+ */
+ protected static function _updateOneQuiz($tmp_name, $name)
{
- $tidySettings=['input-xml'=> 1, 'indent' => 1, 'wrap' => 0];
+ $tidySettings = ['input-xml' => 1, 'indent' => 1, 'wrap' => 0];
$template = ROOT . '/quiz/template.zip';
- $temp = ROOT . '/quiz/quiz-' . md5(rand(0, 10000000)) . '.zip';
+ $temp = ROOT . '/quiz/quiz-' . md5(random_int(0, 10000000)) . '.zip';
copy($template, $temp);
$assets = ['assets/logo.png', 'assets/banner.jpg'];
$uploaded = new ZipArchive();
- $uploaded->open($_FILES['file']['tmp_name']);
+ $uploaded->open($tmp_name);
$template = new ZipArchive();
$template->open($temp);
$template->addFromString('data.xml', tidy_repair_string($oMX->Get(1), $tidySettings));
// *** IMS Manifest ***
$imsmanifest = file_get_contents(ROOT . '/quiz/imsmanifest.xml');
- $imsmanifest = str_replace('$title', $quizTitle, tidy_repair_string($imsmanifest,$tidySettings));
+ $imsmanifest = str_replace('$title', $quizTitle, tidy_repair_string($imsmanifest, $tidySettings));
$template->addFromString('imsmanifest.xml', $imsmanifest);
// *** Save zip ***
$template->close();
+ $res = file_get_contents($temp);
+ unlink($temp);
+ return $res;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public static function updateQuiz()
+ {
+ $multiple = count($_FILES['file']['name']) > 1;
+ if ($multiple) {
+ $fname = 'updated.zip';
+ $zip = new ZipArchive();
+ $zipName = ROOT . '/quiz/quiz-' . md5(random_int(0, 10000000)) . '.zip';
+ $zip->open($zipName, ZipArchive::CREATE);
+ } else {
+ $fname = $_FILES['file']['name'][0];
+ }
+
+ foreach ($_FILES['file']['name'] as $i => $name) {
+ $tmp_name = $_FILES['file']['tmp_name'][$i];
+ $res = self::_updateOneQuiz($tmp_name, $name);
+ if ($multiple) {
+ $zip->addFromString($name, $res);
+ }
+ }
+
header('Content-Type: application/zip');
- header('Content-Disposition: attachment; filename=' . $_FILES['file']['name']);
+ header('Content-Disposition: attachment; filename=' . $fname);
ob_end_clean();
- echo file_get_contents($temp);
- unlink($temp);
+ if ($multiple) {
+ $zip->close();
+ echo file_get_contents($zipName);
+ unlink($zipName);
+ } else {
+ echo $res;
+ }
exit;
}