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;
}
}
?>
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