]> git.immae.eu Git - github/wallabag/wallabag.git/blobdiff - src/Wallabag/ImportBundle/Import/WallabagImport.php
Merge pull request #3820 from lizyn/bugfix/incorrect-calculation-of-CJK-characters...
[github/wallabag/wallabag.git] / src / Wallabag / ImportBundle / Import / WallabagImport.php
index 8e18e0ef498a1bff16e430b6380fde3dd4d78c08..350d06001f12202f6c6678b01b5f48da19773ace 100644 (file)
@@ -6,8 +6,6 @@ use Wallabag\CoreBundle\Entity\Entry;
 
 abstract class WallabagImport extends AbstractImport
 {
-    protected $skippedEntries = 0;
-    protected $importedEntries = 0;
     protected $filepath;
     // untitled in all languages from v1
     protected $untitled = [
@@ -60,6 +58,8 @@ abstract class WallabagImport extends AbstractImport
         $data = json_decode(file_get_contents($this->filepath), true);
 
         if (empty($data)) {
+            $this->logger->error('WallabagImport: no entries in imported file');
+
             return false;
         }
 
@@ -74,17 +74,6 @@ abstract class WallabagImport extends AbstractImport
         return true;
     }
 
-    /**
-     * {@inheritdoc}
-     */
-    public function getSummary()
-    {
-        return [
-            'skipped' => $this->skippedEntries,
-            'imported' => $this->importedEntries,
-        ];
-    }
-
     /**
      * Set file path to the json file.
      *
@@ -97,6 +86,18 @@ abstract class WallabagImport extends AbstractImport
         return $this;
     }
 
+    /**
+     * {@inheritdoc}
+     */
+    public function validateEntry(array $importedEntry)
+    {
+        if (empty($importedEntry['url'])) {
+            return false;
+        }
+
+        return true;
+    }
+
     /**
      * {@inheritdoc}
      */
@@ -114,23 +115,18 @@ abstract class WallabagImport extends AbstractImport
 
         $data = $this->prepareEntry($importedEntry);
 
-        $entry = $this->fetchContent(
-            new Entry($this->user),
-            $importedEntry['url'],
-            $data
-        );
+        $entry = new Entry($this->user);
+        $entry->setUrl($data['url']);
+        $entry->setTitle($data['title']);
 
-        // jump to next entry in case of problem while getting content
-        if (false === $entry) {
-            ++$this->skippedEntries;
-
-            return;
-        }
+        // update entry with content (in case fetching failed, the given entry will be return)
+        $this->fetchContent($entry, $data['url'], $data);
 
         if (array_key_exists('tags', $data)) {
-            $this->contentProxy->assignTagsToEntry(
+            $this->tagsAssigner->assignTagsToEntry(
                 $entry,
-                $data['tags']
+                $data['tags'],
+                $this->em->getUnitOfWork()->getScheduledEntityInsertions()
             );
         }
 
@@ -141,6 +137,10 @@ abstract class WallabagImport extends AbstractImport
         $entry->setArchived($data['is_archived']);
         $entry->setStarred($data['is_starred']);
 
+        if (!empty($data['created_at'])) {
+            $entry->setCreatedAt(new \DateTime($data['created_at']));
+        }
+
         $this->em->persist($entry);
         ++$this->importedEntries;