bernd commited on 2011-01-04 10:32:18
Zeige 2 geänderte Dateien mit 30 Einfügungen und 9 Löschungen.
git-svn-id: https://svn.schokokeks.org/repos/tools/webinterface/trunk@1888 87cf0b9e-d624-0410-a070-f6ee81989793
... | ... |
@@ -127,7 +127,7 @@ if (isset($_POST['accesseditor'])) |
127 | 127 |
if ($output_something) |
128 | 128 |
{ |
129 | 129 |
title("MySQL-Datenbanken"); |
130 |
- output('<p>Hier können Sie Ihre MySQL-Datenbanken verwalten. Die Einstellungen werden mit einer leichten Verzögerung (maximal 1 Minute) in das System übertragen. Bitte beachten Sie, dass neue Zugänge also nicht umgehend funktionieren.</p> |
|
130 |
+ output('<p>Hier können Sie Ihre MySQL-Datenbanken verwalten. Die Einstellungen werden mit einer leichten Verzögerung (maximal 5 Minuten) in das System übertragen. Bitte beachten Sie, dass neue Zugänge also nicht umgehend funktionieren.</p> |
|
131 | 131 |
<p><strong>Hinweis:</strong> In dieser Matrix sehen Sie links die Datenbanken und oben die Benutzer, die Sie eingerichtet haben. |
132 | 132 |
In die leeren Eingabefelder können Sie den Namen eines neuen Benutzers bzw. einer neuen Datenbank eintragen. Sofern Sie noch keine Datenbank(en) oder Benutzer eingerichtet haben, erscheinen nur die Eingabefelder. Vergessen Sie nicht, nach der Erstellung eines neuen Benutzerkontos dem betreffenden Benutzer ein Passwort zu setzen (s. unten auf dieser Seite). Der Name von Datenbanken und Datenbank-Benutzern muss mit dem Namen des System-Benutzeraccounts übereinstimmen oder mit diesem und einem nachfolgenden Unterstrich beginnen. Z.B. kann der System-Benutzer <em>bernd</em> die MySQL-Accounts <em>bernd</em> und <em>bernd_2</em> erzeugen. Aufgrund einer Beschränkung des MySQL-Servers dürfen Benutzernamen allerdings zur Zeit nur 16 Zeichen lang sein.</p>'); |
133 | 133 |
|
... | ... |
@@ -148,9 +148,11 @@ if ($output_something) |
148 | 148 |
|
149 | 149 |
array_push($users, array('username' => "new", 'description' => NULL)); |
150 | 150 |
|
151 |
+ $servers = servers_for_databases(); |
|
152 |
+ |
|
151 | 153 |
foreach($dbs as $db) |
152 | 154 |
{ |
153 |
- $phpmyadmin = "https://mysql." . server_for_database($db['id']) . "/"; |
|
155 |
+ $phpmyadmin = "https://mysql.{$servers[$db['name']]}/"; |
|
154 | 156 |
$desc = ($db['description'] ? $db['description'].' (Erstellt: '.$db['created'].')' : 'Erstellt: '.$db['created']); |
155 | 157 |
$form .= "<tr><td style=\"border: 0px; font-weight: bold; text-align: right;\"><span title=\"{$desc}\">{$db['name']}</span> ".internal_link("", icon_delete("Datenbank »{$db['name']}« löschen"), "action=delete_db&db={$db['name']}")." <a href=\"".$phpmyadmin."\">".other_icon("database_go.png", "Datenbank-Verwaltung über phpMyAdmin")."</a></td>"; |
156 | 158 |
foreach ($users as $user) |
... | ... |
@@ -169,6 +171,23 @@ if ($output_something) |
169 | 171 |
|
170 | 172 |
output(html_form('mysql_databases', 'databases', '', $form)); |
171 | 173 |
|
174 |
+ $myservers = array(); |
|
175 |
+ foreach ($servers as $s) { |
|
176 |
+ if (! in_array($s, $myservers)) { |
|
177 |
+ $myservers[] = $s; |
|
178 |
+ } |
|
179 |
+ } |
|
180 |
+ |
|
181 |
+ output("<h4>Verwaltung der Datenbanken (phpMyAdmin)</h4> |
|
182 |
+ <p><img src=\"{$prefix}images/phpmyadmin.png\" style=\"width: 120px; height: 70px; float: right;\" />Zur Verwaltung der Datenbank-Inhalte stellen wir Ihnen eine stets aktualisierte Version von phpMyAdmin zur Verfügung.</p>"); |
|
183 |
+ if (count($myservers) == 1) { |
|
184 |
+ output("<p><strong><a href=\"https://mysql.{$myservers[0]}/\">phpMyAdmin aufrufen</a></strong></p>"); |
|
185 |
+ } |
|
186 |
+ else { |
|
187 |
+ output("<p><em>Ihre Datenbanken befinden sich auf unterschiedlichen Servern, daher müssen Sie die jeweils passende Adresse für phpMyAdmin benutzen. Klicken Sie auf das Symbol ".other_icon("database_go.png", "Datenbank-Verwaltung über phpMyAdmin")." oben neben der jeweiligen Datenbank.</em></p>"); |
|
188 |
+ } |
|
189 |
+ |
|
190 |
+ |
|
172 | 191 |
$users = get_mysql_accounts($_SESSION['userinfo']['uid']); |
173 | 192 |
|
174 | 193 |
|
... | ... |
@@ -29,15 +29,17 @@ function get_mysql_databases($UID) |
29 | 29 |
} |
30 | 30 |
|
31 | 31 |
|
32 |
-function server_for_database($id) |
|
32 |
+function servers_for_databases() |
|
33 | 33 |
{ |
34 |
- $id = (int) $id; |
|
34 |
+ $uid = (int) $_SESSION['userinfo']['uid']; |
|
35 | 35 |
|
36 |
- $result = db_query("SELECT hostname FROM misc.mysql_database AS db LEFT JOIN system.useraccounts AS u ON (db.useraccount=u.uid) LEFT JOIN system.servers ON (COALESCE(db.server, u.server) = servers.id) WHERE db.id={$id}"); |
|
37 |
- if (mysql_num_rows($result) != 1) |
|
38 |
- system_failure("Fehler beim auslesen des zuständigen Servers"); |
|
39 |
- $s = mysql_fetch_assoc($result); |
|
40 |
- return $s["hostname"]; |
|
36 |
+ $result = db_query("SELECT db.name AS db, hostname FROM misc.mysql_database AS db LEFT JOIN system.useraccounts AS u ON (db.useraccount=u.uid) LEFT JOIN system.servers ON (COALESCE(db.server, u.server) = servers.id) WHERE db.useraccount={$uid}"); |
|
37 |
+ $ret = array(); |
|
38 |
+ while ($line = mysql_fetch_assoc($result)) { |
|
39 |
+ $ret[$line['db']] = $line['hostname']; |
|
40 |
+ } |
|
41 |
+ DEBUG($ret); |
|
42 |
+ return $ret; |
|
41 | 43 |
} |
42 | 44 |
|
43 | 45 |
|
44 | 46 |