source: trunk/installation/index.php @ 24

Revision 24, 6.1 KB checked in by Lantash, 6 years ago (diff)

Turned global PHP variable $settings into a singleton. Settings can be accessed using Settings::getInstance().

Title and subtitle of the page are set using "title" and "subtitle" in Settings.

Clean up installation/index.php a little.

Line 
1<?php
2
3// Der Zugriff auf das Klassenbuch darf über diese Datei erfolgen
4define("_KBSECURE", true);
5
6require_once("wizard.php");
7
8// Wenn das Klassenbuch bereits konfiguriert wurde, wird die Installation abgebrochen
9if (file_exists("../server.settings.php")) {
10        header("Location: ../");
11        exit();
12}
13
14class InstWiz_Intro extends Wizard {
15        function init() {
16                $this->setNext("license");
17                $this->setPrev(null);
18                $this->setTitle("Willkommen bei der Installation des Klassenbuchs");
19        }
20
21        function setPage() {
22                $this->page = "<p>Bevor du das Klassenbuch verwenden kannst, muss es eingerichtet werden. " .
23                        "Der Installationsassistent wird dich durch die Installation leiten.</p>";
24        }
25}
26
27class InstWiz_License extends Wizard {
28        function init() {
29                $this->setPrev("intro");
30                $this->setNext("dbconfig");
31                $this->setTitle("Lizenz");
32        }
33
34        function setPage() {
35                $this->page = $this->readFile("license.html");
36        }
37}
38
39class InstWiz_DbConfig extends Wizard {
40        function init() {
41                $this->setPrev("license");
42                $this->setNext("dbcheck");
43                $this->setTitle("Datenbank-Einstellungen");
44                $this->setDefaults(Array("wiz_db_host" => "localhost", "wiz_db_tblprefix" => "kb_"));
45        }
46
47        function setPage() {
48                $this->page = "<p>Gib den Hostnamen des Servers an, auf dem die Klassenbuch-Datenbank installiert werden soll. " .
49                        "Ferner wird der Name einer bereits existierenden Datenbank benötigt und der Benutzername und das Passwort " .
50                        "eines Datenbank-Benutzers, der über die Rechte zum Erstellen von Tabellen in dieser Datenbank verfügt.</p>" .
51                        "<p>Das Tabellen-Präfix wird allen Tabellen vorangestellt und ist v. a. dann nützlich, wenn sich in der " .
52                        "Datenbank noch andere Tabellen befinden.</p>" .
53                       
54                        "<h3>Basiseinstellungen</h3>" .
55                        "<table class=\"configTable\"><tr>" .
56                        "       <td>Hostname:<br />" .
57                        "       <input type=\"text\" name=\"wiz_db_host\" value=\"[*wiz_db_host*]\"></td>" .
58                        "       <td class=\"configHelp\">In der Regel <strong>localhost</strong>.</td>" .
59                        "</tr><tr>" .
60                        "       <td>Datenbankname:<br />" .
61                        "       <input type=\"text\" name=\"wiz_db_name\" value=\"[*wiz_db_name*]\"></td>" .
62                        "       <td class=\"configHelp\"> Einige Hoster erlauben nur eine Datenbank pro Webseite. Wenn das der Fall " .
63                        "       ist, benutzen Sie bitte die Tabellen-Präfix-Option unter den Erweiterten Einstellungen.</td>" .
64                        "</tr><tr>" .
65                        "       <td>Benutzername:<br />" .
66                        "       <input type=\"text\" name=\"wiz_db_user\" value=\"[*wiz_db_user*]\"></td>" .
67                        "       <td class=\"configHelp\">Dieses kann der Standard-MySQL-Benutzername <strong>root</strong> sein, " .
68                        "       ein Benutzername, der vom Hoster erstellt wurde oder ein Name, den Sie selber gewählt haben.</td>" .
69                        "</tr><tr>" .
70                        "       <td>Passwort:<br />" .
71                        "       <input type=\"password\" name=\"wiz_db_password\" value=\"[*wiz_db_password*]\"></td>" .
72                        "       <td class=\"configHelp\">Für die Sicherheit der Webseite ist die Verwendung eines MySQL-Zugangs " .
73                        "       obligatorisch. Dieses ist das gleiche Passwort für Ihre Datenbank. Dieses könnte von Ihrem Hoster " .
74                        "       voreingestellt sein.</td>" .
75                        "</tr></table>" .
76                       
77                        "<h3>Erweiterte Einstellungen</h3>" .
78                        "<table class=\"configTable\"><tr>" .
79                        "       <td>Tabellenpräfix:<br />" .
80                        "       <input type=\"text\" name=\"wiz_db_tblprefix\" value=\"[*wiz_db_tblprefix*]\"></td>" .
81                        "       <td class=\"configHelp\"></td>" .
82                        "</tr></table>";
83        }
84}
85
86class InstWiz_DbCheck extends Wizard {
87        function init() {
88                $this->setPrev("dbconfig");
89                $this->setNext("finish");
90                $this->setTitle("Überprüfen der Datenbank-Einstellungen");
91        }
92       
93        function action() {
94                $this->displayProgress();
95        }
96       
97        function setPage() {
98                $this->opendb(
99                        $this->getVar("wiz_db_host"),
100                        $this->getVar("wiz_db_name"),
101                        $this->getVar("wiz_db_user"),
102                        $this->getVar("wiz_db_password")
103                );
104               
105                $diags = $this->checkdb();
106               
107                $bSuccess = true;
108               
109                if      (
110                        !$diags["Connect"] ||
111                        !$diags["Create"] ||
112                        !$diags["Insert"] ||
113                        !$diags["Update"] ||
114                        !$diags["Select"] ||
115                        !$diags["Delete"] ||
116                        !$diags["Drop"]) {
117                        $bSuccess = false;
118                }
119       
120                if ($bSuccess) {
121                        $this->importdb("schema.sql", "kb_", $this->getVar("wiz_db_tblprefix"));
122                       
123                        $msg = "Die Datenbank wurde erfolgreich eingerichtet. Klicke nun auf [Weiter], um mit der Installation " .
124                                "fortzufahren.</p>";
125                } else {
126                        $msg = "<span style=\"color: red; font-weight: bold;\">Fehler!</span> - Die Datenbankeinstellungen stimmen " .
127                                "nicht.</p><p>Bitte klicke auf [Zurück] und überprüfe deine Eingaben.</p>";
128                        $this->setNext(null);
129                }
130               
131                $msg .= "<h3>Detaillierte Ergebnisse</h3><table border=\"0\">";
132               
133                foreach ($diags as $action => $result) {
134                        $text = !$result ? "<td style=\"color: red;\">Fehlgeschlagen</td>" : "<td style=\"color: green;\">OK</td>";
135                       
136                        $msg .= "<tr><td>" . $action . "</td>$text</tr>";
137                }
138               
139                $msg .= "</table>";
140               
141                $this->page = $msg;
142        }
143}
144
145class InstWiz_Finish extends Wizard {
146        function init() {
147                $this->setPrev(null);
148                $this->setNext(null);
149                $this->setTitle("Fertig!");
150        }
151       
152        function setPage() {
153                $settings = $this->readFile("../server.settings.default.php");
154                $keys = Array("db_host", "db_name", "db_user", "db_password", "db_tblprefix");
155               
156                foreach ($keys as $key => $value) {
157                        $settings = str_replace("{" . $value . "}", $this->getVar("wiz_" . $value), $settings);
158                }
159               
160                $this->writeFile("../server.settings.php", $settings);
161                $this->page = "<p>Das Klassenbuch wurde erfolgreich eingerichtet. Du kannst das Klassenbuch nun zum ersten Mal " .
162                        "öffnen.</p><ul><li><a href=\"../index.php\">Zum Klassenbuch</a></li></ul>";
163        }
164}
165
166class InstallationWizard extends Wizard {
167        function init() {
168                $splash = new InstWiz_Intro("intro");
169                $this->addPage("intro", &$splash);
170        }
171}
172
173$wizard = new InstallationWizard();
174
175$license = new InstWiz_License("license");
176$wizard->addPage("license", $license);
177
178$dbconfig = new InstWiz_DbConfig("dbconfig");
179$wizard->addPage("dbconfig", $dbconfig);
180
181$dbcheck = new InstWiz_DbCheck("dbcheck");
182$wizard->addPage("dbcheck", $dbcheck);
183
184$finish = new InstWiz_Finish("finish");
185$wizard->addPage("finish", $finish);
186
187$wizard->display();
188
189?>
Note: See TracBrowser for help on using the repository browser.