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 reparieren

Zum 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?

Defekte jos_user TabelleHöchstwahrscheinlich gar nichts. Das Problem sind (meistens) die nicht vorhandenen Einträge in den ACL-Tabellen. Wie bei unserem Kunden oben, werden diese häufig vergessen. Ich habe das mal rekonstruiert und in eine Nutzertabelle 16 neue Datensätze eingefügt, ohne die ACL-Tabellen zu berücksichtigen. Man sieht in dem Bild links oben, dass von 18 vorhandenen Nutzern nur 2 angezeigt werden.

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.
Wenn wir uns die oben genannte asynchrone Nutzertabelle mit Fixuser anschauen, sehen wir alle 18 Datensätze, ob defekt oder nicht.

Listenansicht der Nutzertabelle mit Fixuser

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.

Handhabung Userfix Wenn Sie einen Datensatz reparieren möchten, können Sie einfach auf das rote Kreuz ganz links klicken, oder Sie markieren mehrere Datensätze und klicken auf die Schaltfläche „Fix“ oben rechts. Ansonsten sollte das Handhaben der Komponente relativ klar sein. Möchten Sie grundsätzlich alle asynchronen Datensätze reparieren, klicken Sie auf „Fix all“ und falls sie einen oder mehrere asynchrone Datensätze entfernen möchten, klicken sie auf „Remove“.
Möchten Sie sich in der Liste nur asynchrone Datensätze anzeigen lassen, wählen Sie im Filter den Status „broken“.

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!
Vor der Anwendung von Fixuser sollten sie ein Backup Ihrer Datenbank durchführen. Diese Komponente wurde in ca. 90 Minuten entwickelt und ist nicht ausreichend getestet. Setzten Sie Fixuser also nur in Testumgebungen ein. 

feed0 Kommentare

Kommentar schreiben
 
  kleiner | groesser
 

security image
Bitte den folgenden Code eintragen


busy
 

B01 realisiert zeitgenössische Online-Kommunikationsmittel.
Wir sind spezialisiert auf OSCMS und unterstützen unsere Kunden vom Konzept bis zum Launch mit Erfahrung und exklusiven Komponenten zur Umsetzung von Communitys, Shops, Portalen und Webseiten.

B01 Kunden

Unsere Ideen, unsere Produkte, unsere Kunden.

B01 empfiehlt:

ZOO Content Construktion Kit

ZOO CCK

Virtuemart Shopsystem

E-Commerce

Joomla SEO

SEO

Joomla Content Editor

Content Editor

Joomla Social Networking

JomSocial