'; $id = isset($_GET['id']) ? (int) $_GET['id'] : 0; $nodeType = isset($_GET['node_type']) ? Security::remove_XSS($_GET['node_type']) : ''; $termA = ''; $termB = ''; $termC = ''; $termD = ''; $termE = ''; $termF = ''; $option1 = ''; $option2 = ''; $option3 = ''; $description = ''; $term = null; $contentForm = '

Error

'; if ($id > 0) { $sql = "SELECT * FROM plugin_h5p WHERE id = $id "; $result = Database::query($sql); while ($rowP = Database::fetch_array($result)) { $nodeType = $rowP['node_type']; $termA = $rowP['terms_a']; $termB = $rowP['terms_b']; $termC = $rowP['terms_c']; $termD = $rowP['terms_d']; $termE = $rowP['terms_e']; $termF = $rowP['terms_f']; $option1 = $rowP['opt_1']; $option2 = $rowP['opt_2']; $option3 = $rowP['opt_3']; $description = $rowP['descript']; } $fieldId = 'source-'.$id; $h5pSource = 'cache-h5p/launch/source-'.$nodeType; $h5pDestination = 'cache-h5p/launch/'.$fieldId; //mkdir($dest_h5p); $installH5P = true; if (!file_exists('cache-h5p/launch/img/dialogcard.jpg')) { $installH5P = false; } if (!file_exists('cache-h5p/launch/images/dialogcard.jpg')) { $installH5P = false; } if (!file_exists($h5pSource)) { $installH5P = false; } else { copyr($h5pSource, $h5pDestination); } $contentSource = 'cache-h5p/launch/'.$fieldId.'/content/content.json'; $contentFlx = file_get_contents($contentSource); if (($nodeType == 'dialogcard' || $nodeType == 'memory') && $installH5P) { if (controlSourceCards($termA)) { $baseFlx = getSourceCards($termA, $nodeType); } if (controlSourceCards($termB)) { $baseFlx .= ','; $baseFlx .= getSourceCards($termB, $nodeType); } if (controlSourceCards($termC)) { $baseFlx .= ','; $baseFlx .= getSourceCards($termC, $nodeType); } if (controlSourceCards($termD)) { $baseFlx .= ','; $baseFlx .= getSourceCards($termD, $nodeType); } if (controlSourceCards($termE)) { $baseFlx .= ','; $baseFlx .= getSourceCards($termE, $nodeType); } if (controlSourceCards($termF)) { $baseFlx .= ','; $baseFlx .= getSourceCards($termF, $nodeType); } $contentFlx = str_replace("\"@base_cards@\"", $baseFlx, $contentFlx); } if ($nodeType == 'guesstheanswer' && $installH5P) { $extractImgData = "images/dialogcard.jpg"; $pathParts = pathinfo($termB); $fileN = $pathParts['filename']; $fileE = $pathParts['extension']; if ($fileN != '') { $fileN = $fileN.'.'.$fileE; $p1 = $termB; if ($p1 != '' && $p1 != 'dialogcard.jpg' && $p1 != 'img/dialogcard.jpg' && $p1 != 'images/dialogcard.jpg') { $p2 = api_get_path(SYS_PLUGIN_PATH).'h5p/cache-h5p/launch/img/'.$fileN; copy($p1, $p2); $extractImgData = "../../img/".$fileN; } else { $extractImgData = $pathPlugH5P.'cache-h5p/launch/img/dialogcard.jpg'; } } $contentFlx = str_replace("@image_b@", json_encode($extractImgData), $contentFlx); } $contentFlx = str_replace("@terms_a@", $termA, $contentFlx); $contentFlx = str_replace("@terms_b@", $termB, $contentFlx); $contentFlx = str_replace("@terms_c@", $termC, $contentFlx); $contentFlx = str_replace("@descript@", $description, $contentFlx); $interfaceLanguage = api_get_language_isocode(); // @TODO support translations in a better way (only en/fr now) if ($interfaceLanguage == 'fr' || $interfaceLanguage == 'french') { $contentFlx = str_replace("\"solution label\"", "\"Voir la solution\"", $contentFlx); $contentFlx = str_replace("\"Turn\"", "\"Tourner\"", $contentFlx); $contentFlx = str_replace("\"Check\"", "\"Vérifier\"", $contentFlx); $contentFlx = str_replace("\"Retry\"", "\"Recommencer\"", $contentFlx); $contentFlx = str_replace("\"Correct!\"", "\"Bravo!\"", $contentFlx); $contentFlx = str_replace("\"Incorrect!\"", "\"Réponse incorrecte!\"", $contentFlx); $contentFlx = str_replace("\"Answer not found!\"", "\"Réponse non trouvée!\"", $contentFlx); $contentFlx = str_replace("\"You got :num out of :total points\"", "\"Votre score :num out sur :total points\"", $contentFlx); $contentFlx = str_replace("\"Show solution\"", "\"Voir la solution\"", $contentFlx); $contentFlx = str_replace("\"Match found.\"", "\"Correspondance trouvée.\"", $contentFlx); $contentFlx = str_replace("\"Reset\"", "\"Recommencer\"", $contentFlx); $contentFlx = str_replace("\"Close\"", "\"Fermer\"", $contentFlx); $contentFlx = str_replace("\"Time spent\"", "\"Temps\"", $contentFlx); } elseif ($interfaceLanguage == 'es') { $contentFlx = str_replace("\"solution label\"", "\"Ver la solución\"", $contentFlx); $contentFlx = str_replace("\"Turn\"", "\"Girar\"", $contentFlx); $contentFlx = str_replace("\"Check\"", "\"Verificar\"", $contentFlx); $contentFlx = str_replace("\"Retry\"", "\"Volver a intentar\"", $contentFlx); $contentFlx = str_replace("\"Correct!\"", "\"¡Bravo!\"", $contentFlx); $contentFlx = str_replace("\"Incorrect!\"", "\"¡Respuesta incorrecta!\"", $contentFlx); $contentFlx = str_replace("\"Answer not found!\"", "\"¡Respuesta no encontrada!\"", $contentFlx); $contentFlx = str_replace("\"You got :num out of :total points\"", "\"Su nota es de :num sobre :total puntos\"", $contentFlx); $contentFlx = str_replace("\"Show solution\"", "\"Ver la solución\"", $contentFlx); $contentFlx = str_replace("\"Match found.\"", "\"Coincidencia encontrada.\"", $contentFlx); $contentFlx = str_replace("\"Reset\"", "\"Reiniciar\"", $contentFlx); $contentFlx = str_replace("\"Close\"", "\"Cerrar\"", $contentFlx); $contentFlx = str_replace("\"Time spent\"", "\"El tiempo pasado\"", $contentFlx); } $fp = fopen($contentSource, 'w'); fwrite($fp, $contentFlx); fclose($fp); $htmlFile = 'cache-h5p/launch/'.$fieldId.'.html'; $h5pSource = file_get_contents('cache-h5p/launch/source-h.html'); $h5pSource = str_replace("{folder}", $fieldId, $h5pSource); //{folder} $fp = fopen($htmlFile, 'w'); fwrite($fp, $h5pSource); fclose($fp); $contentForm = ''; } $contentForm .= '

