{"id":336,"date":"2014-10-05T10:32:13","date_gmt":"2014-10-05T10:32:13","guid":{"rendered":"http:\/\/192.168.2.32:8082\/?p=336"},"modified":"2016-02-26T09:10:30","modified_gmt":"2016-02-26T09:10:30","slug":"sync-alfresco-ical-feeds-nach-owncloud","status":"publish","type":"post","link":"https:\/\/www.dev-metal.ch\/?p=336","title":{"rendered":"Sync Alfresco iCal Feeds nach OwnCloud"},"content":{"rendered":"<p>Dieses Howto beschreibt, wie man iCal-Kalender-Eintr\u00e4ge aus Alfresco in den Kalender von OwnCloud importieren kann.<!--more--><\/p>\n<p>Links:<\/p>\n<ul>\n<li><a href=\"http:\/\/zeit-zu-handeln.net\/2014\/02\/allgemein\/owncloud-6-kalender-ical-feeds-importierenexportieren\/\" target=\"_blank\">http:\/\/zeit-zu-handeln.net\/2014\/02\/allgemein\/owncloud-6-kalender-ical-feeds-importierenexportieren\/<\/a><\/li>\n<li><a href=\"http:\/\/forum.owncloud.org\/viewtopic.php?f=8&amp;t=11267\" target=\"_blank\">http:\/\/forum.owncloud.org\/viewtopic.php?f=8&amp;t=11267<\/a><\/li>\n<\/ul>\n<p>Mit OwnCloud besteht die M\u00f6glichkeit \u00fcber ein PHP Script iCal-Kalender Eintr\u00e4ge zu importieren:<\/p>\n<h1>PHP-Script<\/h1>\n<p>Dieses PHP-Script importiert iCals nach OwnCloud:<\/p>\n<pre class=\"lang:php decode:true\">#!\/usr\/bin\/php\r\n&lt;?php\r\n\/*\r\n\u00a0* Standalone PHP (CLI) script to import a calendar into owncloud.\r\n\u00a0*\r\n\u00a0* Assumes you have the file already on the server (perhaps via\r\n\u00a0* wget or curl), and want to bring it in replacing all events.\r\n\u00a0* Or in fact, if your PHP is compiled with `URL_fopen_wrappers',\r\n\u00a0* then you can specify a URL for the filename and PHP will fetch\r\n\u00a0* it for you.\r\n\u00a0*\r\n\u00a0* Be sure to set the definition of OWNCLOUD_DIR appropriately\r\n\u00a0* for your owncloud installation.\r\n\u00a0*\r\n\u00a0* Script by George Ferguson &lt;code@phurg.com&gt;\r\n\u00a0* Based on code from owncloud\/apps\/calendar\/ajax\/import\/import.php\r\n\u00a0* and owncloud\/apps\/calendar\/lib\/import.php.\r\n\u00a0* This file is licensed under the Affero General Public License version 3 or\r\n\u00a0* later.\r\n\u00a0*\r\n\u00a0* Tested with OwnCloud 5.0.10 (17?) using PHP 5.3.15 on OSX 10.8.3\r\n\u00a0* - calendars table name got changed to \"oc_clndr_calendars\"\r\n\u00a0* - added exception handler for debugging otherwise silent failures\r\n\u00a0* Tested with OwnCloud 5.0.5 using PHP 5.3.15 on OSX 10.8.3 and Ubuntu 12.04.\r\n\u00a0*\/\r\n\r\ndefine('OWNCLOUD_DIR', '\/var\/www\/owncloud');\r\n\r\nrequire_once(OWNCLOUD_DIR . '\/lib\/base.php');\r\nrequire_once(OWNCLOUD_DIR . '\/apps\/calendar\/lib\/import.php');\r\nrequire_once(OWNCLOUD_DIR . '\/apps\/calendar\/lib\/object.php');\r\nrequire_once(OWNCLOUD_DIR . '\/apps\/calendar\/lib\/calendar.php');\r\nrequire_once(OWNCLOUD_DIR . '\/apps\/calendar\/lib\/app.php');\r\n\r\n# Process command-line\r\n$ARGV0 = $argv[0];\r\nif ($argc != 4) {\r\n\u00a0\u00a0\u00a0 error_log(\"usage: \" . $ARGV0 . \" username calendarname filename\");\r\n\u00a0\u00a0\u00a0 exit(1);\r\n}\r\n$userid = $argv[1];\r\n$displayname = $argv[2];\r\n$filename = $argv[3];\r\n\r\n# Lookup calendar given username and calendarname\r\ntry {\r\n\u00a0\u00a0\u00a0 $stmt = OCP\\DB::prepare( 'SELECT * FROM `*PREFIX*clndr_calendars` WHERE `userid` = ? AND `displayname` = ?' );\r\n\u00a0\u00a0\u00a0 $result = $stmt-&gt;execute(array($userid, $displayname));\r\n\u00a0\u00a0\u00a0 $row = $result-&gt;fetchRow();\r\n\u00a0\u00a0\u00a0 $calendar_id = $row['id'];\r\n\u00a0\u00a0\u00a0 if (!$calendar_id) {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 error_log(\"$ARGV0: no calendar for userid \" . $username . \" with displayname '\" . $displayname . \"'\");\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 exit(1);\r\n\u00a0\u00a0\u00a0 }\r\n} catch (Exception $e) {\r\n\u00a0\u00a0\u00a0 error_log(\"DB exception: \" . $e);\r\n\u00a0\u00a0\u00a0 exit(1);\r\n}\r\n\r\n# Get input file contents\r\n$file = file_get_contents($filename);\r\nif ($file === FALSE) {\r\n\u00a0\u00a0\u00a0 error_log(\"$ARGV0: couldn't read file: $filename\");\r\n\u00a0\u00a0\u00a0 exit(1);\r\n}\r\n\r\n# Prepare to import\r\n$import = new OC_Calendar_Import($file);\r\n\r\n# Incantations done in real import code\r\n$import-&gt;setUserID($userid);\r\n$import-&gt;setTimeZone(OC_Calendar_App::$tz);\r\n$import-&gt;setCalendarID($calendar_id);\r\n$import-&gt;setOverwrite(true);\r\n\r\n# This condition is tested in OC_Calendar_Object::add()\r\n# in owncloud\/apps\/calendar\/lib\/object.php\r\nOC_User::setUserId($userid);\r\n\r\n# Try to do the import\r\ntry {\r\n\u00a0\u00a0\u00a0 $import-&gt;import();\r\n} catch (Exception $e) {\r\n\u00a0\u00a0\u00a0 error_log(\"$ARGV0: import failed: \" . $e);\r\n\u00a0\u00a0\u00a0 exit(1);\r\n}\r\n\r\n# Done!\r\n$count = $import-&gt;getCount();\r\necho \"$ARGV0: imported $count objects\\n\";\r\n\r\nexit(0);<\/pre>\n<h1>Cron-Job<\/h1>\n<p>Dieses Shell-Script holt sich von Alfresco den gew\u00fcnschten iCal-Feed und f\u00fchrt den Import mit obigem PHP-Script durch. Das Shell-Script kann entsprechend als Cron-Job ausgef\u00fchrt werden.<\/p>\n<pre class=\"lang:sh decode:true\">sudo vi \/etc\/cron.hourly\/owncloud-importCalendar\r\n<\/pre>\n<pre class=\"lang:sh decode:true \">#!\/bin\/bash\r\n   echo \"Download iCal:\"\r\n   wget --output-document=file.ics  --user=user --password=password --no-check-certificate \"https:\/\/url\/alfresco\/service\/calendar\/site.ics?site=site&amp;format=calendar\"\r\n   echo \"Fuere Import aus\"\r\n   php -f owncloud-import-calendar.php user \"site\" file.ics\r\n   rm file.ics\r\nexit 0<\/pre>\n<pre class=\"lang:sh decode:true\">sudo chmod +x \/etc\/cron.hourly\/owncloud-importCalendar<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Dieses Howto beschreibt, wie man iCal-Kalender-Eintr\u00e4ge aus Alfresco in den Kalender von OwnCloud importieren kann.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_lmt_disableupdate":"","_lmt_disable":"","footnotes":""},"categories":[4,12],"tags":[],"class_list":["post-336","post","type-post","status-publish","format-standard","hentry","category-alfresco","category-nextcloud"],"modified_by":"ralph","_links":{"self":[{"href":"https:\/\/www.dev-metal.ch\/index.php?rest_route=\/wp\/v2\/posts\/336","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dev-metal.ch\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dev-metal.ch\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dev-metal.ch\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dev-metal.ch\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=336"}],"version-history":[{"count":7,"href":"https:\/\/www.dev-metal.ch\/index.php?rest_route=\/wp\/v2\/posts\/336\/revisions"}],"predecessor-version":[{"id":624,"href":"https:\/\/www.dev-metal.ch\/index.php?rest_route=\/wp\/v2\/posts\/336\/revisions\/624"}],"wp:attachment":[{"href":"https:\/\/www.dev-metal.ch\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=336"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dev-metal.ch\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=336"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dev-metal.ch\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=336"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}