Browse Source

Add script to replace mimetex.cgi calls with math-tex see BT#16123

Julio 5 years ago
parent
commit
c261e51192
1 changed files with 55 additions and 0 deletions
  1. 55 0
      tests/scripts/fix_mimetex.php

+ 55 - 0
tests/scripts/fix_mimetex.php

@@ -0,0 +1,55 @@
+<?php
+/* For licensing terms, see /license.txt */
+
+exit;
+
+require_once __DIR__ . '/../../main/inc/global.inc.php';
+
+$sql = 'SELECT iid, id, question, c_id
+        FROM c_quiz_question
+        ORDER BY iid';
+
+$result = Database::query($sql);
+$data = Database::store_result($result);
+$counter = 1;
+$total = count($data);
+echo 'Exercises to check: '.$total.PHP_EOL;
+
+foreach ($data as $row) {
+    $id = $row['id'];
+    $courseId = $row['c_id'];
+
+    $content = fixText($row['question']);
+    $params = [
+        'question' => $content
+    ];
+    Database::update('c_quiz_question', $params, ['id = ? and c_id = ?' => [$id, $courseId]]);
+
+    $sql = "SELECT iid, answer, comment FROM c_quiz_answer WHERE question_id = $id and c_id = $courseId";
+    $result = Database::query($sql);
+    $items = Database::store_result($result, 'ASSOC');
+    foreach ($items as $item) {
+        $id = $item['iid'];
+        $content = fixText($item['answer']);
+        $params = [
+            'answer' => $content
+        ];
+        Database::update('c_quiz_answer', $params, ['iid = ? ' => $id]);
+    }
+}
+
+function fixText($content)
+{
+    $matches = [];
+    if (preg_match_all('/<img alt="(.*)?" (.*)?mimetex.cgi\? (.*)?\/>/', $content, $matches)) {
+        $count = count($matches[0]);
+        for ($i = 0; $i <= $count; $i++) {
+            if (isset($matches[0]) && isset($matches[0][$i])) {
+                $value = "<span class=\"math-tex\">`".$matches[1][$i]."`</span>";
+                $content = str_replace($matches[0][$i], $value, $content);
+            }
+        }
+    }
+
+    return $content;
+}