Created
April 17, 2015 20:45
-
-
Save mammuth/74c1daed04f661dec641 to your computer and use it in GitHub Desktop.
Owncloud 8 Calendar Feed importieren
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/* | |
* Dieses Script importiert die Events aus einem ics-Calendar-Feed in Owncloud 8 oder 7. Die Kalender werden jeweils nur dann aktualisiert, wenn das Skript aufgerufen wird - sprich hier sollte ein cronjob für die Ausführung des Scripts erstellt werden. | |
* | |
* (Es sind einige Anpassungen im Skript notwendig) | |
* | |
* Gefunden auf zeit-zu-handeln.net. Kleine Anpassungen für Owncloud 8. | |
*/ | |
//Hier den Pfad zur Owncloud-Installation einfügen | |
define('OWNCLOUD_DIR', 'pfad/zu/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'); | |
/* | |
* Hier die verschiedenen zu importierenden Feeds eintragen | |
* userid: Der Benutzername auf dessen Konto der Kalender importiert werden soll | |
* displayname: Der Name des Kalenders in der Owncloud (muss vorher angelegt werden) | |
* filename: Die URL zum ICAL-Feed | |
*/ | |
$Import = array( | |
//Der öffentliche Feiertags-Kalender von Google | |
array( | |
"userid" => "username", | |
"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; | |
} | |
} | |
?> |
Wollte ebenfalls schon mal nachfragen ob das Projekt für Owncloud 9 angepasst wird? @kriztan es würde ein Python Projekt geben welches ICS-Files automatisch importieren kann => ics2owncloud . Das verwende ich zur Zeit.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Wie sieht es mit OC9 aus? Wird es eine Anpassung geben, sodass es wieder funktioniert? Danke