110 lines
2.8 KiB
PHP
110 lines
2.8 KiB
PHP
<?php
|
|
|
|
namespace Pandy06269\iCalDrupal;
|
|
|
|
use Pandy06269\iCalDrupal\includes\DrupalConfigFileReader;
|
|
use Pandy06269\iCalDrupal\includes\DrupalDatabaseEventWriter;
|
|
use Pandy06269\iCalDrupal\includes\Event;
|
|
use Pandy06269\iCalDrupal\includes\ICSFileReader;
|
|
|
|
//define('DEBUG', true);
|
|
|
|
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 ($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();
|
|
|
|
$numberCompleted = 0;
|
|
|
|
/** @var Event $event */
|
|
foreach ($events as $event)
|
|
{
|
|
echo sprintf('Uploading event %s ... ', $event->getUid());
|
|
|
|
try
|
|
{
|
|
$target->write($event);
|
|
echo 'OK' . PHP_EOL;
|
|
}
|
|
catch (\Exception $e)
|
|
{
|
|
echo 'failed' . PHP_EOL;
|
|
throw $e;
|
|
}
|
|
|
|
$numberCompleted++;
|
|
}
|
|
|
|
echo sprintf('%d event%s added successfully, disconnecting...' . PHP_EOL, $numberCompleted, $numberCompleted == 1 ? '' : 's');
|
|
$target->close();
|
|
echo 'Done' . PHP_EOL;
|
|
}
|
|
catch (\Exception $e)
|
|
{
|
|
echo sprintf('Caught exception: %s' . PHP_EOL, $e->getMessage());
|
|
echo $e->getTraceAsString();
|
|
} |