file('import-file')->get(); $parser = new NetscapeBookmarkParser(); $links = $parser->parseString($data); if (empty($links)) { flash(trans('import.import_empty'), 'warning'); return redirect()->back(); } $userId = auth()->id(); $imported = 0; $skipped = 0; foreach ($links as $link) { if (Link::whereUrl($link['uri'])->first()) { $skipped++; continue; } $linkMeta = LinkAce::getMetaFromURL($link['uri']); $title = $link['title'] ?: $linkMeta['title']; $newLink = Link::create([ 'user_id' => $userId, 'url' => $link['uri'], 'title' => $title, 'description' => $link['note'] ?: $linkMeta['description'], 'icon' => LinkIconMapper::mapLink($link['uri']), 'is_private' => $link['pub'], 'created_at' => Carbon::createFromTimestamp($link['time']), 'updated_at' => Carbon::now(), ]); // Get all tags if (!empty($link['tags'])) { $tags = explode(' ', $link['tags']); foreach ($tags as $tag) { $newTag = Tag::firstOrCreate([ 'user_id' => $userId, 'name' => $tag, ]); $newLink->tags()->attach($newTag->id); } } $imported++; } flash(trans('import.import_successfully', [ 'imported' => $imported, 'skipped' => $skipped, ]), 'success'); return redirect()->back(); } }