Defekte jos_user Nutzertabellen mit Fixuser reparieren |
Wie viele Joomla Entwickler, hatten auch wir wieder einmal das Problem der asynchronen Nutzertabellen. Ein Kunde fügte aus seiner alten Mambo Präsenz eine Schnittmenge der Nutzerdaten in die Datenbank der neuen Joomla-Webseite. Damit wollte er etwas Gutes tun...leider. Dabei wurde natürlich nur die jos_users Tabelle aktualisiert. Die ebenfalls zuständigen ACL-Tabellen wie jos_core_acl_aro oder jos_core_acl_groups_aro_map wurden nicht angefasst. Diese sind für die Rechteverwaltung innerhalb von Joomla zuständig. So kam es dazu, dass im Joomla Backend bei der Anzeige der Nutzer im User Manager eine fehlerhafte Darstellung die Folge war. Von angeblich 274 vorhandenen Nutzern wurden nur 21 dargestellt. Community Builder User-Tabellen reparierenZum Glück war in diesem Fall keine Community Builder Komponente vorhanden. Hin und wieder hatten wir, nach wilden Migrationsorgien, richtig Arbeit damit, asynchrone Nutzertabellen zu reparieren. Der Usermanager des Community Builder mag fehlerhafte Nutzertabellen ebenso wenig wie der Standard Joomla User Manager. Dabei sind die nötigen Handgriffe, welche die zuständigen Tabellen reparieren, recht trivial. Langweilig wird es nur, wenn es sich dabei um mehrere tausend Datensätze handelt. Dann kann eigentlich nur ein Skript oder eine Migrationskomponente weiterhelfen. Meistens wird diese jedoch eingesetzt, bevor das Kind in den Brunnen gefallen ist. Sind erstmal Asynchronitäten aufgetreten, verliert man sich schnell im Detail und richtet im schlimmsten Fall noch mehr Schaden an. Meistens hilft nur die komplette Rekonstruktion der Nutzertabellen. Community Builder selbst hat unter dem Menüpunkt „Tools“ eine Option mit der Asynchronitäten zwischen der Standard jos_users und der jos_comprofiler aufgedeckt und repariert werden können. Das funktioniert auch einwandfrei, wenn die jos_users in Ordnung ist. Ist die Standard User Tabelle asynchron, kann auch Community Builder nichts ausrichten und gibt in der Listenansicht fehlerhafte Angaben aus. Was stimmt mit der User-Tabelle jos_users nicht?
Sobald man in der Footer-Navigation weiter klickt, erscheint eine leere Seite. Das ist das Resultat einer asynchronen Nutzer Tabelle (eigentlich ist es ja eine asynchrone Rechtetabelle). In der zuständigen com_users Komponente (Joomla Standard) wird bei der Abfrage der totalen Datensätze (Footer Navigation) nur die jos_users Tabelle abgefragt. Da sich in dieser alle 18 Datensätze befinden, wird mit dieser Zahl gearbeitet. Bei der Abfrage, welche die tatsächlichen Nutzerdaten, die für die Liste relevant sind, aus der Datenbank liest, werden korrekterweise auch die ACL-Tabellen berücksichtigt. Da diese von den 16 fehlerhaft migrierten Datensätzen keine enthalten, werden nur die zwei synchronen Datensätze geliefert. Das ist an dieser Stelle etwas fahrig programmiert, da zumindest eine Warnung nützlich wäre. Fixuser 0.1 repariert asynchrone jos_users Nutzer Tabellen
Diesen Blogeintrag zu schreiben hat (jetzt schon) länger gedauert, als diese kleine Komponente zusammenzuschrauben. Fixuser basiert auf der Standard com_users und beinhaltet einige wenige Anpassungen, welche beim Reparieren von defekten Nutzer-Tabellen hilfreich sind.
In der Spalte „State“ wird gekennzeichnet, ob der Datensatz synchronisiert werden muss oder in Ordnung ist. Die Spalte „Group“ stellt die Gruppe des Nutzers dar oder den String „broken“, falls der Datensatz asynchron ist. Im Bild sehen Sie die zwei synchronen Nutzer ganz unten.
Die entstandene Komponente können Sie im Download-Bereich herunterladen (Download Fixuser für J1.0.x). Nach der Installation wird sofort angezeigt, ob Asynchronitäten in Ihrem System vorhanden sind. Nachdem Sie Ihre Nutzertabelle synchronisiert haben, sollte auch Community Builder keine Probleme haben über den Tools-Bereich eine Synchronisierung durchzuführen.
Wichtig! Lesezeichen setzen Hits: 12069 Kommentar schreiben
|