DEPRECATION WARNING

This documentation is not using the current rendering mechanism and is probably outdated. The extension maintainer should switch to the new system. Details on how to use the rendering mechanism can be found here.

Eigene Implementierung

Im nachfolgenden wird die Verwendung einer eigenen Implementierung für den Meldungsimport beschrieben.

Die AbstractNewsImport-Klasse

Die AbstractNewsImport Klasse unter PresseServiceTYPO3DomainImportAbstractNewsImport kümmert sich um die Auflösung aller Abhängigkeiten und stellt einen Bauplan für konkrete Implementierungen eines NewsImports vom PresseService zur Verfügung.

Im nachfolgenden sind die Abhängigkeiten der AbstractNewsImport-Klasse erläutert.

Der Soap-Client

Der SoapClient unter PresseServiceTYPO3SoapClient dient als Hilfsklasse zur Abfrage des Webservers. Ersterer erwartet ein Konfigurations-Array für die URL des Webservers und die ID der Pressestelle.

Beispiel

Beispiel für ungecachte WSDL-Antworten:

Datei: MyExtClassesDomainImportSoapClient.php

<?php

namespace MyExt\Domain\Import;

use PresseService\TYPO3\SoapClient;

class UncachedWSDLSoapClient extends SoapClient
{
    public function __construct(array $configuration)
    {
        parent::__construct();
        $this->options['cache_wsdl'] = WSDL_CACHE_NONE;
    }
}

Eigene Implementierung der NewsImport Klasse.

<?php

namespace MyExt\Domain\Import;

use PresseService\TYPO3\Domain\Import\NewsImport;

class MyNewsImport extends NewsImport
{
    // todo: Konfiguration bereitstellen
    $config = [];
    $this->setSoapClient(new UncachedWSDLSoapClient($config));
}

Eigenen Task verwenden:

<?php

namespace MyExt\Task;

use TYPO3\CMS\Scheduler\Task\AbstractTask;
use MyExt\Domain\Import\MyNewsImport

class MySyncMeldungenTask extends AbstractTask
{
    /** @var bool Wahr, wenn ein vollständiger Meldungsimport gewünscht ist */
    public $complete = false;

    public function execute()
    {
        $newsImport = new MyNewsImport();
        $newsImport->setComplete($this->complete);

        return $newsImport->run();
    }
}

Nach diesem Schema können alle Abhängigkeiten der Abstrakten Klasse über Setter überschrieben und an anderen Orten (hier: Task) verwendet werden.