per eigener Extension Dateien einer FileCollection hinzufügen

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

per eigener Extension Dateien einer FileCollection hinzufügen

Oliver Baran
Hallo zusammen,

ich komme hier leider nicht weiter. Ich versuche in einer eigenen Extension
eine File Collection anzulegen, um daraus später eine Galerie zu erstellen.
Ich habe es schon geschafft die File Collection per PHP Code anzulegen,
aber bei dem Versuch der Collection Dateien hinzuzufügen scheitere ich grad.

Mein Code sieht im Moment ca so aus (Den Code habe ich u.a. von
news_importicsxml von Georg Ringer adaptiert):
/**
 * @param array $importItem
 * @return null|\MiniFranske\FsMediaGallery\Domain\Model\MediaAlbum
 */
protected function initializeGalleryRecord(array $importItem)
{
    $gallery = null;

    if ($importItem['import_source'] && $importItem['import_id']) {
        $gallery =
$this->mediaAlbumRepository->findOneByImportId($importItem['import_id']);
    }

    if ($gallery === null) {
        $gallery =
$this->objectManager->get(\MiniFranske\FsMediaGallery\Domain\Model\MediaAlbum::class);
        $this->mediaAlbumRepository->add($gallery);
    }

    return $gallery;
}

/**
 * @param \MiniFranske\FsMediaGallery\Domain\Model\MediaAlbum $gallery
 * @param array $importItem
 * @param array $importItemOverwrite
 * @return \MiniFranske\FsMediaGallery\Domain\Model\MediaAlbum
 */
protected function hydrateMediaImportRecord(
\MiniFranske\FsMediaGallery\Domain\Model\MediaAlbum $gallery,
array $importItem, array $importItemOverwrite
)
{
    if (!empty($importItemOverwrite)) {
            $importItem = array_merge($importItem, $importItemOverwrite);
        }

        $gallery->setPid($importItem['pid']);
        $gallery->setHidden($importItem['hidden']);
        $gallery->setTitle($importItem['title']);
        $gallery->setWebdescription($importItem['title']);
        $gallery->setImportId($importItem['import_id']);

        // media relation
        if (is_array($importItem['media'])) {
            /** @var $fileCollection
\TYPO3\CMS\Core\Resource\Collection\StaticFileCollection */
            $fileCollection =
$gallery->getFileCollectionRepository()->findByUid($gallery->getUid());
            $fileCollection->loadContents();

            foreach ($importItem['media'] as $mediaItem) {

                if (!isset($mediaItem['image']) ||
empty($mediaItem['image'])) {
                    continue;
                }
                // get fileobject by given identifier (file UID, combined
identifier or path/filename)
                $file =
$this->getResourceFactory()->retrieveFileOrFolderObject($mediaItem['image']);

                $fileCollection->add($file);
            }
            $fileCollection->persist();
        }

        return $gallery;
    }

/**
 * Import
 *
 * @param array $importData
 * @param array $importItemOverwrite
 * @param array $settings
 */
public function import(array $importData, array $importItemOverwrite = [],
                       $settings = [])
{
    $this->settings = $settings;

    foreach ($importData as $importItem) {
        $arguments  = ['importItem' => $importItem];
        $return     = $this->emitSignal('preHydrate', $arguments);
        $importItem = $return['importItem'];

        $gallery = $this->initializeGalleryRecord($importItem);
        $this->hydrateMediaImportRecord($gallery, $importItem,
$importItemOverwrite);
        $this->persistenceManager->persistAll();
    }
}


Habt ihr eine Idee woran es liegen kann, dass die Dateien nicht der
FileCollection hinzugefügt werden?
Wenn ich per debug($fileCollection) ausgeben lasse, wird mir angezeigt,
dass sich theoretisch Dateien in dem Object befinden.

Danke und Viele Grüße
Oliver
_______________________________________________
TYPO3-german mailing list
[hidden email]
http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
Loading...