Owncloud 6 Kalender – ICAL-Feeds importieren/exportieren

ACHTUNG: Dieser Beitrag bezieht sich auf Version 6. In den Kommentaren findet Ihr Hinweise zur Funktion unter Owncloud 7 und 8.

Seit Owncloud 8.1 kann man diese Features über eine Alternative App bekommen, siehe: http://zeit-zu-handeln.net/2015/07/webdesign/owncloud-kalender-feeds-mit-calendar-plus/.

Mit Version 9 ist aber auch diese nicht mehr zu empfehlen. Zum aktuellen Stand dieses Features siehe meinen Kommentar vom 11.07.2016 weiter unten.

Spätestens seit der Version 5.0 eignet sich Owncloud perfekt um seine Kalender selbst zu hosten. Die Bedienung im Browser, so wie die für mich viel wichtigere Synchronisation mit Thunderbird und meinem Android-Handy via CalDAV läuft eigentlich „out of the box“. Bei Thunderbird klappt das mit dem Kalender-Addon Lightning und bei Android habe ich gute Erfahrungen mit der App CalDAV-Sync gemacht.

Nichts desto trotz gab es paar Dinge die mich am Kalender von Owncloud immer gestört haben. Zu denen gehört an oberster Stelle der Import und Export von ICAL-Feeds. Ich zeige hier auf, wie man seine cloud um diese Features nachrüsten kann.

ICAL-Feed importieren

Einzelne Kalenderdaten (*.ics, *.ical) lassen sich über die Benutzeroberfläche derzeit leicht importieren, doch das Abonnieren von ICAl-Feeds ist so nicht möglich. Abhilfe schafft ein kleines PHP-Skript, welches sich die bereits bestehende Import-Funktionalität zunutze macht und Termine aus einer Feed-Adresse einliest. Ich habe diesen Codeschnipsel im Owncloud-Forum entdeckt und ein wenig angepasst.


 "sahne",
	 "displayname" => "Piraten Mittelfranken",
	 "filename" => "https://events.piratenpartei-bayern.de/events/ical/?gid[]=10&limit=&subgroups=1&start=01.01.2013&end=&submit=Generieren"
 ),
 //Der öffentliche Feiertags-Kalender von Google
 array(
	 "userid" => "sahne",
	 "displayname" => "Feiertage",
	 "filename" => "https://www.google.com/calendar/ical/de.german%23holiday%40group.v.calendar.google.com/public/basic.ics"
 ),
);

foreach($Import AS $cal)
{
 //Nachsehen ob der Kalender auf der Owncloud auch existiert
 try {
	 $stmt = OCP\DB::prepare( 'SELECT * FROM `*PREFIX*clndr_calendars` WHERE `userid` = ? AND `displayname` = ?' );
	 $result = $stmt->execute(array($cal["userid"], $cal["displayname"]));
	 $row = $result->fetchRow();
	 $calendar_id = $row['id'];
	 if (!$calendar_id) {
		echo "No calendar for userid " . $cal["userid"] . " with displayname '" . $cal["displayname"] . "'";
	 }
 } catch (Exception $e) {
	echo "DB exception: " . $e;
 }

 // Daten aus dem Feed laden
 $file = file_get_contents($cal["filename"]);
 if ($file === FALSE) {
	echo "Couldn't read file: ".$cal["filename"];
 }

 //Import durchführen
 $import = new OC_Calendar_Import($file);
 $import->setUserID($cal["userid"]);
 $import->setTimeZone(OC_Calendar_App::$tz);
 $import->setCalendarID($calendar_id);
 $import->setOverwrite(true);
 OC_User::setUserId($cal["userid"]);

 try {
	 $import->import();
	 $count = $import->getCount();
	echo "Imported ".$count." objects in Calendar ".$cal["displayname"]."(".$cal["userid"].")\n";
 } catch (Exception $e) {
	echo "Import failed: " . $e;
 }
}

