-
Notifications
You must be signed in to change notification settings - Fork 2
/
test.php
111 lines (100 loc) · 3.71 KB
/
test.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
<?php
require_once 'vendor/autoload.php';
require_once 'config.php';
dibi::connect($database_configuration);
$secret = isset($_GET['secret']) ? $_GET['secret'] : '';
if ($minimise_code) {
$minimise = ".min";
} else {
$minimise = "";
}
$row = dibi::fetch('SELECT * FROM [Tests] WHERE [secret]= %i', $secret);
$language = $row->language;
$textId = (int) $row->text;
$testTypeId = (int) $row->testtype;
$testText = $row->test;
$solution = $row->solution;
$level = $row->level;
$save = (boolean) $row->save;
$public = (boolean) $row->public;
if (strlen($language) == 2) {
setcookie('language', $language);
$locale = dibi::fetchSingle('SELECT locale FROM [Languages] WHERE [code]= %i', $language);
} else {
$language = $default_language;
if (isset($_COOKIE['language'])) {
$locale = dibi::fetchSingle('SELECT locale FROM [Languages] WHERE [code]= %i', $_COOKIE['language']);
} else {
setcookie('language', $default_language);
$locale = dibi::fetchSingle('SELECT locale FROM [Languages] WHERE [code]= %i', $default_language);
}
}
if ($language != "en") {
putenv("LC_ALL=$locale");
setlocale(LC_ALL, $locale);
bindtextdomain($text_domain, $base_dir . "/i18n");
textdomain($text_domain);
}
if ($textId > 0) {
$row = dibi::fetch('SELECT * FROM [Texts] WHERE [id] = %i', $textId);
$textTitle = '<div id="title">' . $row->title . '</div>';
$textOrigin = $row->text;
$textSource = '<div id="source">' . _("Source") . ': <a href="' . $row->url . '">' . $row->source . '</a></div>';
} else {
$textTitle = '';
$textOrigin = '';
$textSource = '';
}
$row = dibi::fetch('SELECT * FROM [TestTypes] WHERE [id] = %i', $testTypeId);
$testTitle = $row->title;
$testDescription = $row->description;
$testTerms = $row->terms;
$testScript = $row->script;
if ($row->css == "") {
$ownStyle = "";
} else {
$ownStyle = "\n <link rel='stylesheet' type='text/css' href='" . $base_url . "scripts/" . $row->css . $minimise . ".css'>";
}
$externalCodes = "";
$rows = dibi::query("SELECT ec.type, ec.src, ec.relative_url FROM ExternalCodes ec INNER JOIN TestTypes2ExternalCodes tt2ec ON ec.id = tt2ec.external_code_id WHERE tt2ec.test_type_id = $testTypeId ORDER BY ec.type, ec.id ASC");
foreach ($rows as $row) {
if ($row['relative_url'] == 1) {
$extCodeSrc = $base_url . $row['src'];
} else {
$extCodeSrc = $row['src'];
}
switch ($row['type']) {
case "js":
$externalCodes .= "\n <script type='text/javascript' src='$extCodeSrc'></script>";
break;
case "css":
$externalCodes .= "\n <link rel='stylesheet' type='text/css' href='$extCodeSrc'>";
break;
}
}
echo '<!DOCTYPE html>
<html>
<head>
<title>' . $website_title . '</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<link rel="shortcut icon" href="' . $base_url . 'templates/' . $template_name . '/favicon.ico" type="image/x-icon">
<link rel="stylesheet" type="text/css" href="' . $base_url . 'templates/' . $template_name . '/css/test' . $minimise . '.css">' . $ownStyle . $externalCodes . '
<script type="text/javascript" src="' . $base_url . 'i18n/main.js.php"></script>
<script type="text/javascript" src="' . $base_url . 'scripts/' . $testScript . $minimise . '.js"></script>
</head>
<body>
<div id="header">
<h1>' . $testTitle . '</h1>
<div id="description">' . $testDescription . '</div>
<div id="messages"></div>
</div>
<div id="mainColumn">
' . $textTitle . '
<div id="text">' . $testText . '</div>
<div id="origin"></div>
' . $textSource . '
</div>
<div id="control"></div>
<div id="solution">' . $solution . '</div>' . $tracking_code . '
</body>
</html>';