X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;ds=sidebyside;f=src%2FWallabag%2FImportBundle%2FImport%2FAbstractImport.php;h=1b073e99ae3be65395e88d01ea8966f350ca745f;hb=8668796106b856ca041512af27268ce6e49d2caf;hp=9b6242967bc66074e1bfc18b4032268fe4da5e15;hpb=42708d1121fef12c84487247b170eb03083d5ffc;p=github%2Fwallabag%2Fwallabag.git diff --git a/src/Wallabag/ImportBundle/Import/AbstractImport.php b/src/Wallabag/ImportBundle/Import/AbstractImport.php index 9b624296..1b073e99 100644 --- a/src/Wallabag/ImportBundle/Import/AbstractImport.php +++ b/src/Wallabag/ImportBundle/Import/AbstractImport.php @@ -2,17 +2,17 @@ namespace Wallabag\ImportBundle\Import; +use Doctrine\ORM\EntityManager; +use OldSound\RabbitMqBundle\RabbitMq\ProducerInterface; use Psr\Log\LoggerInterface; use Psr\Log\NullLogger; -use Doctrine\ORM\EntityManager; -use Wallabag\CoreBundle\Helper\ContentProxy; +use Symfony\Component\EventDispatcher\EventDispatcherInterface; use Wallabag\CoreBundle\Entity\Entry; use Wallabag\CoreBundle\Entity\Tag; +use Wallabag\CoreBundle\Event\EntrySavedEvent; +use Wallabag\CoreBundle\Helper\ContentProxy; use Wallabag\CoreBundle\Helper\TagsAssigner; use Wallabag\UserBundle\Entity\User; -use OldSound\RabbitMqBundle\RabbitMq\ProducerInterface; -use Symfony\Component\EventDispatcher\EventDispatcherInterface; -use Wallabag\CoreBundle\Event\EntrySavedEvent; abstract class AbstractImport implements ImportInterface { @@ -46,8 +46,6 @@ abstract class AbstractImport implements ImportInterface /** * Set RabbitMQ/Redis Producer to send each entry to a queue. * This method should be called when user has enabled RabbitMQ. - * - * @param ProducerInterface $producer */ public function setProducer(ProducerInterface $producer) { @@ -57,8 +55,6 @@ abstract class AbstractImport implements ImportInterface /** * Set current user. * Could the current *connected* user or one retrieve by the consumer. - * - * @param User $user */ public function setUser(User $user) { @@ -97,6 +93,32 @@ abstract class AbstractImport implements ImportInterface return $this; } + /** + * {@inheritdoc} + */ + public function getSummary() + { + return [ + 'skipped' => $this->skippedEntries, + 'imported' => $this->importedEntries, + 'queued' => $this->queuedEntries, + ]; + } + + /** + * Parse one entry. + * + * @return Entry + */ + abstract public function parseEntry(array $importedEntry); + + /** + * Validate that an entry is valid (like has some required keys, etc.). + * + * @return bool + */ + abstract public function validateEntry(array $importedEntry); + /** * Fetch content from the ContentProxy (using graby). * If it fails return the given entry to be saved in all case (to avoid user to loose the content). @@ -119,10 +141,8 @@ abstract class AbstractImport implements ImportInterface /** * Parse and insert all given entries. - * - * @param $entries */ - protected function parseEntries($entries) + protected function parseEntries(array $entries) { $i = 1; $entryToBeFlushed = []; @@ -132,6 +152,10 @@ abstract class AbstractImport implements ImportInterface $importedEntry = $this->setEntryAsRead($importedEntry); } + if (false === $this->validateEntry($importedEntry)) { + continue; + } + $entry = $this->parseEntry($importedEntry); if (null === $entry) { @@ -144,7 +168,7 @@ abstract class AbstractImport implements ImportInterface $entryToBeFlushed[] = $entry; // flush every 20 entries - if (($i % 20) === 0) { + if (0 === ($i % 20)) { $this->em->flush(); foreach ($entryToBeFlushed as $entry) { @@ -176,8 +200,6 @@ abstract class AbstractImport implements ImportInterface * * Faster parse entries for Producer. * We don't care to make check at this time. They'll be done by the consumer. - * - * @param array $entries */ protected function parseEntriesForProducer(array $entries) { @@ -195,33 +217,10 @@ abstract class AbstractImport implements ImportInterface } } - /** - * {@inheritdoc} - */ - public function getSummary() - { - return [ - 'skipped' => $this->skippedEntries, - 'imported' => $this->importedEntries, - 'queued' => $this->queuedEntries, - ]; - } - - /** - * Parse one entry. - * - * @param array $importedEntry - * - * @return Entry - */ - abstract public function parseEntry(array $importedEntry); - /** * Set current imported entry to archived / read. * Implementation is different accross all imports. * - * @param array $importedEntry - * * @return array */ abstract protected function setEntryAsRead(array $importedEntry);