Adminanmeldung und Onlinestatus

Der nächste Abschnitt des Quelltextes übergibt eine evtl. vorhandene Session-ID eines Backend-Users an die Variable beLogin.
Auch hier unterscheidet sich die Übergabe zwischen redaxo 3.x und 4.x und es wird gleichzeitig bei der V. 4.x geprüft, ob das community-Addon installiert und aktiviert ist.

  1. // Adminzugriffe von der Statistik ausschließen
  2. // und Backendzugriff auf Offlineartikel ermöglichen
  3. // redaxo 4.x
  4. $beLogin = $_SESSION[$REX['INSTNAME']]['UID'];
  5. // Zugriffsberechtigung für redaxo-community prüfen
  6. // falls community-Addon installiert und aktiviert ist
  7. if(OOAddon::isAvailable('community'))
  8. {
  9.   $chkUsrPerm = rex_com_checkUserPerm($this->getValue("art_com_perm"));
  10. }
  11. else
  12. {
  13.   // permisson-Check für redaxo-community umgehen
  14.   $chkUsrPerm = true;
  15. }

Liegt eine Anmeldung im Backend vor, wird mit REX[Stats]=0 zunächst die statistische Erfassung der Seitenaufrufe abgeschaltet. Dies bezieht sich auf das Statististik-Addon welches, wenn auch oft als veraltet bezeichnet, doch noch häufig benutzt wird.

  1. if ($beLogin>0)
  2. {
  3.   $REX[STATS] = 0;
  4. }
  5. else
  6. {
  7.   // Überprüfen ob der Artikel online ist
  8.   $von = $this->getValue('online_from');
  9.   $bis = $this->getValue('online_to');
  10.   $jetzt = time();
  11.  
  12.   // aktuellen On-/Offline-Status des Artikels abfragen
  13.   $aktStatus = $this->getValue('status');
  14.  
  15.   if( $von==$bis || ($jetzt > $von && $jetzt < $bis))
  16.   {
  17.     $status = 1;
  18.   }
  19.   else
  20.   {
  21.     $status = 0;
  22.   }
  23.  
  24.   if ($aktStatus == 0 || $status == 0 || !$chkUsrPerm)
  25.   {
  26.       if ($this->getValue("startpage") == 0)
  27.       {
  28.         // Weiterleitung für Artikel
  29.         header("Location: http://".$_SERVER[HTTP_HOST].$_SERVER[PHP_SELF].$notFoundArticleLink);
  30.         exit;
  31.       }
  32.       else
  33.       {
  34.         // Weiterleitung für Kategorien
  35.         header("Location: http://".$_SERVER[HTTP_HOST].$_SERVER[PHP_SELF].$notFoundArticleLink);
  36.         exit;
  37.       }
  38.   }
  39. }

Liegt keine Anmeldung im Backend vor, wird der Onlinestatus des Artikels geprüft. Dazu wird zum einen verglichen, ob das aktuelle Datum im Bereich Online von / Online bis liegt, bzw. ob Online von / Online bis ein gleiches Datum enthalten.

Ist das der Fall, wird der Artikel angezeigt. Das gilt auch für den Fall, dass der Artikel “online” ist.

In allen anderen Fällen wird auf die Fehlerseite weitergeleitet.