3 declare(strict_types
=1);
5 namespace Shaarli\Front\Controller\Admin
;
8 use Shaarli\Bookmark\Bookmark
;
9 use Shaarli\Render\TemplatePage
;
10 use Slim\Http\Request
;
11 use Slim\Http\Response
;
14 * Class ExportController
16 * Slim controller used to display Shaarli data export page,
17 * and process the bookmarks export as a Netscape Bookmarks file.
19 class ExportController
extends ShaarliAdminController
22 * GET /admin/export - Display export page
24 public function index(Request
$request, Response
$response): Response
26 $this->assignView('pagetitle', t('Export') .' - '. $this->container
->conf
->get('general.title', 'Shaarli'));
28 return $response->write($this->render(TemplatePage
::EXPORT
));
32 * POST /admin/export - Process export, and serve download file named
33 * bookmarks_(all|private|public)_datetime.html
35 public function export(Request
$request, Response
$response): Response
37 $this->checkToken($request);
39 $selection = $request->getParam('selection');
41 if (empty($selection)) {
42 $this->saveErrorMessage(t('Please select an export mode.'));
44 return $this->redirect($response, '/admin/export');
47 $prependNoteUrl = filter_var($request->getParam('prepend_note_url') ?? false, FILTER_VALIDATE_BOOLEAN
);
50 $formatter = $this->container
->formatterFactory
->getFormatter('raw');
54 $this->container
->netscapeBookmarkUtils
->filterAndFormat(
58 index_url($this->container
->environment
)
61 } catch (\Exception
$exc) {
62 $this->saveErrorMessage($exc->getMessage());
64 return $this->redirect($response, '/admin/export');
67 $now = new DateTime();
68 $response = $response->withHeader('Content-Type', 'text/html; charset=utf-8');
69 $response = $response->withHeader(
70 'Content-disposition',
71 'attachment; filename=bookmarks_'.$selection.'_'.$now->format(Bookmark
::LINK_DATE_FORMAT
).'.html'
74 $this->assignView('date', $now->format(DateTime
::RFC822
));
75 $this->assignView('eol', PHP_EOL
);
76 $this->assignView('selection', $selection);
78 return $response->write($this->render(TemplatePage
::NETSCAPE_EXPORT_BOOKMARKS
));