use Wallabag\CoreBundle\Entity\Tag;
use Psr\Log\LoggerInterface;
use Psr\Log\NullLogger;
+use Symfony\Component\EventDispatcher\EventDispatcherInterface;
+use Wallabag\CoreBundle\Event\EntrySavedEvent;
abstract class AbstractConsumer
{
protected $em;
protected $userRepository;
protected $import;
+ protected $eventDispatcher;
protected $logger;
- public function __construct(EntityManager $em, UserRepository $userRepository, AbstractImport $import, LoggerInterface $logger = null)
+ public function __construct(EntityManager $em, UserRepository $userRepository, AbstractImport $import, EventDispatcherInterface $eventDispatcher, LoggerInterface $logger = null)
{
$this->em = $em;
$this->userRepository = $userRepository;
$this->import = $import;
+ $this->eventDispatcher = $eventDispatcher;
$this->logger = $logger ?: new NullLogger();
}
$entry = $this->import->parseEntry($storedEntry);
if (null === $entry) {
- $this->logger->warning('Unable to parse entry', ['entry' => $storedEntry]);
+ $this->logger->warning('Entry already exists', ['entry' => $storedEntry]);
- return false;
+ // return true to skip message
+ return true;
}
try {
$this->em->flush();
+ // entry saved, dispatch event about it!
+ $this->eventDispatcher->dispatch(EntrySavedEvent::NAME, new EntrySavedEvent($entry));
+
// clear only affected entities
$this->em->clear(Entry::class);
$this->em->clear(Tag::class);