high experience level

Restrictions

Allgemeines zu den Restrictions

Restrictions
Abb.: der Restrictions-Button

Die sogenannten JPETo™-Restrictions erlauben es, die "Sichtbarkeit" eines Objektes über eine boolsche Gleichung zu steuern.

Damit können einfache Workflows (State-Machine) über das AdminInterface implementiert werden.

Diese Gleichung ist PHP Code, der zur Laufzeit interpretiert wird. Wenn ein Objekt geholt wird, bei dem Restrictions gesetzt wird, wird vor einer weiteren Verarbeitung (und Weiterverfolgung) dieses Objekts geprüft, ob die angegebenen Restrictions dieses erlauben.

Die Farbe des Buttons mit den beiden Paragraphen Zeichen gibt innerhalb des AdminInterfaces über den Zustand Auskunft:

§§ (siehe Abb.): keine Restrictions gesetzt.
§§: Restrictions wurden gesetzt
§§: Restrictions wurden gesetzt und greifen beim aktuellen Zustand des Objekts / beim aktuellen User


Der Restrictions Dialog

Der Restrictions Dialog
Abb.: Restrictions Dialog

Innerhalb des Restrictions-Dialogs kann die oben genannte boolsche Gleichung eingegeben oder über vorbelegte Buttons "zusammengebaut" werden.

Die Dialog-Buttons

zur Laufzeit hat man innerhalb der Restrictions auf folgende Objekte & Variablen Zugriff:


Warnung

Mit dem Setzen von Restrictions kann man sich als Admin sehr leicht "selbst aussperren". Diese Sperre kann nur vom Superuser (Level 10) aufgehoben werden, für ihn gelten keinerlei Restrictions.

Ein Syntax-Fehler innerhalb der Restrictions Gleichung bewirkt im einfachsten Fall, dass die Restriction ignoriert wird. Im schlimmsten Fall kann es passieren, dass die Seite, auf der das Objekt liegt, nicht verarbeitet werden kann und sich das Objekt nicht mehr administrieren lässt. Hier hilft nur mehr der Superuser (Object Picker) bzw. ein gezielter "Eingriff" in die Datenbank.

Keine Angst, um Restrictions setzen zu dürfen, ist ein vorgegebener Mindest-Admin Level und dadurch einiges an Erfahrung nötig.

Ungeübten Admins empfehlen wir, sich der vorbelegten Buttons innerhalb der Restrictions-Dialogs zu bedienen.


Beispiele

A)
$user->isMemberOf("BLABLABLA")
Dieses Objekt wird nur Mitgliedern der Gruppe BLABLABLA gezeigt

B)
!$user->isMemberOf("BLABLABLA")
Dieses Objekt wird all jenen gezeigt, die nicht Mitglied der Gruppe BLABLABLA sind (also auch Gästen)

C)
$user->j_UserID != ""
Dieses Objekt wird nur eingeloggten Usern gezeigt

D)
$user->j_UserID != "" && !$user->isMemberOf("BLABLABLA")
Dieses Objekt wird nur eingeloggten Usern gezeigt, die nicht Mitglied der Gruppe BLABLABLA sind. Eine und-Verknüpfung von C) und B)

E)
$user->isMemberOf("MIAU") || $user->isMemberOf("WUFF")
Dieses Objekt wird nur Mitgliedern der Gruppe MIAU und/oder Mitgliedern der Gruppe WUFF gezeigt

F)
$user->isMemberOf("MIAU") && $user->isMemberOf("WUFF")
Dieses Objekt wird nur Mitgliedern der Gruppe MIAU und WUFF gezeigt (Mitgliedschaft in beiden Gruppen erforderlich)

G)
strftime("%d%m") == "2902"
Dieses Objekt wird nur an Schalttagen gezeigt...

H)
strftime("%u") > 5
Dieses Objekt wird nur an Wochenenden gezeigt

I)
strftime("%u") <= 5
Dieses Objekt wird nur von Mo-Fr gezeigt