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