/** * Test import source by counting found items and displaying data of first item * * @param ImportSource $importSource */ public function testSourceCommand(ImportSource $importSource) { $this->outputLine('Fetch: ' . $importSource->getUrl()); $this->outputDashedLine(); $this->extractorService->setSource($importSource->getUrl()); $this->extractorService->setMapping($importSource->getMapping()); $items = $this->extractorService->getItems(); $this->outputLine('Found ' . count($items) . ' items'); $this->outputDashedLine(); if (count($items)) { $this->outputLine('GUID: ' . $items[0]->getGuid()); $this->outputDashedLine(); $this->outputLine(print_r($items[0]->toArray(), 1)); } }
/** * Import item * * @param ImportSource $importSource * @param string $guid * @return string * @throws \TYPO3\CMS\Extbase\Mvc\Exception\UnsupportedRequestTypeException */ public function importAction(ImportSource $importSource, $guid) { $this->extractorService->setSource($importSource->getUrl()); $this->extractorService->setMapping($importSource->getMapping()); $extractedItems = $this->extractorService->getItems(); foreach ($extractedItems as $item) { if ($item->getGuid() === $guid) { $this->importService->importItem($importSource, $item); $itemUid = $this->importService->alreadyImported($importSource->getPid(), $guid); $this->uriBuilder->reset()->setCreateAbsoluteUri(TRUE); if (\TYPO3\CMS\Core\Utility\GeneralUtility::getIndpEnv('TYPO3_SSL')) { $this->uriBuilder->setAbsoluteUriScheme('https'); } $returnUrl = $this->uriBuilder->uriFor('show', array('importSource' => $importSource), $this->request->getControllerName()); $this->redirectToUri('alt_doc.php?returnUrl=' . rawurlencode($returnUrl) . '&edit[tx_news_domain_model_news][' . $itemUid . ']=edit&disHelp=1'); } } $this->addFlashMessage('requested-item-not-found', '', AbstractMessage::ERROR); $this->redirect('show', NULL, NULL, array('importSource' => $importSource)); }
/** * @param array $data * @param ImportSource $importSource * @return NULL|array */ protected function processMedia(array $data, ImportSource $importSource) { $media = NULL; if (empty($data['image']) && $importSource->getDefaultImage()) { return array(array('type' => 0, 'image' => $importSource->getDefaultImage()->getOriginalResource()->getCombinedIdentifier(), 'showinpreview' => 1)); } $folder = NULL; if ($importSource->getImageFolder()) { try { $folder = ResourceFactory::getInstance()->getFolderObjectFromCombinedIdentifier(ltrim($importSource->getImageFolder(), 'file:')); } catch (\Exception $e) { } } if (!empty($data['image']) && $folder) { $media = array(); if (!is_array($data['image'])) { $data['image'] = array($data['image']); } foreach ($data['image'] as $image) { $tmp = GeneralUtility::getUrl($image); if ($tmp) { $tempFile = GeneralUtility::tempnam('news_importer'); file_put_contents($tempFile, $tmp); list(, , $imageType) = getimagesize($tempFile); try { $falImage = $folder->addFile($tempFile, ($data['title'] ?: 'news_import') . image_type_to_extension($imageType, TRUE), 'changeName'); $media[] = array('type' => 0, 'image' => $falImage->getCombinedIdentifier(), 'showinpreview' => 1); } catch (\Exception $e) { } } } } return $media; }
/** * @test */ public function setImageFolderForStringSetsImageFolder() { $this->subject->setImageFolder('Conceived at T3CON10'); $this->assertAttributeEquals('Conceived at T3CON10', 'imageFolder', $this->subject); }