use Doctrine\ORM\EntityManager;
use Wallabag\CoreBundle\Helper\ContentProxy;
use Wallabag\CoreBundle\Entity\Entry;
-use Symfony\Component\Security\Core\User\UserInterface;
+use Wallabag\UserBundle\Entity\User;
use OldSound\RabbitMqBundle\RabbitMq\Producer;
abstract class AbstractImport implements ImportInterface
* Set current user.
* Could the current *connected* user or one retrieve by the consumer.
*
- * @param UserInterface $user
+ * @param User $user
*/
- public function setUser(UserInterface $user)
+ public function setUser(User $user)
{
$this->user = $user;
}
$this->em->flush();
}
+ /**
+ * Parse entries and send them to the queue.
+ * It should just be a simple loop on all item, no call to the database should be done
+ * to speedup queuing.
+ *
+ * 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)
+ {
+ foreach ($entries as $importedEntry) {
+ // set userId for the producer (it won't know which user is connected)
+ $importedEntry['userId'] = $this->user->getId();
+
+ if ($this->markAsRead) {
+ $importedEntry = $this->setEntryAsRead($importedEntry);
+ }
+
+ ++$this->importedEntries;
+
+ $this->producer->publish(json_encode($importedEntry));
+ }
+ }
+
/**
* Parse one entry.
*
* @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);
}
}
/**
- * Only used for test purpose
+ * Only used for test purpose.
*
* @return string
*/
}
/**
- * 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
+ * {@inheritdoc}
*/
- public function parseEntriesForProducer($entries)
+ protected function setEntryAsRead(array $importedEntry)
{
- foreach ($entries as $importedEntry) {
- // set userId for the producer (it won't know which user is connected)
- $importedEntry['userId'] = $this->user->getId();
-
- if ($this->markAsRead) {
- $importedEntry['status'] = 1;
- }
+ $importedEntry['status'] = 1;
- ++$this->importedEntries;
-
- $this->producer->publish(json_encode($importedEntry));
- }
+ return $importedEntry;
}
}
namespace Wallabag\ImportBundle\Import;
use Wallabag\CoreBundle\Entity\Entry;
-use Wallabag\UserBundle\Entity\User;
class ReadabilityImport extends AbstractImport
{
}
/**
- * 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
+ * {@inheritdoc}
*/
- protected function parseEntriesForProducer($entries)
+ protected function setEntryAsRead(array $importedEntry)
{
- foreach ($entries as $importedEntry) {
- // set userId for the producer (it won't know which user is connected)
- $importedEntry['userId'] = $this->user->getId();
-
- if ($this->markAsRead) {
- $importedEntry['archive'] = 1;
- }
-
- ++$this->importedEntries;
-
- // flush every 20 entries
- if (($i % 20) === 0) {
- $this->em->flush();
- }
- ++$i;
- }
+ $importedEntry['archive'] = 1;
- $this->em->flush();
- $this->em->clear();
+ return $importedEntry;
}
}
namespace Wallabag\ImportBundle\Import;
use Wallabag\CoreBundle\Entity\Entry;
-use Wallabag\UserBundle\Entity\User;
abstract class WallabagImport extends AbstractImport
{
- protected $user;
protected $skippedEntries = 0;
protected $importedEntries = 0;
protected $filepath;
return $data;
}
- protected function parseEntriesForProducer($entries)
+ /**
+ * {@inheritdoc}
+ */
+ protected function setEntryAsRead(array $importedEntry)
{
- foreach ($entries as $importedEntry) {
- // set userId for the producer (it won't know which user is connected)
- $importedEntry['userId'] = $this->user->getId();
+ $importedEntry['is_read'] = 1;
- if ($this->markAsRead) {
- $importedEntry['is_read'] = 1;
- }
-
- ++$this->importedEntries;
-
- $this->producer->publish(json_encode($importedEntry));
- }
+ return $importedEntry;
}
}
] + $entry;
}
- protected function parseEntriesForProducer($entries)
+ /**
+ * {@inheritdoc}
+ */
+ protected function setEntryAsRead(array $importedEntry)
{
- foreach ($entries as $importedEntry) {
- // set userId for the producer (it won't know which user is connected)
- $importedEntry['userId'] = $this->user->getId();
-
- if ($this->markAsRead) {
- $importedEntry['is_archived'] = 1;
- }
-
- ++$this->importedEntries;
+ $importedEntry['is_archived'] = 1;
- $this->producer->publish(json_encode($importedEntry));
- }
+ return $importedEntry;
}
}