Skip to content

Instantly share code, notes, and snippets.

@mammuth
Created April 17, 2015 20:45
Show Gist options
  • Save mammuth/74c1daed04f661dec641 to your computer and use it in GitHub Desktop.
Save mammuth/74c1daed04f661dec641 to your computer and use it in GitHub Desktop.
Owncloud 8 Calendar Feed importieren
<?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;
}
}
?>
@kriztan
Copy link

kriztan commented Apr 7, 2016

Wie sieht es mit OC9 aus? Wird es eine Anpassung geben, sodass es wieder funktioniert? Danke

Copy link

ghost commented Apr 20, 2016

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