This repository has been archived on 2020-02-18. You can view files and clone it, but cannot push or open issues or pull requests.
ical-drupal-calendar/export.php

87 lines
2.1 KiB
PHP

<?php
namespace Pandy06269\iCalDrupal;
use Pandy06269\iCalDrupal\includes\DrupalConfigFileReader;
use Pandy06269\iCalDrupal\includes\DrupalDatabaseEventReader;
use Pandy06269\iCalDrupal\includes\DrupalDatabaseEventWriter;
use Pandy06269\iCalDrupal\includes\Event;
use Pandy06269\iCalDrupal\includes\ICSEchoWriter;
use Pandy06269\iCalDrupal\includes\ICSFileReader;
//define('DEBUG', true);
define('DRUPAL_CONFIG_FILE', '../sites/default/settings.php');
function autoload_include_file($class)
{
$class = substr($class, strlen('Pandy06269\\iCalDrupal\\'));
$filePath = sprintf('%s/%s.php', __DIR__, str_replace('\\', DIRECTORY_SEPARATOR, $class));
require_once $filePath;
}
spl_autoload_register('\Pandy06269\iCalDrupal\autoload_include_file');
if (defined('DEBUG') && DEBUG)
{
ini_set('display_errors', 'on');
}
try
{
$drupalConfigReader = new DrupalConfigFileReader(DRUPAL_CONFIG_FILE);
$drupalEventReader = new DrupalDatabaseEventReader($drupalConfigReader);
$drupalEventReader->open();
$events = $drupalEventReader->getEvents();
usort($events, function(Event $x, Event $y)
{
if ($x->getStartDate() == $y->getStartDate())
{
return 0;
}
else if ($x->getStartDate() < $y->getStartDate())
{
return -1;
}
else
{
return 1;
}
});
$drupalEventReader->close();
header($_SERVER['SERVER_PROTOCOL'] . ' 200 OK', true, 200);
header('Content-Type: text/plain');
$icsWriter = new ICSEchoWriter();
$icsWriter->open();
/** @var Event $event */
foreach ($events as $event)
{
if ($event->getStartDate() > new \DateTime())
{
$icsWriter->write($event);
}
}
$icsWriter->close();
}
catch (\Exception $e)
{
if (defined('DEBUG') && DEBUG)
{
echo sprintf('Caught exception: %s' . PHP_EOL, $e->getMessage());
echo $e->getTraceAsString();
}
else
{
echo 'An error occurred';
}
header($_SERVER['SERVER_PROTOCOL'] . ' 500 Internal Server Error', true, 500);
}