Tabellenzugriffe variabel umleiten
Moderator: General Support Moderators
Forum rules
Forumregeln
Forumregeln
-
- Joomla! Apprentice
- Posts: 12
- Joined: Fri Jan 29, 2010 8:07 am
Tabellenzugriffe variabel umleiten
Für ein Projekt muss ich die Zugriffe auf joomla tabellen variabel umleiten. Eine Variable $aid enthält das zu verwendende Tabellenprefix.
Beispiel
let the regular table prefix be xyz_
$aid = 8, alle querys werden auf tabellen mit dem prefix 8_ umgeleitet.
Ich hab schon versucht " $config->dbprefix = $aid;" zu jedem Vorkommen von "new JConfig()" hin zu zufügen, und beim Aufruf von index.php mit dem parameter aid= was auch immer, funktioniert es...doch sobald man dann auf den Link klickt kommt ein Fehler dass die Tabelle nicht gefunden werden konnte...weil irgendwo das prefix nicht angehängt wurde.
Ich denke es wäre wohl das einfachste das interne "#__" durch den Inhalt von $aid zu ersetzen, habe aber keinen Schimmer wo ich das hinbekomme so dass es auch überall klappt.
Insgesamt könnte ich einen Weg gebrauchen den Wert jeder beliebigen Variable in configuration.php global durch etwas anderes zu ersetzen. Automatisiert mehrere configuration.php anzulegen und diese entsprechend zu laden ist explizit nicht gewünscht.
Hat jemand ne Idee?
Beispiel
let the regular table prefix be xyz_
$aid = 8, alle querys werden auf tabellen mit dem prefix 8_ umgeleitet.
Ich hab schon versucht " $config->dbprefix = $aid;" zu jedem Vorkommen von "new JConfig()" hin zu zufügen, und beim Aufruf von index.php mit dem parameter aid= was auch immer, funktioniert es...doch sobald man dann auf den Link klickt kommt ein Fehler dass die Tabelle nicht gefunden werden konnte...weil irgendwo das prefix nicht angehängt wurde.
Ich denke es wäre wohl das einfachste das interne "#__" durch den Inhalt von $aid zu ersetzen, habe aber keinen Schimmer wo ich das hinbekomme so dass es auch überall klappt.
Insgesamt könnte ich einen Weg gebrauchen den Wert jeder beliebigen Variable in configuration.php global durch etwas anderes zu ersetzen. Automatisiert mehrere configuration.php anzulegen und diese entsprechend zu laden ist explizit nicht gewünscht.
Hat jemand ne Idee?
-
- Joomla! Apprentice
- Posts: 12
- Joined: Fri Jan 29, 2010 8:07 am
Re: Tabellenzugriffe variabel umleiten
Hat keiner ne Idee?
-
- Joomla! Intern
- Posts: 57
- Joined: Sat Feb 06, 2010 10:20 am
Re: Tabellenzugriffe variabel umleiten
Die Fäden laufen in der database.php zusammen. Eine Änderung in der Funktion setQuery(...) löst das Problem.
Um unerwünschte Fehlermeldungen auszuschließen muss $aid noch auf gültige Werte hin überprüft werden.
Grüße,
Arnd
Code: Select all
function setQuery( $sql, $offset = 0, $limit = 0, $prefix = '#__' ) {
$aid = JRequest::getInt('aid');
if ($aid > 0) $this->_table_prefix = $aid . "_";
[...] Rest wie in der Funktion
}
Grüße,
Arnd
Arnd Scharwächter
Chapter2 - The next chapter of design
Chapter2 - The next chapter of design
-
- Joomla! Apprentice
- Posts: 12
- Joined: Fri Jan 29, 2010 8:07 am
Re: Tabellenzugriffe variabel umleiten
Super! Vielen Dank! Mal wieder ist Lösung völlig simpel...
-
- Joomla! Apprentice
- Posts: 12
- Joined: Fri Jan 29, 2010 8:07 am
Re: Tabellenzugriffe variabel umleiten
Dein Tipp hat mich zwar weiter gebracht und ich bekomme keine Tabellenfehlermeldungen mehr, dafür kommt jetzt "Error loading components:" und dann keine weitere Fehlerbeschreibung. Ne Idee?Chapter2 wrote:Die Fäden laufen in der database.php zusammen. Eine Änderung in der Funktion setQuery(...) löst das Problem.Um unerwünschte Fehlermeldungen auszuschließen muss $aid noch auf gültige Werte hin überprüft werden.Code: Select all
function setQuery( $sql, $offset = 0, $limit = 0, $prefix = '#__' ) { $aid = JRequest::getInt('aid'); if ($aid > 0) $this->_table_prefix = $aid . "_"; [...] Rest wie in der Funktion }
Grüße,
Arnd
-
- Joomla! Intern
- Posts: 57
- Joined: Sat Feb 06, 2010 10:20 am
Re: Tabellenzugriffe variabel umleiten
Bei einer derartigen Fehlermeldung wird die Tabelle $aid_components nicht gefunden. Quelle:
Bei dem Vorgehen braucht man für jedes $aid einen kompletten Satz an Tabellen.
Code: Select all
{joomlaRoot}/libraries/joomla/application/component/helper.php Zeile 204
Arnd Scharwächter
Chapter2 - The next chapter of design
Chapter2 - The next chapter of design
-
- Joomla! Apprentice
- Posts: 12
- Joined: Fri Jan 29, 2010 8:07 am
Re: Tabellenzugriffe variabel umleiten
Die Tabellensätze sind komplett und korrekt. Das habe ich überprüft.
Interessanterweise erhalte ich wenn ich die indexseite einer aid das erstemal aufrufe keine Fehlermeldung. Wenn ich dann auf "home" klicke dann erst erscheint der Fehler. Wenn ich mich ins Adminbackend einlogge erscheint der Fehler erst nach dem Login. Ich vermute dass irgendwo intern die Zuordnung verloren geht.
Interessanterweise erhalte ich wenn ich die indexseite einer aid das erstemal aufrufe keine Fehlermeldung. Wenn ich dann auf "home" klicke dann erst erscheint der Fehler. Wenn ich mich ins Adminbackend einlogge erscheint der Fehler erst nach dem Login. Ich vermute dass irgendwo intern die Zuordnung verloren geht.
-
- Joomla! Intern
- Posts: 57
- Joined: Sat Feb 06, 2010 10:20 am
Re: Tabellenzugriffe variabel umleiten
Im Moment sieht es so aus, dass allen Komponenten und Modulen die $aid entweder per post über ein hidden-input oder an get angehägt mitgegeben werden muss. Für den Login im Admin-Bereich reicht das hidden-Feld bei modules/mod_login/mod_login.php.
Bei Frontend und Backend muss jedem Link die $aid mitgegeben werden. Die Menüleiste im Admin-Bereich kann man allgemein im Konstruktur anpassen {joomlaRoot}/administrator/modules/mod_menu/menu.php. Für den Rest sehe ich im Moment keine brauchbare Alternative als allen Vorkommen von index.php die aid mitzugeben index.php?aid=xy.
Vielleicht läßt sich das auch per Plugin erledigen aber so fit bin ich beim Thema Plugin nicht.
Bei Frontend und Backend muss jedem Link die $aid mitgegeben werden. Die Menüleiste im Admin-Bereich kann man allgemein im Konstruktur anpassen {joomlaRoot}/administrator/modules/mod_menu/menu.php. Für den Rest sehe ich im Moment keine brauchbare Alternative als allen Vorkommen von index.php die aid mitzugeben index.php?aid=xy.
Vielleicht läßt sich das auch per Plugin erledigen aber so fit bin ich beim Thema Plugin nicht.
Arnd Scharwächter
Chapter2 - The next chapter of design
Chapter2 - The next chapter of design
-
- Joomla! Apprentice
- Posts: 12
- Joined: Fri Jan 29, 2010 8:07 am
Re: Tabellenzugriffe variabel umleiten
Ursprünglich wird $aid per get in der index.php befüllt, dadurch haben ja dann alle anderen files die aid zum Abruf zur Verfügung weil die ja alle includes von index.php (oder includes von anderen includes) sind. Ich würde jetzt also alle vorkommen von 'index.php?' durch "index.php?aid=$aid" ersetzen und alle "index.php" durch "index.php?aid=$aid". Soweit es sich um Teile von functions handelt muss halt noch in diese Functions ein "global $aid;" rein. Rest so wie von dir vorgeschlagen. Überseh ich da noch irgendwas?