use Doctrine\ORM\EntityManager;
use Wallabag\CoreBundle\Entity\Entry;
use Wallabag\UserBundle\Entity\User;
-use Wallabag\CoreBundle\Tools\Utils;
use Wallabag\CoreBundle\Helper\ContentProxy;
class WallabagV1Import implements ImportInterface
protected $skippedEntries = 0;
protected $importedEntries = 0;
protected $filepath;
+ protected $markAsRead;
public function __construct(EntityManager $em, ContentProxy $contentProxy)
{
*/
public function getDescription()
{
- return 'This importer will import all your wallabag v1 articles. On your config page, click on "JSON export" in the "Export your wallabag data" section. You will have a "wallabag-export-1-xxxx-xx-xx.json" file.';
+ return 'import.wallabag_v1.description';
}
/**
return $this;
}
+ /**
+ * Set whether articles must be all marked as read.
+ *
+ * @param bool $markAsRead
+ */
+ public function setMarkAsRead($markAsRead)
+ {
+ $this->markAsRead = $markAsRead;
+
+ return $this;
+ }
+
/**
* @param $entries
*/
continue;
}
- // @see ContentProxy->updateEntry
- $entry = new Entry($this->user);
- $entry->setUrl($importedEntry['url']);
+ $data = [
+ 'title' => $importedEntry['title'],
+ 'html' => $importedEntry['content'],
+ 'url' => $importedEntry['url'],
+ 'content_type' => '',
+ 'language' => '',
+ ];
+
+ // force content to be refreshed in case on bad fetch in the v1 installation
if (in_array($importedEntry['title'], $untitled)) {
- $entry = $this->contentProxy->updateEntry($entry, $importedEntry['url']);
- } else {
- $entry->setContent($importedEntry['content']);
- $entry->setTitle($importedEntry['title']);
- $entry->setReadingTime(Utils::getReadingTime($importedEntry['content']));
- $entry->setDomainName(parse_url($importedEntry['url'], PHP_URL_HOST));
+ $data = [];
}
- $entry->setArchived($importedEntry['is_read']);
+
+ $entry = $this->contentProxy->updateEntry(
+ new Entry($this->user),
+ $importedEntry['url'],
+ $data
+ );
+
+ if (array_key_exists('tags', $importedEntry) && $importedEntry['tags'] != '') {
+ $this->contentProxy->assignTagsToEntry(
+ $entry,
+ $importedEntry['tags']
+ );
+ }
+
+ $entry->setArchived($importedEntry['is_read'] || $this->markAsRead);
$entry->setStarred($importedEntry['is_fav']);
$this->em->persist($entry);