/**
  * 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();
     }
 }
 /**
  * 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));
 }