|
| 1 | +<?php |
| 2 | +require 'vendor/autoload.php'; |
| 3 | + |
| 4 | +// Replicates BookmarkIO.write() at https://github.com/shaarli/Shaarli/blob/master/application/bookmark/BookmarkIO.php#L114 |
| 5 | +// and BookmarkFileService.add() at https://github.com/shaarli/Shaarli/blob/master/application/bookmark/BookmarkFileService.php |
| 6 | + |
| 7 | +require_once 'application/bookmark/LinkUtils.php'; // imports tags_str2array() |
| 8 | +use Shaarli\Bookmark\Bookmark; |
| 9 | +use Shaarli\Bookmark\BookmarkArray; |
| 10 | + |
| 11 | +if ($argv && $argv[0] && realpath($argv[0]) === __FILE__) { |
| 12 | + // Code below will only be executed when this script is invoked as a CLI, |
| 13 | + // not when served as a web page: |
| 14 | + $phpPrefix = '<?php /* '; |
| 15 | + $phpSuffix = ' */ ?>'; |
| 16 | + $json_filepath = $argv[1]; |
| 17 | + $json_links = json_decode(file_get_contents($json_filepath), true); |
| 18 | + $bookmarks = new BookmarkArray(); |
| 19 | + foreach($json_links as &$json_link) { |
| 20 | + $json_link['created'] = DateTime::createFromFormat(DateTime::ISO8601, $json_link['created']); |
| 21 | + if ($json_link['updated']) { |
| 22 | + $json_link['updated'] = DateTime::createFromFormat(DateTime::ISO8601, $json_link['updated']); |
| 23 | + } |
| 24 | + $bookmark = new Bookmark(); |
| 25 | + $bookmark->fromArray($json_link, ' '); |
| 26 | + $bookmark->setId($bookmarks->getNextId()); |
| 27 | + $bookmark->validate(); |
| 28 | + $bookmarks[$bookmark->getId()] = $bookmark; |
| 29 | + } |
| 30 | + $bookmarks->reorder(); |
| 31 | + $data = base64_encode(gzdeflate(serialize($bookmarks))); |
| 32 | + print($data = $phpPrefix . $data . $phpSuffix); |
| 33 | +} |
0 commit comments