Dieses Howto beschreibt, wie man iCal-Kalender-Einträge aus Alfresco in den Kalender von OwnCloud importieren kann.
Links:
- http://zeit-zu-handeln.net/2014/02/allgemein/owncloud-6-kalender-ical-feeds-importierenexportieren/
- http://forum.owncloud.org/viewtopic.php?f=8&t=11267
Mit OwnCloud besteht die Möglichkeit über ein PHP Script iCal-Kalender Einträge zu importieren:
PHP-Script
Dieses PHP-Script importiert iCals nach OwnCloud:
#!/usr/bin/php <?php /* * Standalone PHP (CLI) script to import a calendar into owncloud. * * Assumes you have the file already on the server (perhaps via * wget or curl), and want to bring it in replacing all events. * Or in fact, if your PHP is compiled with `URL_fopen_wrappers', * then you can specify a URL for the filename and PHP will fetch * it for you. * * Be sure to set the definition of OWNCLOUD_DIR appropriately * for your owncloud installation. * * Script by George Ferguson <code@phurg.com> * Based on code from owncloud/apps/calendar/ajax/import/import.php * and owncloud/apps/calendar/lib/import.php. * This file is licensed under the Affero General Public License version 3 or * later. * * Tested with OwnCloud 5.0.10 (17?) using PHP 5.3.15 on OSX 10.8.3 * - calendars table name got changed to "oc_clndr_calendars" * - added exception handler for debugging otherwise silent failures * Tested with OwnCloud 5.0.5 using PHP 5.3.15 on OSX 10.8.3 and Ubuntu 12.04. */ 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'); # Process command-line $ARGV0 = $argv[0]; if ($argc != 4) { error_log("usage: " . $ARGV0 . " username calendarname filename"); exit(1); } $userid = $argv[1]; $displayname = $argv[2]; $filename = $argv[3]; # Lookup calendar given username and calendarname try { $stmt = OCP\DB::prepare( 'SELECT * FROM `*PREFIX*clndr_calendars` WHERE `userid` = ? AND `displayname` = ?' ); $result = $stmt->execute(array($userid, $displayname)); $row = $result->fetchRow(); $calendar_id = $row['id']; if (!$calendar_id) { error_log("$ARGV0: no calendar for userid " . $username . " with displayname '" . $displayname . "'"); exit(1); } } catch (Exception $e) { error_log("DB exception: " . $e); exit(1); } # Get input file contents $file = file_get_contents($filename); if ($file === FALSE) { error_log("$ARGV0: couldn't read file: $filename"); exit(1); } # Prepare to import $import = new OC_Calendar_Import($file); # Incantations done in real import code $import->setUserID($userid); $import->setTimeZone(OC_Calendar_App::$tz); $import->setCalendarID($calendar_id); $import->setOverwrite(true); # This condition is tested in OC_Calendar_Object::add() # in owncloud/apps/calendar/lib/object.php OC_User::setUserId($userid); # Try to do the import try { $import->import(); } catch (Exception $e) { error_log("$ARGV0: import failed: " . $e); exit(1); } # Done! $count = $import->getCount(); echo "$ARGV0: imported $count objects\n"; exit(0);
Cron-Job
Dieses Shell-Script holt sich von Alfresco den gewünschten iCal-Feed und führt den Import mit obigem PHP-Script durch. Das Shell-Script kann entsprechend als Cron-Job ausgeführt werden.
sudo vi /etc/cron.hourly/owncloud-importCalendar
#!/bin/bash echo "Download iCal:" wget --output-document=file.ics --user=user --password=password --no-check-certificate "https://url/alfresco/service/calendar/site.ics?site=site&format=calendar" echo "Fuere Import aus" php -f owncloud-import-calendar.php user "site" file.ics rm file.ics exit 0
sudo chmod +x /etc/cron.hourly/owncloud-importCalendar