X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=src%2FWallabag%2FImportBundle%2FImport%2FWallabagV1Import.php;h=173a587f1cd6ea4c472f6ce78ff4112e50da493b;hb=0d42217e4e8210dd2cf86f35ba9662ca02c8a2dc;hp=0dac6203e6b0d0aacbd3354b1d075933afd8d13d;hpb=e008c037f53324b931f027483f9f1053171109c5;p=github%2Fwallabag%2Fwallabag.git diff --git a/src/Wallabag/ImportBundle/Import/WallabagV1Import.php b/src/Wallabag/ImportBundle/Import/WallabagV1Import.php index 0dac6203..173a587f 100644 --- a/src/Wallabag/ImportBundle/Import/WallabagV1Import.php +++ b/src/Wallabag/ImportBundle/Import/WallabagV1Import.php @@ -8,20 +8,24 @@ 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 $user; protected $em; protected $logger; + protected $contentProxy; protected $skippedEntries = 0; protected $importedEntries = 0; protected $filepath; + protected $markAsRead; - public function __construct(EntityManager $em) + public function __construct(EntityManager $em, ContentProxy $contentProxy) { $this->em = $em; $this->logger = new NullLogger(); + $this->contentProxy = $contentProxy; } public function setLogger(LoggerInterface $logger) @@ -63,7 +67,7 @@ class WallabagV1Import implements ImportInterface */ 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'; } /** @@ -117,6 +121,18 @@ class WallabagV1Import implements ImportInterface 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 */ @@ -124,6 +140,9 @@ class WallabagV1Import implements ImportInterface { $i = 1; + //Untitled in all languages from v1. This should never have been translated + $untitled = array('Untitled', 'Sans titre', 'podle nadpisu', 'Sin título', 'با عنوان', 'per titolo', 'Sem título', 'Без названия', 'po naslovu', 'Без назви', 'No title found', ''); + foreach ($entries as $importedEntry) { $existingEntry = $this->em ->getRepository('WallabagCoreBundle:Entry') @@ -137,12 +156,25 @@ class WallabagV1Import implements ImportInterface // @see ContentProxy->updateEntry $entry = new Entry($this->user); $entry->setUrl($importedEntry['url']); - $entry->setTitle($importedEntry['title']); - $entry->setArchived($importedEntry['is_read']); + + 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)); + } + + 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']); - $entry->setContent($importedEntry['content']); - $entry->setReadingTime(Utils::getReadingTime($importedEntry['content'])); - $entry->setDomainName(parse_url($importedEntry['url'], PHP_URL_HOST)); $this->em->persist($entry); ++$this->importedEntries;