Ich habe in der neusten Version 2.4.7 ein ziemlich ärgerliches Phänomen.
Ausgangslage:
Neues Feld bei welchem die Einstellung "Feld für alle Benutzer sichtbar" NICHT gesetzt ist (das Feld ist also nicht für alle Benutzer sichtbar, was auch wunderbar funktioniert)
Neuer Benutzer erstellt, welcher Leiter einer Liste ist und dort das Recht hat, Mitglieder zu bearbeiten.
Verhalten:
Log ich mich mit dem neuen Benutzer ein und rufe via Liste eines der Listemitglieder auf, sehe ich - wie gewollt - auch das Feld, welches nicht für alle Benutzer sichtbar ist. Ich kann dort einen neuen Wert eintragen und via Speichernbutton bestätigen. Es erfolgt die gewohnte Meldung "Eintrag gespeichert". Nur wird der neue Wert aber NICHT gespeichert!!!!
Konnte jemand dieses Verhalten auch schon beobachten bzw. hat eine entsprechende Lösung bereit?
kannst du das Verhalten bei uns im Demo-Bereich evtl. nachstellen?
Das wäre eine große Hilfe. Wenn es ein Fehler in Admidio ist, hätten wir in dann schnell gefunden.
Ja, ich konnte das beschriebene Verhalten auch in der Demoumgebung nachvollziehen. Inzwischen habe ich den Programmcode gefunden, welcher meiner Erachtens im erwähnten Fall zu Problemen führt. Und zwar handelt es sich hierbei um die Funktion setValue in der Datei user.php. Dort gibt es folgenden Codeteil, welcher prüft, dass versteckte Felder nur von Usern mit dem Rollenrecht "alle Benutzerdaten bearbeiten" geändert werden dürfen:
// Daten fuer User-Fields-Tabelle
// gesperrte Felder duerfen nur von Usern mit dem Rollenrecht 'alle Benutzerdaten bearbeiten' geaendert werden
// bei Registrierung muss die Eingabe auch erlaubt sein
if(( $this->mProfileFieldsData->getProperty($columnName, 'usf_disabled') == 1
&& $gCurrentUser->editUsers() == true)
|| $this->mProfileFieldsData->getProperty($columnName, 'usf_disabled') == 0
|| ($gCurrentUser->getValue('usr_id') == 0 && $this->getValue('usr_id') == 0))
{
// versteckte Felder duerfen nur von Usern mit dem Rollenrecht 'alle Benutzerdaten bearbeiten' geaendert werden
// oder im eigenen Profil
if(( $this->mProfileFieldsData->getProperty($columnName, 'usf_hidden') == 1
&& $gCurrentUser->editUsers() == true)
|| $this->mProfileFieldsData->getProperty($columnName, 'usf_hidden') == 0
|| $gCurrentUser->getValue('usr_id') == $this->getValue('usr_id'))
{
$updateField = true;
}
}
Ist ein Benutzer nun auf einer Liste als Leiter mit erweiterter Berechtigung "Profildaten bearbeiten" definiert, sieht er die versteckten Felder zwar und kann auch reinschreiben, es wird aber nix gespeichert da er ja nicht über die globale Berechtigung "alle Benutzerdaten bearbeiten" verfügt. Für meine Bedürfnisse habe ich das Problem gelöst, in dem ich den entsprechenden Codeteil auskommentiert habe, da er meines Erachtens nicht notwendig ist: bei allen Feldern, welche für mich bearbeitbar sind, will ich auch die Werte speichern können!!!