Embedded code

'; $contentForm .= ''; $contentForm .= '

'; $contentForm .= ''; $contentForm .= ''.get_lang('Close').''; $contentForm .= '

'; if ($installH5P == false) { $contentForm = Display::return_message(get_lang('FolderDoesntExistsInFileSystem'), 'error'); } $tpl = new Template("H5P"); $tpl->assign('form', $contentForm); $content = $tpl->fetch('/h5p/view/view.tpl'); $tpl->assign('content', $content); $tpl->display_one_col_template(); /** * Check if a source card is not empty. * * @param string $termData A string from which we extract the first part * * @return bool False on empty, true otherwise */ function controlSourceCards($termData) { if ($termData == '') { return false; } $partTerm = explode("|", $termData); $txtWarp = $partTerm[0]; $txtWarp = strip_tags($txtWarp); if ($txtWarp != '') { return true; } return false; } /** * Parse and reformat base image tags with the given terms string. * * @param string $termData A string from which we only take the first elements (we split it on | ) * @param string $nodeType The type of node ('memory', 'cards', etc) * * @return string|string[] */ function getSourceCards($termData, $nodeType) { $baseFlx = '{"tips":{}, "text": @text_a@ , "answer": @answer_a@ , "image":{"path":@image_a@, "mime":"image\/jpg", "copyright":{"license":"U"}, "width":100, "height":100 }}'; if ($nodeType == 'memory') { $baseFlx = '{"image":{"path":@image_a@, "mime":"image\/jpeg", "copyright":{"license":"U"}, "width":100,"height":100}, "description":@text_a@,"matchAlt":@text_a@,"imageAlt":@text_a@}'; } $partTerm = explode("|", $termData); $baseFlx = str_replace("@text_a@", json_encode($partTerm[0]), $baseFlx); $baseFlx = str_replace("@answer_a@", json_encode($partTerm[1]), $baseFlx); $extractImg = "images/dialogcard.jpg"; $pathParts = pathinfo($partTerm[2]); $fileN = $pathParts['filename']; $fileE = $pathParts['extension']; if ($fileN != '') { $fileN = $fileN.'.'.$fileE; $p1 = $partTerm[2]; if ($p1 != '' && $p1 != 'dialogcard.jpg' && $p1 != 'img/dialogcard.jpg' && $p1 != 'images/dialogcard.jpg') { $p2 = api_get_path(SYS_PLUGIN_PATH).'h5p/cache-h5p/launch/img/'.$fileN; copy($p1, $p2); $extractImg = '../../img/'.$fileN; } else { $extractImg = api_get_path(WEB_PLUGIN_PATH).'h5p/cache-h5p/launch/img/dialogcard.jpg'; } } $baseFlx = str_replace("@image_a@", json_encode($extractImg), $baseFlx); return $baseFlx; }