thuecat/Classes/Domain/Repository/Backend/ImportLogRepository.php

86 lines
2.6 KiB
PHP
Raw Normal View History

<?php
declare(strict_types=1);
/*
* Copyright (C) 2021 Daniel Siepmann <coding@daniel-siepmann.de>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
* 02110-1301, USA.
*/
namespace WerkraumMedia\ThueCat\Domain\Repository\Backend;
use TYPO3\CMS\Core\DataHandling\DataHandler;
use TYPO3\CMS\Extbase\Persistence\Generic\Typo3QuerySettings;
use TYPO3\CMS\Extbase\Persistence\QueryInterface;
use TYPO3\CMS\Extbase\Persistence\Repository;
use WerkraumMedia\ThueCat\Domain\Model\Backend\ImportLog;
class ImportLogRepository extends Repository
{
public function __construct(
private readonly DataHandler $dataHandler,
Typo3QuerySettings $querySettings
) {
parent::__construct();
$querySettings->setRespectStoragePage(false);
$this->setDefaultQuerySettings($querySettings);
$this->setDefaultOrderings([
'crdate' => QueryInterface::ORDER_DESCENDING,
]);
}
public function addLog(ImportLog $log): void
{
$dataHandler = clone $this->dataHandler;
$dataHandler->start([
'tx_thuecat_import_log' => [
'NEW0' => [
'pid' => 0,
'configuration' => $log->getConfigurationUid(),
],
],
'tx_thuecat_import_log_entry' => $this->getLogEntries($log),
], []);
$dataHandler->process_datamap();
}
private function getLogEntries(ImportLog $log): array
{
$number = 1;
$entries = [];
foreach ($log->getEntries() as $entry) {
$number++;
$entries['NEW' . $number] = array_merge(
$entry->getInsertion(),
[
'pid' => 0,
'import_log' => 'NEW0',
'type' => $entry->getType(),
'remote_id' => $entry->getRemoteId(),
2023-12-04 15:37:57 +01:00
'errors' => json_encode($entry->getErrors(), JSON_THROW_ON_ERROR),
]
);
}
return $entries;
}
}