5 Commits

Author SHA1 Message Date
Jürgen Mummert e7f832fb53 Migrate to mummert/nossenerland-import-bundle namespace 2026-03-08 18:01:53 +01:00
Jürgen Mummert e5656424bc feat: map external_location to location_id 2026-03-01 22:39:45 +01:00
Jürgen Mummert 217d14e6cc fix: sync tags relation table on import 2026-03-01 22:34:42 +01:00
Jürgen Mummert 141ef8b1b3 feat: assign imported events to tag 23 2026-03-01 22:29:36 +01:00
Jürgen Mummert 4764857306 chore: relax php requirement to ^8.3 2026-03-01 22:20:23 +01:00
6 changed files with 41 additions and 12 deletions
+4 -4
View File
@@ -1,10 +1,10 @@
{ {
"name": "eiswurm/nossenerland-import-bundle", "name": "mummert/nossenerland-import-bundle",
"description": "Nossener Land event import bundle for Contao 5.7.", "description": "Nossener Land event import bundle for Contao 5.7.",
"type": "contao-bundle", "type": "contao-bundle",
"license": "proprietary", "license": "proprietary",
"require": { "require": {
"php": "^8.4", "php": "^8.3",
"contao/core-bundle": "^5.7", "contao/core-bundle": "^5.7",
"contao/calendar-bundle": "^5.7", "contao/calendar-bundle": "^5.7",
"contao/manager-plugin": "^2.0", "contao/manager-plugin": "^2.0",
@@ -13,11 +13,11 @@
}, },
"autoload": { "autoload": {
"psr-4": { "psr-4": {
"Eiswurm\\NossenerlandImportBundle\\": "src/" "Mummert\\NossenerlandImportBundle\\": "src/"
} }
}, },
"extra": { "extra": {
"contao-manager-plugin": "Eiswurm\\NossenerlandImportBundle\\Contao\\Manager\\Plugin" "contao-manager-plugin": "Mummert\\NossenerlandImportBundle\\Contao\\Manager\\Plugin"
}, },
"config": { "config": {
"allow-plugins": { "allow-plugins": {
+2 -2
View File
@@ -3,13 +3,13 @@ services:
autowire: true autowire: true
autoconfigure: true autoconfigure: true
Eiswurm\NossenerlandImportBundle\: Mummert\NossenerlandImportBundle\:
resource: ../src/ resource: ../src/
exclude: exclude:
- ../src/DependencyInjection/ - ../src/DependencyInjection/
- ../src/Contao/Manager/ - ../src/Contao/Manager/
- ../src/NossenerlandImportBundle.php - ../src/NossenerlandImportBundle.php
Eiswurm\NossenerlandImportBundle\Command\ImportEventsCommand: Mummert\NossenerlandImportBundle\Command\ImportEventsCommand:
arguments: arguments:
$projectDir: '%kernel.project_dir%' $projectDir: '%kernel.project_dir%'
+31 -2
View File
@@ -2,7 +2,7 @@
declare(strict_types=1); declare(strict_types=1);
namespace Eiswurm\NossenerlandImportBundle\Command; namespace Mummert\NossenerlandImportBundle\Command;
use Contao\CoreBundle\Framework\ContaoFramework; use Contao\CoreBundle\Framework\ContaoFramework;
use Contao\Dbafs; use Contao\Dbafs;
@@ -27,7 +27,7 @@ class ImportEventsCommand extends Command
private const int TARGET_CALENDAR_ID = 1; private const int TARGET_CALENDAR_ID = 1;
private const int TARGET_ORGANIZATION_ID = 142; private const int TARGET_ORGANIZATION_ID = 142;
private const int TARGET_AUTHOR_ID = 8; private const int TARGET_AUTHOR_ID = 8;
private const array DEFAULT_TAGS = [7, 8]; private const array DEFAULT_TAGS = [23];
public function __construct( public function __construct(
private readonly ContaoFramework $framework, private readonly ContaoFramework $framework,
@@ -196,6 +196,7 @@ class ImportEventsCommand extends Command
'url' => sprintf('https://kirchspiel-nossener-land.de/termine/%s', $alias), 'url' => sprintf('https://kirchspiel-nossener-land.de/termine/%s', $alias),
'jumpTo' => 0, 'jumpTo' => 0,
'articleId' => 0, 'articleId' => 0,
'location_id' => (int) ($event['external_location'] ?? 0),
'target' => 1, 'target' => 1,
'termsAccepted' => '1', 'termsAccepted' => '1',
'tags' => serialize(self::DEFAULT_TAGS), 'tags' => serialize(self::DEFAULT_TAGS),
@@ -212,6 +213,7 @@ class ImportEventsCommand extends Command
} }
$this->syncOrganization($eventId); $this->syncOrganization($eventId);
$this->syncTags($eventId, self::DEFAULT_TAGS);
} }
private function findEventIdByExternalId(string $externalId): int|null private function findEventIdByExternalId(string $externalId): int|null
@@ -240,6 +242,33 @@ class ImportEventsCommand extends Command
]); ]);
} }
/**
* @param int[] $tagIds
*/
private function syncTags(int $eventId, array $tagIds): void
{
$normalizedTagIds = array_values(array_unique(array_map('intval', $tagIds)));
$this->connection->delete('tl_tags_rel', [
'pid' => $eventId,
'ptable' => 'tl_calendar_events',
'field' => 'tags',
]);
foreach ($normalizedTagIds as $tagId) {
if ($tagId <= 0) {
continue;
}
$this->connection->insert('tl_tags_rel', [
'tag_id' => $tagId,
'pid' => $eventId,
'ptable' => 'tl_calendar_events',
'field' => 'tags',
]);
}
}
private function generateAlias(string $title, int $startDate, string $preferredAlias, int|null $eventId): string private function generateAlias(string $title, int $startDate, string $preferredAlias, int|null $eventId): string
{ {
$candidate = $preferredAlias !== '' ? $this->normalizeAlias($preferredAlias) : ''; $candidate = $preferredAlias !== '' ? $this->normalizeAlias($preferredAlias) : '';
+2 -2
View File
@@ -2,14 +2,14 @@
declare(strict_types=1); declare(strict_types=1);
namespace Eiswurm\NossenerlandImportBundle\Contao\Manager; namespace Mummert\NossenerlandImportBundle\Contao\Manager;
use Contao\CalendarBundle\ContaoCalendarBundle; use Contao\CalendarBundle\ContaoCalendarBundle;
use Contao\CoreBundle\ContaoCoreBundle; use Contao\CoreBundle\ContaoCoreBundle;
use Contao\ManagerPlugin\Bundle\BundlePluginInterface; use Contao\ManagerPlugin\Bundle\BundlePluginInterface;
use Contao\ManagerPlugin\Bundle\Config\BundleConfig; use Contao\ManagerPlugin\Bundle\Config\BundleConfig;
use Contao\ManagerPlugin\Bundle\Parser\ParserInterface; use Contao\ManagerPlugin\Bundle\Parser\ParserInterface;
use Eiswurm\NossenerlandImportBundle\NossenerlandImportBundle; use Mummert\NossenerlandImportBundle\NossenerlandImportBundle;
class Plugin implements BundlePluginInterface class Plugin implements BundlePluginInterface
{ {
@@ -2,7 +2,7 @@
declare(strict_types=1); declare(strict_types=1);
namespace Eiswurm\NossenerlandImportBundle\DependencyInjection; namespace Mummert\NossenerlandImportBundle\DependencyInjection;
use Symfony\Component\Config\FileLocator; use Symfony\Component\Config\FileLocator;
use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\ContainerBuilder;
+1 -1
View File
@@ -2,7 +2,7 @@
declare(strict_types=1); declare(strict_types=1);
namespace Eiswurm\NossenerlandImportBundle; namespace Mummert\NossenerlandImportBundle;
use Symfony\Component\HttpKernel\Bundle\Bundle; use Symfony\Component\HttpKernel\Bundle\Bundle;