]> git.immae.eu Git - github/shaarli/Shaarli.git/blobdiff - application/NetscapeBookmarkUtils.php
Apply the new ID system accros the whole codebase
[github/shaarli/Shaarli.git] / application / NetscapeBookmarkUtils.php
index b99a432e80b3b257aed7b0720e7c6fc44928b5f5..8a939adbff68ec995870140ca2ccfd66030a0cd8 100644 (file)
@@ -38,7 +38,7 @@ class NetscapeBookmarkUtils
             if ($link['private'] == 0 && $selection == 'private') {
                 continue;
             }
-            $date = DateTime::createFromFormat(LinkDB::LINK_DATE_FORMAT, $link['linkdate']);
+            $date = $link['created'];
             $link['timestamp'] = $date->getTimestamp();
             $link['taglist'] = str_replace(' ', ',', $link['tags']);
 
@@ -86,7 +86,7 @@ class NetscapeBookmarkUtils
      * Imports Web bookmarks from an uploaded Netscape bookmark dump
      *
      * @param array  $post      Server $_POST parameters
-     * @param array  $file      Server $_FILES parameters
+     * @param array  $files     Server $_FILES parameters
      * @param LinkDB $linkDb    Loaded LinkDB instance
      * @param string $pagecache Page cache
      *
@@ -98,8 +98,7 @@ class NetscapeBookmarkUtils
         $filesize = $files['filetoupload']['size'];
         $data = file_get_contents($files['filetoupload']['tmp_name']);
 
-        // Sniff file type
-        if (! startsWith($data, '<!DOCTYPE NETSCAPE-Bookmark-file-1>')) {
+        if (strpos($data, '<!DOCTYPE NETSCAPE-Bookmark-file-1>') === false) {
             return self::importStatus($filename, $filesize);
         }
 
@@ -148,7 +147,6 @@ class NetscapeBookmarkUtils
                 'url' => $bkm['uri'],
                 'description' => $bkm['note'],
                 'private' => $private,
-                'linkdate'=> '',
                 'tags' => $bkm['tags']
             );
 
@@ -162,29 +160,25 @@ class NetscapeBookmarkUtils
                 }
 
                 // Overwrite an existing link, keep its date
-                $newLink['linkdate'] = $existingLink['linkdate'];
-                $linkDb[$existingLink['linkdate']] = $newLink;
+                $newLink['id'] = $existingLink['id'];
+                $newLink['created'] = $existingLink['created'];
+                $newLink['updated'] = new DateTime();
+                $linkDb[$existingLink['id']] = $newLink;
                 $importCount++;
                 $overwriteCount++;
                 continue;
             }
 
-            // Add a new link
+            // Add a new link - @ used for UNIX timestamps
             $newLinkDate = new DateTime('@'.strval($bkm['time']));
-            while (!empty($linkDb[$newLinkDate->format(LinkDB::LINK_DATE_FORMAT)])) {
-                // Ensure the date/time is not already used
-                // - this hack is necessary as the date/time acts as a primary key
-                // - apply 1 second increments until an unused index is found
-                // See https://github.com/shaarli/Shaarli/issues/351
-                $newLinkDate->add(new DateInterval('PT1S'));
-            }
-            $linkDbDate = $newLinkDate->format(LinkDB::LINK_DATE_FORMAT);
-            $newLink['linkdate'] = $linkDbDate;
-            $linkDb[$linkDbDate] = $newLink;
+            $newLinkDate->setTimezone(new DateTimeZone(date_default_timezone_get()));
+            $newLink['created'] = $newLinkDate;
+            $newLink['id'] = $linkDb->getNextId();
+            $linkDb[$newLink['id']] = $newLink;
             $importCount++;
         }
 
-        $linkDb->savedb($pagecache);
+        $linkDb->save($pagecache);
         return self::importStatus(
             $filename,
             $filesize,