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/import.php

93 lines
2.4 KiB
PHP

<?php
namespace Pandy06269\iCalImporter;
use Pandy06269\iCalImporter\includes\DrupalConfigFileReader;
use Pandy06269\iCalImporter\includes\DrupalDatabaseEventWriter;
use Pandy06269\iCalImporter\includes\Event;
use Pandy06269\iCalImporter\includes\ICSFileReader;
//define('DEBUG', true);
function autoload_include_file($class)
{
$class = substr($class, strlen('Pandy06269\\iCalImporter\\'));
$filePath = sprintf('%s/%s.php', __DIR__, str_replace('\\', DIRECTORY_SEPARATOR, $class));
require_once $filePath;
}
spl_autoload_register('\Pandy06269\iCalImporter\autoload_include_file');
if ($argc !== 3)
{
echo sprintf('Usage: %s <path to ical file> <path to Drupal config file>' . PHP_EOL, $argv[0]);
exit(1);
}
try
{
$pathToICSFile = trim($argv[1]);
$pathToDrupalConfig = trim($argv[2]);
$icsReader = new ICSFileReader($pathToICSFile);
$drupalReader = new DrupalConfigFileReader($pathToDrupalConfig);
echo sprintf('Reading iCal data from %s' . PHP_EOL, $icsReader->getPath());
echo sprintf('Using Drupal connection details from %s' . PHP_EOL, $drupalReader->getPath());
echo '---' . PHP_EOL;
$events = $icsReader->getEvents();
echo sprintf('%d event%s found' . PHP_EOL, count($events), count($events) == 1 ? '' : 's');
echo '---' . PHP_EOL;
/** @var Event $event */
$index = 0;
foreach ($events as $event)
{
echo sprintf('%d: %s | %s' . PHP_EOL, $index, $event->getUid(), $event->getStartDate()->format('H:i:s d/M/Y'));
echo $event->getTitle() . PHP_EOL;
if (strlen($event->getDescription()))
{
echo PHP_EOL . $event->getDescription() . PHP_EOL;
}
echo '---' . PHP_EOL;
$index++;
}
echo PHP_EOL . '*** Imported ICS file ***' . PHP_EOL;
if (count($events) == 0)
{
exit(0);
}
echo '*** Ready to upload to Drupal ***' . PHP_EOL . PHP_EOL;
$character = readline('Do you want to continue? ');
if (strtolower($character) !== 'y')
{
exit(0);
}
echo PHP_EOL;
$target = new DrupalDatabaseEventWriter($drupalReader);
$target->open();
/** @var Event $event */
foreach ($events as $event)
{
$target->upload($event);
}
$target->close();
}
catch (\Exception $e)
{
echo sprintf('Caught exception: %s' . PHP_EOL, $e->getMessage());
echo $e->getTraceAsString();
}