?>

Wenn man diese Datei nun als Cronjob im gewünschtem Intervall ausführen lässt hat man alle Termine immer im Blick.

ICAL-Feeds exportieren

Es gibt bisher nicht die Möglichkeit einen öffentlichen ICAL-Feed von Kalendern zu erstellen. Man kann sich zwar eingeloggt mit entsprechenden Rechten Kalender als ICAL exportieren und könnte diese URL auch anderswo importieren, jedoch müssten hierzu Benutzername und Passwort in der URL übergeben werden.

Abhilfe schafft ein Update von rysiekpl welches sich auf GitHub herunterladen lässt. Die Dateien einfach mit denen der ursprünglichen Kalender-App unter apps/calendar ersetzen und es wird die Funktionalität Kalender öffentlich zu teilen, wie man es aus anderen Bereichen der Owncloud kennt, nachgerüstet. Wer ungern an an seiner Installation rumspielt sei gesagt, dass das Update mit etwas Glück im nächsten offiziellen Release eingebaut wird.

61 Gedanken zu „Owncloud 6 Kalender – ICAL-Feeds importieren/exportieren“

  1. Hallo Sahne,

    ich bin dabei, owncloud auf meinen rasppi einzurichten und bin dabei auch auf die fehlende integration externer Kalender gestoßen.

    Könntest du für einen Linux-Anfänger erklären, wie man via ssh ein solches PHP script anlegt und es als cron laufen lässt?

    thanks in advance.

  2. hi, habe lange nach so ner Möglichkeit gesucht, würde mir gerne den Bundesligaspielplan einbinden.

    Krieg jetzt aber eine Fehlermeldung wenn ich versuche auf meine generierte php Datei (Deine als Vorlage genommen und nur die Adresszeilen und den Link zum Kalender geändert) zuzugreifen kommt folgender Fehler : „Warning: require_once(/http/bulach1.pf-control.de/owncloud/lib/base.php): failed to open stream: No such file or directory in /var/customers/webs/bulach1/owncloud/vfb.php on line 5 Call Stack: 0.0003 690248 1. {main}() /var/customers/webs/bulach1/owncloud/vfb.php:0 Fatal error: require_once(): Failed opening required ‚/http/bulach1.pf-control.de/owncloud/lib/base.php‘ (include_path=‘.:/usr/share/php5/:/usr/share/php/PEAR/:/usr/share/php/‘) in /var/customers/webs/bulach1/owncloud/vfb.php on line 5 Call Stack: 0.0003 690248 1. {main}() /var/customers/webs/bulach1/owncloud/vfb.php:0“

    Woran liegt das? kann es sein dass ich bereits bei define was falsches eingebe? Bin neu im Umgang mit php

    Danke für Deine Hilfe

    1. Hallo Dimi,

      ja vermutlich wird es daran liegen.

      Du kannst den richtigen Pfad ermitteln, indem du eine Datei mit folgendem Code in dem Owncloud-Verzeichnis anlegst und anschließend aufrufst:
      < ?php echo 'Ihr absoluter Pfad: '.$_SERVER['DOCUMENT_ROOT']; ?>

  3. Vielen Dank für das Skript, genau sowas suche ich. Jedoch bekomme ich immer eine Fehlermeldung mit OC 6.0.4:

    PHP Fatal error: Call to a member function getComponents() on a non-object in /srv/http/owncloud/apps/calendar/lib/import.php on line 114

    Hast du dafür evtl. eine Erklärung? Das wäre super.

  4. Sorry, der Fehler lag nicht an deinem Script, mein letzter Kommentar ist hinfällig. Also danke nochmal fürs Script!

  5. Hallo Sahne,

    dein Skript ist klasse – genau das, was ich gesucht habe. Nur funktioniert es leider nicht mit OC7.
    Hast du schon eine Idee, wie man es ändern muss?

    1. Hallo, ich komme derzeit und absehbar auch die nächsten paar Wochen nicht dazu. Oliver Schönemann hat aber hier in den Kommentaren eine Lösung gepostet die bei ihm funktioniert.

  6. Moin,

    danke für das Script. Mit den folgenden zusätzlichen Zeilen:

    require_once(OWNCLOUD_DIR . ‚/apps/calendar/lib/object.php‘);
    require_once(OWNCLOUD_DIR . ‚/apps/calendar/lib/calendar.php‘);
    require_once(OWNCLOUD_DIR . ‚/apps/calendar/lib/app.php‘);

    funktioniert es auch unter OC 7.0.1.

  7. Hi,
    danke für eure Hinweise!

    Eine Ergänzung muss noch in /apps/calendar/lib/import.php gemacht werden:

    Zeile 142:
    alt: OC_Cache::remove($this->progresskey);
    neu: \OC\Cache::remove($this->progresskey);

    … dann verschwindet eine Fehlermeldung, der Import hat auch so geklappt.

    1. Darauf hat mich auch schon Thomas per Mail aufmerksam gemacht. Hier muss man aufpassen welche Version man installiert hat. Die von dir angesprochene Änderung ist wohl ab Version 7.01 nicht mehr nötig, so wurde mir gesagt.

  8. Hallo Sahne,

    dein Script habe ich ans Laufen bekommen, top!

    Leider kommt man mit dem public sharing bei OC nicht weiter. Der Entwicklungsstand von rysiekpl scheint auf 6.0 zu basieren, für 7.x wurde es nicht implementiert. Der ganze Ansatz ist auch sehr komplex, kein Wunder, dass es ewig dauert.

    Könnte man nicht die mit einem Script die export.php nutzen, um ein .ics in den File Bereich zu schreiben? Dort könnte man es freigeben. Oder noch einfacher, Ausgabe auf einem beliebigen Pfad des Webservers.

    Gruß Karl

  9. Hallo,
    ich habe das Skript mit Oliver Schönemanns Anpassungen übernommen. Das Auführen des Skripts liefert leider in den meisten Fällen folgende Fehlermeldung:

    Import failed: exception ‚PDOException‘ with message ‚SQLSTATE[HY000]: General error: 5 database is locked‘ in /var/www/html/owncloud/3rdparty/doctrine/dbal/lib/Doctrine/DBAL/Statement.php:138
    Stack trace:
    #0 /var/www/html/owncloud/3rdparty/doctrine/dbal/lib/Doctrine/DBAL/Statement.php(138): PDOStatement->execute(Array)
    #1 /var/www/html/owncloud/lib/private/db/statementwrapper.php(63): Doctrine\DBAL\Statement->execute(Array)
    #2 /var/www/html/owncloud/apps/calendar/lib/object.php(285): OC_DB_StatementWrapper->execute(Array)
    #3 /var/www/html/owncloud/apps/calendar/lib/import.php(119): OC_Calendar_Object::delete(‚229‘)
    #4 /storage/owncloud/icalFeedImport.php(60): OC_Calendar_Import->import()
    #5 {main}

    Next exception ‚Doctrine\DBAL\DBALException‘ with message ‚An exception occurred while executing ‚DELETE FROM „oc_clndr_objects“ WHERE „id“ = ?‘:

    SQLSTATE[HY000]: General error: 5 database is locked‘ in /var/www/html/owncloud/3rdparty/doctrine/dbal/lib/Doctrine/DBAL/DBALException.php:47
    Stack trace:
    #0 /var/www/html/owncloud/3rdparty/doctrine/dbal/lib/Doctrine/DBAL/Statement.php(140): Doctrine\DBAL\DBALException::driverExceptionDuringQuery(Object(PDOException), ‚DELETE FROM „oc…‘, Array)
    #1 /var/www/html/owncloud/lib/private/db/statementwrapper.php(63): Doctrine\DBAL\Statement->execute(Array)
    #2 /var/www/html/owncloud/apps/calendar/lib/object.php(285): OC_DB_StatementWrapper->execute(Array)
    #3 /var/www/html/owncloud/apps/calendar/lib/import.php(119): OC_Calendar_Object::delete(‚229‘)
    #4 /storage/owncloud/icalFeedImport.php(60): OC_Calendar_Import->import()
    #5 {main}

    ownCloud 7.0.2 (stable) auf CentOS 6.

  10. Hallo,

    ich habe das Skirpt mit den Anpassungen von Oliver Schönemann übernommen. Wenn ich das Skript ausführe, erhalte ich aber oft die folgende Fehlermeldung (beim Ausführen als cron job fast immer):

    Import failed: exception ‚PDOException‘ with message ‚SQLSTATE[HY000]: General error: 5 database is locked‘ in /var/www/html/owncloud/3rdparty/doctrine/dbal/lib/Doctrine/DBAL/Statement.php:138
    Stack trace:
    #0 /var/www/html/owncloud/3rdparty/doctrine/dbal/lib/Doctrine/DBAL/Statement.php(138): PDOStatement->execute(Array)
    #1 /var/www/html/owncloud/lib/private/db/statementwrapper.php(63): Doctrine\DBAL\Statement->execute(Array)
    #2 /var/www/html/owncloud/apps/calendar/lib/object.php(285): OC_DB_StatementWrapper->execute(Array)
    #3 /var/www/html/owncloud/apps/calendar/lib/import.php(119): OC_Calendar_Object::delete(‚325‘)
    #4 /storage/owncloud/icalFeedImport.php(60): OC_Calendar_Import->import()
    #5 {main}

    Next exception ‚Doctrine\DBAL\DBALException‘ with message ‚An exception occurred while executing ‚DELETE FROM „oc_clndr_objects“ WHERE „id“ = ?‘:

    SQLSTATE[HY000]: General error: 5 database is locked‘ in /var/www/html/owncloud/3rdparty/doctrine/dbal/lib/Doctrine/DBAL/DBALException.php:47
    Stack trace:
    #0 /var/www/html/owncloud/3rdparty/doctrine/dbal/lib/Doctrine/DBAL/Statement.php(140): Doctrine\DBAL\DBALException::driverExceptionDuringQuery(Object(PDOException), ‚DELETE FROM „oc…‘, Array)
    #1 /var/www/html/owncloud/lib/private/db/statementwrapper.php(63): Doctrine\DBAL\Statement->execute(Array)
    #2 /var/www/html/owncloud/apps/calendar/lib/object.php(285): OC_DB_StatementWrapper->execute(Array)
    #3 /var/www/html/owncloud/apps/calendar/lib/import.php(119): OC_Calendar_Object::delete(‚325‘)
    #4 /storage/owncloud/icalFeedImport.php(60): OC_Calendar_Import->import()
    #5 {main}

    Weis jemand Rat? Ich benutze Owncloud 7.0.2 (stable) auf Centos 6.

  11. Vielen Dank für diese clevere Lösung!

    Leider funktioniert’s bei mir nicht mit OC 7.0.2 — oder habe ich was übersehen?

    Verstehe ich das richtig, das File einfach in die OC root directory rein tun, dann vom Browser aus testen?

    Liebe Grüsse
    Urs

  12. c47tpf sagt:
    7. Juli 2014 um 15:57

    Vielen Dank für das Skript, genau sowas suche ich. Jedoch bekomme ich immer eine Fehlermeldung mit OC 6.0.4:

    PHP Fatal error: Call to a member function getComponents() on a non-object in /srv/http/owncloud/apps/calendar/lib/import.php on line 114

    Hast du dafür evtl. eine Erklärung? Das wäre super.

    Ich bekomme die selber Fehlermeldung 🙁
    ct47tpf meint zwar es lag nicht am skript, aber woran denn dann? Kann jemand helfen?

  13. Moin Zusammen,

    habe dein script für meine Bedürfnisse angepasst. Mit OC6 lief es wunderbar. Nun habe ich ownCloud 7.0.2 (stable) und mit den Anpassung von Oliver gibt es dennoch Probleme.

    ./ical_feed.php
    PHP Fatal error: require_once(): Failed opening required ‚/var/www/owncloud/php’‘ (include_path=’/var/www/owncloud/3rdparty/phpseclib/phpseclib/phpseclib:/var/www/owncloud/lib/private:/var/www/owncloud/config:/var/www/owncloud/3rdparty:/var/www/owncloud/apps:/var/www/owncloud/lib:.:/usr/share/php:/usr/share/pear:/var/www/owncloud‘) in /var/www/owncloud/ical_feed.php on line 8

    #!/usr/bin/php -f
    <?php
    // Hier den Pfad zur Owncloud-Installation einfügen
    define('OWNCLOUD_DIR', '/var/www/owncloud/');

    require_once(OWNCLOUD_DIR . '/lib/base.php');
    require_once(OWNCLOUD_DIR . '/apps/calendar/lib/import.php');
    require_once(OWNCLOUD_DIR . ‘/apps/calendar/lib/object.php’);
    require_once(OWNCLOUD_DIR . ‘/apps/calendar/lib/calendar.php’);
    require_once(OWNCLOUD_DIR . ‘/apps/calendar/lib/app.php’);

    Bin ein wenig ratlos.

    Danke und Gruß
    monthy

  14. Hi, danke klasse Script, genau was ich gesucht habe!

    – Mit den Ergänzungen von Hr. Schönemann unter 7.0.3 lauffähig.
    – Die Anpassung von Andi (OC_Cache::remove($this->progresskey)) ist unter 7.0.3 nicht mehr notwendig.

    Gruß
    Slawa

  15. Kann man, statt einen Feed in einen neuen Kalender einzufügen auch einen bereitsbestehenden nehmen?

    Werden dann die dort enthaltenen Einträge gelöscht oder nur um die im Feed enthaltenen ergänzt?

  16. Hey Leute, danke für das Skript, aber leider will es bei mir auch mit den Anpassungen von oben nicht laufen…

    HP Fatal error: require_once(): Failed opening required ‚/var/www/html/owncloud/php’‘ (include_path=’/var/www/html/owncloud/3rdparty/phpseclib/phpseclib/phpseclib:/var/www/html/owncloud/lib/private:/var/www/html/owncloud/config:/var/www/html/owncloud/3rdparty:/var/www/html/owncloud/apps:/var/www/html/owncloud/lib:.:/usr/share/pear:/usr/share/php:/var/www/html/owncloud‘) in /var/www/html/owncloud/issimport.php on line 7

    hat jemand eine Idee?

    OC 7.0.4

    Grüße
    Ray

  17. Hallo

    Bringe leider das Skript nicht zum laufen unter OC 7.04. Habe alle Anpassung aus den Kommentaren vorgenommen und bin mir eigentlich sicher, dass ich den OC Directory richtig angegeben habe. Folgende Fehlermeldung nach manuellem aufrufen der php.

    Fatal error: require_once(): Failed opening required ‚/home/familygr/public_htmlphp’‘ (include_path=’/home/familygr/public_html/3rdparty/phpseclib/phpseclib/phpseclib:/home/familygr/public_html/lib/private:/home/familygr/public_html/config:/home/familygr/public_html/3rdparty:/home/familygr/public_html/apps:/home/familygr/public_html/lib:.:/usr/lib/php:/usr/local/lib/php:/home/familygr/public_html‘) in /home/familygr/public_html/owncloud_ical_feed.php on line 7

    Vielleicht kann ja jemand helfen.

    Ulf

  18. Hi hat schon wer unter 8 versucht ich hab es mit den anpassungen für 7 probiert und bis jetzt funktioniert es nicht (ich seh keine einträge in dem zuerst erstellten kalender in owncloud)

    lg max

  19. ok ich habs jetzt gelöst war scheinbar ein formatierungsfehler den ich nicht bemerkt hab in Oliver Schönemanns korrektur

    geht auch mit owncloud 8 🙂

  20. Bei mir schluckt er unter OC 8 einen Kalender problemlos, sobald ich jedoch einen zweiten und dritten in das Script mit einfüge, kommt eine Fehlermeldung. Kann das jemand bestätigen? Oder stimmt dann die Syntax von oben nicht mehr?

  21. Kann bitte mal jemand die aktuelle Version des Skripts, lauffähig unter OC > 7.01, irgendwo posten oder vielleicht sogar auf GitHub o. ä. stellen?

  22. Hey,

    erstmal vielen Dank für das Script. 🙂

    Aber wie kann man das so einstellen, dass er den anderen Kalender nicht löscht?
    Also dass ich z.b. Feiertage und meinen Hauptkalender in einem Kalender hab.

    Ist das überhaupt möglich? 🙂

    Vielen Dank 🙂
    Gruß

    1. Ich habe das nicht getestet, aber wenn du statt
      $import->setOverwrite(true);
      einfach
      $import->setOverwrite(false);
      setzt, sollte der Kalender nicht geleert werden.

      Evtl. wird aber nicht erkannt, dass es sich um Updates bestehender Termine handelt und es entstehen Dubletten. Einfach mal probieren.

  23. Du musst auf die einfachen Anführungszeichen achten. Wenn man den Code hier von der Webseite kopiert, werden die manchmal falsch.

  24. Hallo. Ich bekomme folgende Fehlermeldung unter OC 8.2:

    > php import_ics2oc.php
    Import failed: exception ‚OC\ForbiddenException‘ with message ‚Can\t get cache storage, user not logged in‘ in /volume1/web/owncloud/lib/private/cache/file.php:29
    Stack trace:
    #0 /volume1/web/owncloud/lib/private/cache/file.php(96): OC\Cache\File->getStorage()
    #1 /volume1/web/owncloud/lib/private/cache.php(85): OC\Cache\File->remove(NULL)
    #2 /volume1/web/owncloud/apps/calendar/lib/import.php(142): OC\Cache::remove(NULL)
    #3 /volume1/web/owncloud/import_ics2oc.php(58): OC_Calendar_Import->import()
    #4 {main}

    Ist das ein Problem mit dem Cache? Was muss ich da machen?

  25. OK, das scheint ein Problem mit meinen LDAP-Benutzern zu sein. Wenn ich den Import bei einem lokalen Benutzer mache, klappt alles. Hat jemand eine Lösung für LDAP-Benutzer gefunden?

  26. Und noch ein Kommentar 🙂
    Bei mir wurden die Termine um 2 Stunden verschoben importiert, weil UTC als Zeitzone benutzt wurde (OC 8.2). Als Lösung kann in der Datei lib/base.php die Zeile 500 auskommentiert werden:
    //date_default_timezone_set(‚UTC‘);
    Auf diese Weise wird dann die in php.ini eingestellte Zeitzone benutzt. Sonst steht in OC_Calendar_App::$tz der Wert „UTC“.

  27. Hi,
    mit den Erweiterungen von O.Schönemann hat der Import eines Google calenders in OC 8.0.4 anstandslos geklappt !! Vielen Dank! Habe das Script im OC Wurzelverzeichnis abgelegt, den Besitzer angepasst und im Browser aufgerufen! Voila…alle termin im Kalender!

    LG, Ireng

  28. Kleiner Tipp an alle die OC 8 einsetzen, muss zusetzlich zu
    require_once(OWNCLOUD_DIR . ‚/lib/base.php‘);
    require_once(OWNCLOUD_DIR . ‚/apps/calendar/lib/import.php‘);
    auch noch
    require_once(OWNCLOUD_DIR . ‚/apps/calendar/lib/app.php‘);
    require_once(OWNCLOUD_DIR . ‚/apps/calendar/lib/object.php‘);
    require_once(OWNCLOUD_DIR . ‚/apps/calendar/lib/calendar.php‘);
    einbinden.

  29. Hallo zusammen,

    das Script hat lange perfekt funktioniert, mit dem Update auf 8.1 klappt es leider nicht mehr.

    Hat sich zufällig schon jemand die Mühe gemacht es anzupassen? 🙂

  30. Leider werden die Termine bei mir weder auf meinem Jolla, noch im Lightning angezeigt sondern nur im Webinterface.
    Öffne ich dort einen Termin und speichere ihn erneut, wird er angezeigt. Ein Vergleich zeigt, dass danach ein „CLASS:PUBLIC“ auftaucht, was vermutlich die Änderung bewirkt.
    Leider habe ich keine Ahnung von php. Weiß hier jemand wie man das Script modifizieren muss um das beim Import mitreinzuschreiben?

  31. Vielleicht kann das hier ja jemand als Anregung gebrauchen …
    Ich hatte das Problem, dass ich in einer .ics die Zeitzonenangabe anpassen bzw. standardkonform machen musste, und außerdem möchte ich die Termine von Formel 1 und den NY Giants in denselben Kalender importieren, trotz $import->setOverwrite(true);. Das geht dann aber nur in einem Rutsch, also muss man die Events in eine Datei zusammenführen.
    Dazu habe ich mir folgenden Zusatz für den Anfang des Skripts durch Google zusammengeschustert.. ich übernehme aber keine Haftung, da ich selbst absolut keinen Schimmer habe!

    $path_to_file = ‚giants.ics‘;
    $file_contents = file_get_contents(„http://www.southendzone.com/ical/giants.ics“);
    $file_contents = str_replace(„US-Central“,“America/Chicago“,$file_contents);
    file_put_contents($path_to_file,$file_contents);

    $file_contents = file_get_contents(„http://i.cal.to/ical/94/formel1/grand-prix-rennen/0a94f575.a174c281-bbcadecb.ics“);
    file_put_contents($path_to_file,$file_contents,FILE_APPEND);

    Das dürfte sich so beliebig wiederholen lassen. Ob das Recycling des Variablennames oder sonst irgendwas sauberer Stil ist oder nicht, wie gesagt keine Ahnung, aber es funktioniert… Beim Import setzt man dann als filename eben keine URL, sondern eben nur den Filenamen, hier im Beispiel „giants.ics“.

  32. Danke für den Tipp!
    Dachte schon, ich bekomme es nicht zum laufen.

    @sahne
    Vielleicht kannst du das Script trotz der alternativen App aktualisieren.

  33. Hallo zusammen,

    meine Versuche das Script (und ähnliche andere) zum Laufen zu bringen, scheitern daran, dass das Script ohne Fehlermeldung abbricht. Ich habe ein paar Print(„irgend ein Text“) eingefügt und es scheint an „require_once(…base.php)“ zu liegen. Ich benutze OC 8.2.2

    Mein Ziel ist es einen Kalender, der mir nur als ICS Datei vorliegt, autmomatisch zu importieren.

    Mit Dank und Gruß,

    Tim

  34. Ergänzung: habe gerade im Log im OC Admin Bereich folgende Fehlermeldung gesehen:

    Error PHP Doctrine\DBAL\DBALException: Failed to connect to the database: An exception occured in driver: could not find driver at /var/www/owncloud/lib/private/db/connection.php#52

  35. Hi,

    noch ein Kommentar:
    Kalenderfeeds, die User/Passwortgeschützt sind, können folgendermaßen abgerufen werden:

    https://username:passwort@restliche_Domain/blabla.ics

    natürlich nicht besonders sicher, aber wer sich traut … und es ist ja klar, dass ein Script, welches einen Passwortgeschützten feed lesen soll, das Passwort braucht …

    Ehrlich gesagt hat bei mir Calendar plus überhaupt nicht funktioniert. Außerdem kann ich OC ansonsten unter PHP7 laufen lassen. Insofern, als dass es scheint, dass Calendar Plus nicht mehr weiterentwickelt wird, ist mir das script eh lieber.

    Grüße

  36. Hallo,

    das Script funktioniert bei mir sehr gut, bis auf eine Ausnahme.

    Wenn ich im führenden Kalender (hier Outlook) Serientermine habe und diese Termine sich ändern wird die Änderung nicht synchronisiert, sondern der ursprüngliche Termin.

    Hat das Problem auch jemand bemerkt oder hat vielleicht sogar eine Idee zur Lösung?

  37. Ach noch was:
    $import->setOverwrite(false);

    Wenn ich das mache habe ich lauter doppelte Termine im Kalender. Quelle ist eine ICS aus Exchange. Da muss man sehr aufpassen …

  38. Hi,
    klasse Script, gibt es mittlerweile eine Lösung für OC9 ohne auf eine andere Kalenderapp umzusteigen?
    Danke und Grüße

  39. Hallo, wenn ich versuche das Script zum laufen zu bekomme für owncloud 9.0.2 bekomme ich immer diese Meldung:

    php -f /var/www/vhosts/domain.de/httpdocs/owncloud/own
    cloud-import-calendar.php
    PHP Fatal error: require_once(): Failed opening required ‚/var/www/vhosts/domain.de/httpdocs/owncloud/
    /apps/calendar/lib/import.php‘ (include_path=’/var/www/vhosts/domain.de/httpdocs/owncloud/3rdparty/pear
    /console_getopt:/var/www/vhosts/domain.de/httpdocs/owncloud/3rdparty/pear/pear_exception:/var/www/vhost
    s/domain.de/httpdocs/owncloud/3rdparty/pear/pear-core-minimal/src:/var/www/vhosts/domain.de/httpd
    ocs/owncloud/3rdparty/pear/archive_tar:/var/www/vhosts/domain.de/httpdocs/owncloud/3rdparty/phpseclib/p
    hpseclib/phpseclib:/var/www/vhosts/domain.de/httpdocs/owncloud/lib/private:/var/www/vhosts/domain.de/httpdocs/owncloud/config:/var/www/vhosts/domain.de/httpdocs/owncloud/3rdparty:/var/www/vhosts/domain.de/httpdocs/owncloud/apps:.:/usr/share/php:/usr/share/pear:/var/www/vhosts/domain.de/httpdocs/o
    wncloud‘) in /var/www/vhosts/domain.de/httpdocs/owncloud/owncloud-import-calendar.php on line 28

    verschiedene Dateien wie die import.php scheinen ersetz worden zu sein.
    Jemand eine Idee?

    Gruß

    Lars

  40. Auf Owncloud 9 funktioniert das Script nicht mehr.

    Eine Alternative für alle die eine Python Umgebung haben wäre dieses hier: https://github.com/buzz/ics2owncloud.py

    Im übrigen wiedereinmal ist das Thema auch wiedermal bei der Kalender App aufgeschnappt worden und ist für den nächsten Release (Im Moment auf den 12. 07. datiert) vorgesehen.

    1. Und das Thema wurde wiedermal auf den nächsten Release verschoben (https://github.com/owncloud/calendar/issues/132).

      Derweil bleibt die Hoffnung, dass der Kalender bei Nextcloud (Fork durch den Gründer und einige der Hauptentwickler bei Owncloud, siehe: http://karlitschek.de/2016/06/nextcloud/), mehr Aufmerksamkeit bekommt. Schließlich soll der Kalender dort nun auch offizieller Bestandteil sein und keine ausgegliederte App mehr. Ein Issue wurde auch hier schon erstellt das es zu beobachten gilt (https://github.com/nextcloud/server/issues/252).

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.