Termine von EGroupware automatisch in Drupal einbinden

Um Termine von Egroupware in Drupal automatisch anzuzeigen, werden folgende Dinge benötigt:

Und die folgenden Drupal Plugins:

  • CCK
  • Views
  • FeedAPI
  • FeedAPI Mapper
  • Date, Calendar
  • iCal parser (Version 1.1, Version 2.0 benötigt eine andere Feed API und funktioniert daher nicht)

Einstellungen für EGroupware

Für das exportieren des Kalenders aus EGr oupware wird das Modul “iCalSrv” benötigt. Es erstellt unter “http://domain.de/egroupware/icalsrv/icalsrv.php/username/events.ics” automatisch eine ics Datei. Der Pfad “http://domain.de/egroupware/” ist abhängig von der EGroupware Installation.

Automatisches kopieren per Cronjob

Das folgende Skript kopiert die icsDatei automatisch in das Verzeichniss der Webseite.

Die Zeile “/srv/www/vhosts/…../” muss durch den Ort ersetzt werden, an dem die ics Datei auf der Webseite liegen soll. Die Webadresse muss ebenfalls angepasst werden. Durch die Angabe von user und passwd kann sich wget auf die gesicherte Seite einloggen. Daher muss usernamehier und passworthier ebenfalls ersetzt werden. Dabei entsprechenden die beiden Angaben, der Zugangsdaten von EGroupware.

Danach muss unbedingt noch ein entsprechender Cronjob erstellt werden, welcher die sh Datei mit “sh /home/Order1/Order2/event.sh” aufruft. Dabei kann die Zeit z.B. auf alle 14 Minuten gestellt werden. Dadurch wird der Kalender bei einer Drupal Feed Aktualisierung von 15 Minuten, mindestens 1x davor aktualisiert.

Die Crontab Einstellung für diesen Cronjob würde daher dann so aussehen:

*/13 * * * * sh /…..event.sh

Drupal Einstellungen

Zuerst müssen die Plugins installiert werden und die Anleitung unter http://drupal.org/node/341716 befolgt werden.

Der Pfad zur ics Datei kann dann z.B. http://domain.de/events.ics sein. Dazu muss dieser Ort aber im Shell Skript zum kopieren der ICS Datei angegeben werden. Die Minimale Refresh Periode kann dann auf 15 Minuten gesetzt werden.

Probleme mit Zeitzonen

Sollte der Export aus Egroupware eine falsche Zeitzone aufweisen, kann man mithilfe von folgender Klasse und Shell-Skript die Zeit entsprechend bearbeiten.  Die Klasse addiert 2 Stunden zu jedem Termin hinzu. Durch das editieren der Variable timeadd kann dabei die Zeit erhöht oder reduziert werden. Wichtig ist, dass im Inhaltstyp Datum bei Drupal unter “Startseite » Verwalten»Inhaltsverwaltung » Datum” die Zeitzonenbehandlung auf “UTC” steht. Dies kann man durch klicken auf “Konfigurieren” ändern.

In beiden Skripten müssen Pfade und Dateinamen entsprechend der eigenen Gegebenheiten editiert werden. Die Java Klasse kann auf jede Shell mit folgendem Code compiliert werden:

Das Shell Skript wird dann anstatt des oben erwähnten Shell Skriptes verwendet:

Die Java Klasse dazu sieht folgendermaßen aus:



Tagged , ,

Leave a Reply

Your email address will not be published. Required fields are marked *