public/plugin/test2pdf/src/test2pdf.lib.php
<?php
/* For license terms, see /license.txt */
/**
* Functions.
*/
$letters = [
'a',
'b',
'c',
'd',
'e',
'f',
'g',
'h',
'i',
'j',
'k',
'l',
'm',
'n',
'o',
'p',
'q',
'r',
's',
't',
'u',
'v',
'w',
'x',
'y',
'z',
];
/**
* List exercises.
*
* @param int $courseId Course ID
* @param int $sessionId Session ID
*
* @throws Exception
*
* @return array Results (list of exercise details)
*/
function showExerciseCourse($courseId, $sessionId = 0)
{
$tableQuiz = Database::get_course_table(TABLE_QUIZ_TEST);
$tableLpItem = Database::get_course_table(TABLE_LP_ITEM);
$courseId = (int) $courseId;
$sessionId = (int) $sessionId;
$conditionSession = api_get_session_condition($sessionId, true, true, 'a.session_id');
$sql = "SELECT a.*
FROM $tableQuiz a
LEFT JOIN $tableLpItem b ON a.iid = b.path AND a.c_id = b.c_id
WHERE a.c_id = $courseId
AND (a.active = 1 OR (item_type = 'quiz' AND b.c_id = $courseId))
$conditionSession
ORDER BY a.title ASC;";
$res = Database::query($sql);
$aux = [];
while ($row = Database::fetch_assoc($res)) {
$aux[] = $row;
}
return $aux;
}
/**
* List quiz details.
*
* @throws Exception
*
* @return array Results (list of quiz details)
*/
function getInfoQuiz($courseId, $id)
{
$courseId = (int) $courseId;
$id = (int) $id;
$tableQuiz = Database::get_course_table(TABLE_QUIZ_TEST);
$sql = "SELECT * FROM $tableQuiz WHERE c_id = $courseId AND iid = $id";
$res = Database::query($sql);
return Database::fetch_assoc($res);
}
/**
* List question_id.
*
* @throws Exception
*
* @return array Results (list question ID)
*/
function getQuestionsFromCourse($courseId, $quizId, $sessionId = 0)
{
$courseId = (int) $courseId;
$quizId = (int) $quizId;
$sessionId = (int) $sessionId;
$tableQuizQuestion = Database::get_course_table(TABLE_QUIZ_TEST_QUESTION);
$tableQuestion = Database::get_course_table(TABLE_QUIZ_QUESTION);
$tableQuiz = Database::get_course_table(TABLE_QUIZ_TEST);
$conditionSession = api_get_session_condition($sessionId, true, true, 'q.session_id');
$sql = "SELECT a.question_id AS question_id
FROM $tableQuizQuestion a
INNER JOIN $tableQuestion b
ON a.question_id = b.iid
INNER JOIN $tableQuiz q
ON q.iid = a.quiz_id
WHERE
a.c_id = $courseId AND
b.c_id = a.c_id AND
a.quiz_id = $quizId AND
(b.type IN (1, 2, 9, 10, 11, 12, 14))
$conditionSession
ORDER BY question_order ASC;";
$res = Database::query($sql);
$aux = [];
while ($row = Database::fetch_assoc($res)) {
$aux[] = $row['question_id'];
}
return $aux;
}
/**
* List question details.
*
* @throws Exception
*
* @return array Results (list of question details)
*/
function getInfoQuestion($courseId, $id)
{
$courseId = (int) $courseId;
$id = (int) $id;
$tableQuestion = Database::get_course_table(TABLE_QUIZ_QUESTION);
$sql = "SELECT * FROM $tableQuestion
WHERE c_id = $courseId
AND iid = $id
AND (type IN (1, 2, 9, 10, 11, 12, 14))";
$res = Database::query($sql);
return Database::fetch_assoc($res);
}
/**
* List answer details.
*
* @throws Exception
*
* @return array Results (list of answer by question_id)
*/
function getAnswers($courseId, $id)
{
$courseId = (int) $courseId;
$id = (int) $id;
$tableQuizAnswer = Database::get_course_table(TABLE_QUIZ_ANSWER);
$sql = "SELECT * FROM $tableQuizAnswer
WHERE c_id = $courseId AND question_id = $id
ORDER BY position ASC;";
$res = Database::query($sql);
$aux = [];
while ($row = Database::fetch_assoc($res)) {
$aux[] = $row;
}
return $aux;
}
/**
* Remove all html tag.
*
* @param string $string The string to be stripped of HTML
*
* @return string clean of html tag
*/
function removeHtml($string)
{
$txt = str_replace('<html>', '', $string);
$txt = str_replace('<head>', '', $txt);
$txt = str_replace('<title>', '', $txt);
$txt = str_replace('</title>', '', $txt);
$txt = str_replace('</head>', '', $txt);
$txt = str_replace('<body>', '', $txt);
$txt = str_replace('</body>', '', $txt);
$txt = str_replace('</html>', '', $txt);
$txt = strip_tags($txt);
$txt = str_replace(chr(13).chr(10), '', $txt);
$txt = str_replace(' ', ' ', $txt);
$txt = str_replace('Á', 'Á', $txt);
$txt = str_replace('á', 'á', $txt);
$txt = str_replace('É', 'É', $txt);
$txt = str_replace('é', 'é', $txt);
$txt = str_replace('Í', 'Í', $txt);
$txt = str_replace('í', 'í', $txt);
$txt = str_replace('Ó', 'Ó', $txt);
$txt = str_replace('ó', 'ó', $txt);
$txt = str_replace('Ú', 'Ú', $txt);
$txt = str_replace('ú', 'ú', $txt);
$txt = str_replace('Ñ', 'Ñ', $txt);
$txt = str_replace('ñ', 'ñ', $txt);
$txt = str_replace('à', 'à', $txt);
$txt = str_replace('À', 'À', $txt);
$txt = str_replace('¡', '¡', $txt);
$txt = str_replace('·', '·', $txt);
$txt = str_replace('Ç', 'Ç', $txt);
$txt = str_replace('ç', 'ç', $txt);
$txt = str_replace('"', '"', $txt);
$txt = str_replace('ª', 'ª', $txt);
$txt = str_replace('º', 'º', $txt);
$txt = str_replace('&', '&', $txt);
$txt = str_replace('•', '•', $txt);
$txt = str_replace('¿', '¿', $txt);
$txt = str_replace('€', 'EUR', $txt);
$txt = str_replace('ü', 'ü', $txt);
$txt = str_replace('Ü', 'Ü', $txt);
return str_replace('¨', '¨', $txt);
}
/**
* Remove all html tag.
*
* @param string $string The string to be stripped of accents
*
* @return string clean of html tag
*/
function removeQuotes($string)
{
$txt = str_replace(' ', ' ', $string);
$txt = str_replace('Á', 'Á', $txt);
$txt = str_replace('á', 'á', $txt);
$txt = str_replace('É', 'É', $txt);
$txt = str_replace('é', 'é', $txt);
$txt = str_replace('Í', 'Í', $txt);
$txt = str_replace('í', 'í', $txt);
$txt = str_replace('Ó', 'Ó', $txt);
$txt = str_replace('ó', 'ó', $txt);
$txt = str_replace('Ú', 'Ú', $txt);
$txt = str_replace('ú', 'ú', $txt);
$txt = str_replace('Ñ', 'Ñ', $txt);
$txt = str_replace('ñ', 'ñ', $txt);
$txt = str_replace('"', '"', $txt);
$txt = str_replace('ª', 'ª', $txt);
$txt = str_replace('º', 'º', $txt);
$txt = str_replace('&', '&', $txt);
$txt = str_replace('•', '•', $txt);
$txt = str_replace('¿ &', '¿', $txt);
$txt = str_replace('à', 'à', $txt);
$txt = str_replace('À', 'À', $txt);
$txt = str_replace('¡', '¡', $txt);
$txt = str_replace('·', '·', $txt);
$txt = str_replace('Ç', 'Ç', $txt);
$txt = str_replace('ç', 'ç', $txt);
$txt = str_replace('€', 'EUR', $txt);
$txt = str_replace('ü', 'ü', $txt);
$txt = str_replace('Ü', 'Ü', $txt);
return str_replace('uml;', '¨', $txt);
}