use Psr\Log\LogLevel;
use Shaarli\Config\ConfigManager;
+use Shaarli\History;
use Shaarli\NetscapeBookmarkParser\NetscapeBookmarkParser;
use Katzgrau\KLogger\Logger;
{
// see tpl/export.html for possible values
if (! in_array($selection, array('all', 'public', 'private'))) {
- throw new Exception('Invalid export selection: "'.$selection.'"');
+ throw new Exception(t('Invalid export selection:') .' "'.$selection.'"');
}
$bookmarkLinks = array();
-
foreach ($linkDb as $link) {
if ($link['private'] != 0 && $selection == 'public') {
continue;
* @param int $importCount how many links were imported
* @param int $overwriteCount how many links were overwritten
* @param int $skipCount how many links were skipped
+ * @param int $duration how many seconds did the import take
*
* @return string Summary of the bookmark import status
*/
private static function importStatus(
$filename,
$filesize,
- $importCount=0,
- $overwriteCount=0,
- $skipCount=0
- )
- {
- $status = 'File '.$filename.' ('.$filesize.' bytes) ';
+ $importCount = 0,
+ $overwriteCount = 0,
+ $skipCount = 0,
+ $duration = 0
+ ) {
+ $status = sprintf(t('File %s (%d bytes) '), $filename, $filesize);
if ($importCount == 0 && $overwriteCount == 0 && $skipCount == 0) {
- $status .= 'has an unknown file format. Nothing was imported.';
+ $status .= t('has an unknown file format. Nothing was imported.');
} else {
- $status .= 'was successfully processed: '.$importCount.' links imported, ';
- $status .= $overwriteCount.' links overwritten, ';
- $status .= $skipCount.' links skipped.';
+ $status .= vsprintf(
+ t(
+ 'was successfully processed in %d seconds: '
+ .'%d links imported, %d links overwritten, %d links skipped.'
+ ),
+ [$duration, $importCount, $overwriteCount, $skipCount]
+ );
}
return $status;
}
*/
public static function import($post, $files, $linkDb, $conf, $history)
{
+ $start = time();
$filename = $files['filetoupload']['name'];
$filesize = $files['filetoupload']['size'];
$data = file_get_contents($files['filetoupload']['tmp_name']);
- if (strpos($data, '<!DOCTYPE NETSCAPE-Bookmark-file-1>') === false) {
+ if (preg_match('/<!DOCTYPE NETSCAPE-Bookmark-file-1>/i', $data) === 0) {
return self::importStatus($filename, $filesize);
}
if (empty($post['privacy']) || $post['privacy'] == 'default') {
// use value from the imported file
$private = $bkm['pub'] == '1' ? 0 : 1;
- } else if ($post['privacy'] == 'private') {
+ } elseif ($post['privacy'] == 'private') {
// all imported links are private
$private = 1;
- } else if ($post['privacy'] == 'public') {
+ } elseif ($post['privacy'] == 'public') {
// all imported links are public
$private = 0;
- }
+ }
$newLink = array(
'title' => $bkm['title'],
$newLink['id'] = $existingLink['id'];
$newLink['created'] = $existingLink['created'];
$newLink['updated'] = new DateTime();
+ $newLink['shorturl'] = $existingLink['shorturl'];
$linkDb[$existingLink['id']] = $newLink;
$importCount++;
$overwriteCount++;
- $history->updateLink($newLink);
continue;
}
$newLink['shorturl'] = link_small_hash($newLink['created'], $newLink['id']);
$linkDb[$newLink['id']] = $newLink;
$importCount++;
- $history->addLink($newLink);
}
$linkDb->save($conf->get('resource.page_cache'));
+ $history->importLinks();
+
+ $duration = time() - $start;
return self::importStatus(
$filename,
$filesize,
$importCount,
$overwriteCount,
- $skipCount
+ $skipCount,
+ $duration
);
}
}