/** * Index action */ public function indexAction() { $importSources = $this->importSourceRepository->findByPid((int) $_GET['id']); if ($importSources->count() === 0) { $this->addFlashMessage('select-page-with-importsources', '', AbstractMessage::WARNING); } if ($importSources->count() === 1) { $this->redirect('show', NULL, NULL, array('importSource' => $importSources->getFirst())); } $this->view->assign('importSources', $importSources); }
/** * Run importer * * @param int $limit number of sources to check */ public function runCommand($limit = 1) { $importSources = $this->importSourceRepository->findSourcesToImport($limit); $importReport = array(); if (isset($this->settings['filter']['searchFields']) && is_array($this->settings['filter']['searchFields'])) { $searchFields = $this->settings['filter']['searchFields']; } else { $searchFields = array('title', 'bodytext'); } $this->outputLine(); /** @var ImportSource $importSource */ foreach ($importSources as $importSource) { $this->outputLine($importSource->getTitle()); $this->outputDashedLine(); $this->extractorService->setSource($importSource->getUrl()); $this->extractorService->setMapping($importSource->getMapping()); $items = $this->extractorService->getItems(); foreach ($items as $item) { if ($this->importService->alreadyImported($importSource->getStoragePid(), $item->getGuid())) { $this->outputLine('Already imported: ' . $item->getGuid()); } elseif ($importSource->getFilterWords() && !$this->importService->matchFilter($item, $importSource->getFilterWords(), $searchFields)) { $this->outputLine('Skipped: ' . $item->getGuid() . '; Filter mismatch'); } else { $this->importService->importItem($importSource, $item); $this->outputLine('Imported: ' . $item->getGuid()); $importReport[] = $item->extractValue('title') . '; ' . $item->getGuid(); } } if (!$items) { $this->outputLine('No items found'); } $importSource->setLastRun(new \DateTime()); $this->importSourceRepository->update($importSource); $this->persistenceManager->persistAll(); } if ($importReport !== array() && !empty($this->settings['notification']['recipients'])) { /** @var MailMessage $message */ $message = GeneralUtility::makeInstance('TYPO3\\CMS\\Core\\Mail\\MailMessage'); $message->setTo($this->settings['notification']['recipients'])->setSubject($this->settings['notification']['subject'] ?: 'New items imported'); if ($GLOBALS['TYPO3_CONF_VARS']['MAIL']['defaultMailFromAddress']) { $message->setFrom($GLOBALS['TYPO3_CONF_VARS']['MAIL']['defaultMailFromAddress'], $GLOBALS['TYPO3_CONF_VARS']['MAIL']['defaultMailFromName'] ?: NULL); } $message->setBody(vsprintf($this->settings['notification']['body'] ?: 'Imported %1$d items: %2$s', array(count($importReport), PHP_EOL . PHP_EOL . implode(PHP_EOL, $importReport)))); $message->send(); } }