mirror of
https://github.com/werkraum-media/events.git
synced 2024-11-22 14:56:11 +01:00
Daniel Siepmann
ab75902a95
We migrated the part of the import to use DataHandler. We didn't invest too much time as budgets are low. Still the bugs are covered with tests and fixed. Relates: #10782
73 lines
2 KiB
PHP
73 lines
2 KiB
PHP
<?php
|
|
|
|
namespace Wrm\Events\Service\DestinationDataImportService;
|
|
|
|
use TYPO3\CMS\Extbase\Persistence\Generic\PersistenceManager;
|
|
use TYPO3\CMS\Extbase\Persistence\ObjectStorage;
|
|
use Wrm\Events\Domain\Model\Category;
|
|
use Wrm\Events\Domain\Repository\CategoryRepository;
|
|
use Wrm\Events\Service\DestinationDataImportService\CategoriesAssignment\Import;
|
|
|
|
/**
|
|
* Provides APIs to work with categories that will be assigned to events during import.
|
|
*
|
|
* Categories mean TYPO3 sys_category records.
|
|
* Those are used for multiple records within destination data. E.g. categories or features.
|
|
*/
|
|
class CategoriesAssignment
|
|
{
|
|
/**
|
|
* @var CategoryRepository
|
|
*/
|
|
private $repository;
|
|
|
|
/**
|
|
* @var PersistenceManager
|
|
*/
|
|
private $persistenceManager;
|
|
|
|
public function __construct(
|
|
CategoryRepository $repository,
|
|
PersistenceManager $persistenceManager
|
|
) {
|
|
$this->repository = $repository;
|
|
$this->persistenceManager = $persistenceManager;
|
|
}
|
|
|
|
/**
|
|
* @return ObjectStorage<Category>
|
|
*/
|
|
public function getCategories(
|
|
Import $import
|
|
): ObjectStorage {
|
|
$categories = new ObjectStorage();
|
|
|
|
if ($import->getParentCategory() === null || $import->getPid() === null) {
|
|
return $categories;
|
|
}
|
|
|
|
foreach ($import->getCategoryTitles() as $categoryTitle) {
|
|
$category = $this->repository->findOneForImport(
|
|
$import->getParentCategory(),
|
|
$import->getPid(),
|
|
$categoryTitle
|
|
);
|
|
|
|
if (!$category instanceof Category) {
|
|
$category = new Category(
|
|
$import->getParentCategory(),
|
|
$import->getPid(),
|
|
$categoryTitle,
|
|
$import->getHideByDefault() ? true : false
|
|
);
|
|
$this->repository->add($category);
|
|
}
|
|
|
|
$categories->attach($category);
|
|
}
|
|
|
|
$this->persistenceManager->persistAll();
|
|
|
|
return $categories;
|
|
}
|
|
}
|