Typo 8.7 / External Import – Error when importing with external import in CLI in custom extbase extension



I’ve been working on an extension that import a JSON, make a PHP array of what is needed and import it with external_import. This is meant to be a command that will be run with a Cronjob.

At the moment, I recieve 2 differents errors from external_import (I don’t know why the error changes).

The requested configuration was not found (table: tx_something_domain_model_formation, index: 0). Message: The temporary cache file “thisisthepathtothewebsites/typo3temp/var/Cache/Data/l10n/61794fcc21579208003962.temp” could not be written. [1334756737]

OR

User doesn’t have enough rights for synchronizing table tx_something_domain_model_formation.

Here are the methods from the Command Class

protected function configure()
{
    $this->setDescription('Synchroniser les formations externe dans typo3.');
}

protected function execute(InputInterface $input, OutputInterface $output)
{
    $io = new SymfonyStyle($input, $output);

    $arrayFormations = $this->getFormations();
    $message = $this->importFormation($arrayFormations);
    print_r($message);
    $io->writeln('Test');
    return 0;
}

private function getFormations(){
    $jsonPartOne = json_decode(file_get_contents(PATH_typo3conf . "ext/something/Ressources/Private/Assets/Json/apiPage1.json"), true);
    $jsonPartTwo = json_decode(file_get_contents(PATH_typo3conf . "ext/something/Ressources/Private/Assets/Json/apiPage2.json"), true);

    $jsonFormations = array_merge($jsonPartOne['elements'], $jsonPartTwo['elements']);

    return $jsonFormations;
}

private function importFormation(array $formations){
    if(count($formations) === 0){
        //TODO Erreur
        return;
    }

    $dataFormations = [];
    $dataGroupe = [];
    $dataformateurs = [];
    $dataFormationsGroupes = [];

    foreach ($formations as $formation){
        $dataFormations[] = [
            'id_formation' => $formation['idFormation'],
            'nom' => $formation['nom'],
            'description' => $formation['description']['texteHtml'],
            'duree' => $formation['dureeFormation']['dureeEnHeures'],
        ];
    }

    $objectManager = TYPO3CMSCoreUtilityGeneralUtility::makeInstance(TYPO3CMSExtbaseObjectObjectManager::class);
    $importer = $objectManager->get(CobwebExternalImportImporter::class);
    $importer->getExtensionConfiguration();
    $importer->setContext('cli');
    $importer->setDebug(true);
    $importer->setVerbose(true);
    return $importer->import('tx_something_domain_model_formation', 0, $dataFormations);
}

Answer

I’ve probably found the solution.

Adding this line Bootstrap::getInstance()->initializeBackendAuthentication(); makes it works. It uses TYPO3CMSCoreCoreBootstrap;



Source: stackoverflow