Seite 1 von 1

[CON-2816] User als inaktiv gekennzeichnet

Verfasst: Do 11. Apr 2019, 08:27
von Faar
Moin!
Mir fiel auf, dass nach dem großen Upgrade von 4.8 auf 4.10 alle Backend-Benutzer hellgrau dargestellt werden, also als inaktiv.
Das bestätigt sich auch im HTML und CSS das da lautet:

Code: Alles auswählen

<span class="inactiveUser">Redakteur<br>Redakteur</span>

.inactiveUser {
    color: #b3b3b8;
}
Früher konnte man doch einen Benutzer aktiv schalten, oder?
Seit der 4.9.12 zumindest ist da kein "aktiv" Button aber die aktiven Benutzer werden noch im CSS schwarz dargestellt.
Inaktiv kann man Benutzer nur noch schalten, in dem man ein gestriges Datum eingibt.
Das finde ich umständlich.
Wo ist der "aktiv" Button geblieben? :shock:
Den will ich wieder haben. 8)

Edith: Es steht sogar im Benutzerfeld darunter, dass der User aktiv wäre, bowohl er grau dargestellt wird.
Dieser Benutzer ist momentan aktiviert.

Re: User als inaktiv gekennzeichnet

Verfasst: Do 11. Apr 2019, 13:26
von xmurrix
Hallo Faar,

die einzige Stelle, die ich auf die Schnelle gefunden habe, in der die CSS Klasse gesetzt wird, ist in der include.rights_menu.php. Da steht zwischen Zeile 115 und 119 folgendes drin:

Code: Alles auswählen

if (($sToday < $cApiUser->get("valid_from") && ($cApiUser->get("valid_from") != '0000-00-00 00:00:00' && $cApiUser->get("valid_from") != '')) || ($sToday > $cApiUser->get("valid_to") && ($cApiUser->get("valid_to") != '0000-00-00 00:00:00') && $cApiUser->get("valid_from") != '')) {
    $mlist->setTitle($iMenu, '<span class="inactiveUser">' . conHtmlSpecialChars($cApiUser->get("username")) . "<br>" . conHtmlSpecialChars($cApiUser->get("realname")) . '</span>');
} else {
    $mlist->setTitle($iMenu, conHtmlSpecialChars($cApiUser->get("username")) . "<br>" . conHtmlSpecialChars($cApiUser->get("realname")));
}
Was stehen denn bei dir in der Usertabelle für Werte in den Spalten "valid_from" und "valid_to" drin?
Falls die aktuelle Zeit kleiner valid_from oder größer valid_to ist, werden die User in der Liste als "deaktiviert" dargestellt.

Gruß
xmurrix

Re: User als inaktiv gekennzeichnet

Verfasst: Do 11. Apr 2019, 15:14
von Faar
xmurrix hat geschrieben:
Do 11. Apr 2019, 13:26
Hallo Faar,
Was stehen denn bei dir in der Usertabelle für Werte in den Spalten "valid_from" und "valid_to" drin?
folgendes:
0000-00-00 0000-00-00

folgende Struktur:
valid_from date Ja NULL
Macht NULL hier Sinn?

in der 4.8 DB steht folgendes:
0000-00-00 0000-00-00

Also gleich wie oben und auch NULL

Re: User als inaktiv gekennzeichnet

Verfasst: Do 11. Apr 2019, 15:20
von Faar
xmurrix hat geschrieben:
Do 11. Apr 2019, 13:26

Code: Alles auswählen

if (($sToday < $cApiUser->get("valid_from") && ($cApiUser->get("valid_from") != '0000-00-00 00:00:00' && $cApiUser->get("valid_from") != '')) || ($sToday > $cApiUser->get("valid_to") && ($cApiUser->get("valid_to") != '0000-00-00 00:00:00') && $cApiUser->get("valid_from") != '')) {
    $mlist->setTitle($iMenu, '<span class="inactiveUser">' . conHtmlSpecialChars($cApiUser->get("username")) . "<br>" . conHtmlSpecialChars($cApiUser->get("realname")) . '</span>');
} else {
    $mlist->setTitle($iMenu, conHtmlSpecialChars($cApiUser->get("username")) . "<br>" . conHtmlSpecialChars($cApiUser->get("realname")));
}
Es gibt in den Tabellen gar kein "valid_from" = '0000-00-00 00:00:00' sondern nur noch 0000-00-00, wie im Post oben beschrieben.
Beide DBs sind Version 5.6.42

Was passiert dann beim Vergleich $sToday < $cApiUser oder bei get("valid_from") != '0000-00-00 00:00:00' ?

Edith: Ja, und falls mal NULL zutrifft, dann dürfte gar kein 0000-00-00 drin stehen.
Ich sehe im Code aber keine Prüfung auf NULL sondern nur get("valid_from") != ''

In der DB ist also das DATE Format eingestellt mit 0000-00-00 aber im Code wird auf DATETIME 0000-00-00 00:00:00 geprüft.
Wäre noch zu klären, ob NULL hier sein darf.
https://www.peterkropff.de/site/mysql/null.htm

Re: User als inaktiv gekennzeichnet

Verfasst: Do 11. Apr 2019, 17:16
von Oldperl

Re: User als inaktiv gekennzeichnet

Verfasst: Do 11. Apr 2019, 20:26
von xmurrix
folgendes:
0000-00-00 0000-00-00

folgende Struktur:
valid_from date Ja NULL
Macht NULL hier Sinn?

in der 4.8 DB steht folgendes:
0000-00-00 0000-00-00

Also gleich wie oben und auch NULL
Der default-Wert für die Felder "valid_from" und "valid_to" ist NULL, dieser wird in der Prüfung

Code: Alles auswählen

$cApiUser->get("valid_from") != ''
innerhalb der if Bedingung als false interpretiert. Von daher ist es hier egal, ob da NULL steht oder ein Leerstring.

Das Problem hier sind Werte in der Tabelle, die das Format "YYYY-MM-DD" haben und nicht "YYYY-MM-DD HH:MM:SS", deswegen schlägt die Prüfung in der if Bedingung fehl.

In Contenido 4.8 wurden die Einträge damals in der Tabelle "con_phplib_auth_user_md5" im Format "YYYY-MM-DD" gespeichert, das Setup von 4.10 sollte diese Inhalte prüfen und ggf anpassen, also alle Werte in "valid_from" und "valid_to", die das Format "YYYY-MM-DD" haben in "YYYY-MM-DD HH:MM:SS" umwandeln. Ich sehe das als einen Bug, der gefixt werden sollte.

Man kann sich behelfen, indem man die Einträge in der con_user Tabelle manuell korrigiert.

Re: User als inaktiv gekennzeichnet

Verfasst: Do 11. Apr 2019, 20:40
von xmurrix
Danke für den Hinweis zum Fehler, das Ticket dazu lautet:
https://issues.contenido.org/browse/CON-2816