87 lines
2.1 KiB
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);
|
||
|
}
|