02.04.2017, 20:34
Seiten: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
16.04.2017, 11:23
Hallo waldo,
wir nutzen das Account-Switcher-Plugin nun schon einige Jahre in unserem Forum. Die Information welche Accounts verbunden sind, ist bei uns nicht publik und steht nur unserem Moderatoren- und Admin-Team zur Verfügung.
Bisher hatten wir schon eine selbstgebastelte Anzeige in den Moderator-Optionen des Benutzerprofils, welche die Verbindung der Accounts dargestellt hat. Mittlerweile stellt das Plugin ja selbst an diversen Stellen die zugehörigen Accounts dar. Daraus folgend hatten wir ein paar Ideen für Anpassungen / Erweiterungen:
Grüsse Thorim
wir nutzen das Account-Switcher-Plugin nun schon einige Jahre in unserem Forum. Die Information welche Accounts verbunden sind, ist bei uns nicht publik und steht nur unserem Moderatoren- und Admin-Team zur Verfügung.
Bisher hatten wir schon eine selbstgebastelte Anzeige in den Moderator-Optionen des Benutzerprofils, welche die Verbindung der Accounts dargestellt hat. Mittlerweile stellt das Plugin ja selbst an diversen Stellen die zugehörigen Accounts dar. Daraus folgend hatten wir ein paar Ideen für Anpassungen / Erweiterungen:
- Verbundene Accounts im Benutzerprofil für Moderatoren / Admins anzeigen (könnte man natürlich auch pro Benutzergruppe einstellen - das Recht dann auch für Account-Liste etc. verwenden)
- Markierung des Haupt-Accounts bei den "Verbundene Accounts" im Benutzerprofil (z.B. hinter dem Account "(Haupt-Account)" bzw. bei diesem selbst "Dies ist ein Haupt-Account")
- Option um Benutzer von Ausschlussgruppen in der Account-Auswahl-Liste im Header nicht anzuzeigen (gilt dann natürlich auch für die Auswahl zum Wechsel in Sidebar, Post-Erstellung, ...)
Grüsse Thorim
16.04.2017, 12:29
Hallo Thorim,
die verbundenen Accounts werden bisher für alle Gruppen angezeigt, die den Accountswitcher benutzen dürfen. Für eine Umstellung auf Gruppenbasis müsste ich mal schauen, wie groß der Aufwand wäre, das umzusetzen.
Der Hauptaccount ist bereits im Benutzerprofil markiert, allerdings als Title-Tag, d.h. es wird nur angezeigt, wenn man auf den Benutzernamen geht. Für eine sichtbare Änderung findest du den Code zum Bearbeiten in der Datei inc/plugins/accountswitcher/as_functions.php (ungefähr nach Zeile 900)
Was die Ausschlussgruppe betrifft: Accounts, die in eine andere Gruppe verschoben wurden, können von den anderen verbundenen Accounts abgetrennt werden, wenn die neue Gruppe keine Berechtigung für den Accountswitcher besitzt. Solange die Ausschlussgruppe den Switcher also nicht benutzen darf, kann man in der Pluginübersicht auf "Account-Verknüpfungen bereinigen" klicken , danach sollte auch kein Benutzer aus dieser Gruppe mehr in der Auswahlliste stehen (zumindest seit v. 2.1 ist das so).
die verbundenen Accounts werden bisher für alle Gruppen angezeigt, die den Accountswitcher benutzen dürfen. Für eine Umstellung auf Gruppenbasis müsste ich mal schauen, wie groß der Aufwand wäre, das umzusetzen.
Der Hauptaccount ist bereits im Benutzerprofil markiert, allerdings als Title-Tag, d.h. es wird nur angezeigt, wenn man auf den Benutzernamen geht. Für eine sichtbare Änderung findest du den Code zum Bearbeiten in der Datei inc/plugins/accountswitcher/as_functions.php (ungefähr nach Zeile 900)
Code:
<span style="font-weight: bold;" title="Master Account">
Was die Ausschlussgruppe betrifft: Accounts, die in eine andere Gruppe verschoben wurden, können von den anderen verbundenen Accounts abgetrennt werden, wenn die neue Gruppe keine Berechtigung für den Accountswitcher besitzt. Solange die Ausschlussgruppe den Switcher also nicht benutzen darf, kann man in der Pluginübersicht auf "Account-Verknüpfungen bereinigen" klicken , danach sollte auch kein Benutzer aus dieser Gruppe mehr in der Auswahlliste stehen (zumindest seit v. 2.1 ist das so).
18.04.2017, 13:30
Hallo waldo,
die Funktion "Account-Verknüpfungen bereinigen" hat das tatsächlich die User der Ausschlussgruppe entfernt. Allerdings geht das bei unserer User-Anzahl von 3860 Usern relativ lang und bricht am Ende glaube ich auch ab (kam nur eine weisse Seite).
Grundsätzlich können die User ihre 'alten' verknüpften Accounts ja auch über das User-CP selbst entfernen. Ist also eigenlich kein wirkliches Problem.
Wir haben eben Funktionalität ausserhalb vom Forum welche für die User das Tabellenfeld as_uid modifiziert oder eben auch die Gruppe ändert, aufgrund dessen sind erst die as_uid Einträge für die User der Ausschlussgruppe entstanden. Das kann ich natürlich auch anpassen.
Durch dieses externe Änderungen muss nun jeweils auch der Cache des Account-Switchers erneuert werden. Der Einfachheit halber habe ich nun bei der Funktionalität die beiden Cache-Felder 'accountswitcher' und 'accountswitcher_fields' in der Datenbank auf einen leeren String gesetzt und im Konstruktor von AccountSwitcher bei nicht gültigem Cache ein Rebuild angestossen:
Diese Änderung ist ja unter Umständen immer praktisch - auch wenn der Cache aus irgendwelchen Gründen mal kaputte Daten enthalten sollte. Kannst dir ja überlegen ob du das übernehmen willst.
die Funktion "Account-Verknüpfungen bereinigen" hat das tatsächlich die User der Ausschlussgruppe entfernt. Allerdings geht das bei unserer User-Anzahl von 3860 Usern relativ lang und bricht am Ende glaube ich auch ab (kam nur eine weisse Seite).
Grundsätzlich können die User ihre 'alten' verknüpften Accounts ja auch über das User-CP selbst entfernen. Ist also eigenlich kein wirkliches Problem.
Wir haben eben Funktionalität ausserhalb vom Forum welche für die User das Tabellenfeld as_uid modifiziert oder eben auch die Gruppe ändert, aufgrund dessen sind erst die as_uid Einträge für die User der Ausschlussgruppe entstanden. Das kann ich natürlich auch anpassen.
Durch dieses externe Änderungen muss nun jeweils auch der Cache des Account-Switchers erneuert werden. Der Einfachheit halber habe ich nun bei der Funktionalität die beiden Cache-Felder 'accountswitcher' und 'accountswitcher_fields' in der Datenbank auf einen leeren String gesetzt und im Konstruktor von AccountSwitcher bei nicht gültigem Cache ein Rebuild angestossen:
PHP-Code:
// Accounts and user field cache
$this->accountswitcher_cache = $this->cache->read('accountswitcher');
$this->userfields_cache = $this->cache->read('accountswitcher_fields');
//rebuild cache if read failed
if (false === $this->accountswitcher_cache)
{
$this->update_accountswitcher_cache();
$this->accountswitcher_cache = $this->cache->read('accountswitcher');
}
if (false === $this->userfields_cache)
{
$this->update_userfields_cache();
$this->userfields_cache = $this->cache->read('accountswitcher_fields');
}
Diese Änderung ist ja unter Umständen immer praktisch - auch wenn der Cache aus irgendwelchen Gründen mal kaputte Daten enthalten sollte. Kannst dir ja überlegen ob du das übernehmen willst.
18.04.2017, 18:40
(18.04.2017, 13:30)Thorim schrieb: [ -> ]die Funktion "Account-Verknüpfungen bereinigen" hat das tatsächlich die User der Ausschlussgruppe entfernt. Allerdings geht das bei unserer User-Anzahl von 3860 Usern relativ lang und bricht am Ende glaube ich auch ab (kam nur eine weisse Seite).
Ja, das könnte der Fall sein. Ich denke, 99,9% der Foren, die den Accountswitcher nutzen, haben weniger als 200 User, daher ist die Ineffizienz der Funktion bisher praktisch nicht aufgefallen, aber im nächsten Upgrade wird die Aufräumfunktion entscheidend schlanker und schneller ausfallen. Ich habe sie vor einer Weile schon umgeschrieben, muss sie nur noch ausgiebig testen.
(18.04.2017, 13:30)Thorim schrieb: [ -> ]Diese Änderung ist ja unter Umständen immer praktisch - auch wenn der Cache aus irgendwelchen Gründen mal kaputte Daten enthalten sollte. Kannst dir ja überlegen ob du das übernehmen willst.
Ich sehe keine Gründe, die dagegen sprechen.
19.04.2017, 09:06
(18.04.2017, 18:40)waldo schrieb: [ -> ]Ich sehe keine Gründe, die dagegen sprechen.
Ich hab heute Morgen noch einen festgestellt:
Ich hab das Plugin deaktiviert für ein Update von einer alter Version, neue Dateien hochgeladen. Dann wollte ich es wieder aktivieren. Dabei wollte er natürlich den Cache aufbauen, aber die entsprechenden Felder in der Datenbank haben noch garnicht exisitert, was in einer Fehlermeldung endete.
Ich hab dann kurz die paar Zeilen auskommentiert und nach dem Aktivieren wieder reingenommen.
Entweder muss man da noch prüfen ob die aktuelle Version korrekt installiert ist oder ein try-catch aussenrum hinpacken.
19.04.2017, 09:27
Wenn die Felder in der Datenbank noch nicht existiert haben, hat sie entweder jemand von Hand gelöscht oder anderweitig irgendwelchen Code geändert, denn nur vom Deaktivieren werden sie nicht gelöscht.
Denke ich nicht. So etwas kann nur vorkommen, wenn jemand selbst an der Datenbank oder am Code herumspielt und für solche Fälle alles abzusichern wäre overkill.
(19.04.2017, 09:06)Thorim schrieb: [ -> ]Entweder muss man da noch prüfen ob die aktuelle Version korrekt installiert ist oder ein try-catch aussenrum hinpacken.
Denke ich nicht. So etwas kann nur vorkommen, wenn jemand selbst an der Datenbank oder am Code herumspielt und für solche Fälle alles abzusichern wäre overkill.
19.04.2017, 09:43
Das Feld as_shareuid gabs in der alten Version von MyBB 1.6 einfach noch nicht
Ich hab da halt ein 1.6.x -> 1.8.11 Update inklusive der Plugins gemacht. Das war die ganz alte Account-Switcher-Version von Harest (mit meinem Sicherheitsfix - sonst konnte man sich ja in jeden beliebigen Account switchen).
Wenn man von einer aktuelleren Version kommt, ist das natürlich kein Problem.
Ich hab mir das im Code nochmal angeschaut um herauszufinden wo das Problem ist. Problematisch ist der Aufruf von accountswitcher_templates_add() bevor die Tabellenfelder angelegt werden (beim Install ist die Reihenfolge andersrum). Wenn man die Versions-Nummer in accountswitcher_templates_add() anderst bekommen würde, bräuchte man die AccountSwitcher-Instanz garnicht erst.
Ich hab da halt ein 1.6.x -> 1.8.11 Update inklusive der Plugins gemacht. Das war die ganz alte Account-Switcher-Version von Harest (mit meinem Sicherheitsfix - sonst konnte man sich ja in jeden beliebigen Account switchen).
Wenn man von einer aktuelleren Version kommt, ist das natürlich kein Problem.
Ich hab mir das im Code nochmal angeschaut um herauszufinden wo das Problem ist. Problematisch ist der Aufruf von accountswitcher_templates_add() bevor die Tabellenfelder angelegt werden (beim Install ist die Reihenfolge andersrum). Wenn man die Versions-Nummer in accountswitcher_templates_add() anderst bekommen würde, bräuchte man die AccountSwitcher-Instanz garnicht erst.
19.04.2017, 10:21
Die Versionsnummer kann ich auch direkt angeben und die EAS-Instanz ganz rausnehmen, die muss man ja nur ändern, wenn es beim Update Templateänderungen gibt, also kein großer Aufwand.
Die Tabellenfelder werde ich auch an den Anfang der Aktivierungsfunktion setzen. Das letzte Mal, dass ich ein Update von der alten Version von Harest getestet habe, hat es aber bei mir funktioniert, na ja egal, ist ja kein Problem, das zu verschieben.
Die Tabellenfelder werde ich auch an den Anfang der Aktivierungsfunktion setzen. Das letzte Mal, dass ich ein Update von der alten Version von Harest getestet habe, hat es aber bei mir funktioniert, na ja egal, ist ja kein Problem, das zu verschieben.
19.04.2017, 10:26
(19.04.2017, 10:21)waldo schrieb: [ -> ]Das letzte Mal, dass ich ein Update von der alten Version von Harest getestet habe, hat es aber bei mir funktioniert, na ja egal, ist ja kein Problem, das zu verschieben.
Das funktioniert auch. Nur eben nicht mehr mit meiner Cache-Rebuild-Änderung von oben