]> _ Git - cubeextranet.git/commitdiff
wait #3335 @0.5
authorvincent@cubedesigners.com <vincent@cubedesigners.com@f5622870-0f3c-0410-866d-9cb505b7a8ef>
Fri, 17 Jan 2020 10:43:57 +0000 (10:43 +0000)
committervincent@cubedesigners.com <vincent@cubedesigners.com@f5622870-0f3c-0410-866d-9cb505b7a8ef>
Fri, 17 Jan 2020 10:43:57 +0000 (10:43 +0000)
inc/commons/class.common.tools.php

index 4d35851d02f1c95ca2f76d156ac1aed14e11bbce..0c28941aaee7294736f91f4295b4c952d54819b4 100644 (file)
@@ -1429,7 +1429,7 @@ class commonTools
         $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>';
@@ -1439,18 +1439,24 @@ class commonTools
         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);
@@ -1472,17 +1478,50 @@ class commonTools
         $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;
     }