Process bookmarks import through Slim controller
This commit is contained in:
parent
c70ff64a61
commit
78657347c5
12 changed files with 256 additions and 84 deletions
application/front/controller/admin
|
@ -33,6 +33,8 @@ class ExportController extends ShaarliAdminController
|
|||
*/
|
||||
public function export(Request $request, Response $response): Response
|
||||
{
|
||||
$this->checkToken($request);
|
||||
|
||||
$selection = $request->getParam('selection');
|
||||
|
||||
if (empty($selection)) {
|
||||
|
@ -74,19 +76,4 @@ class ExportController extends ShaarliAdminController
|
|||
|
||||
return $response->write($this->render('export.bookmarks'));
|
||||
}
|
||||
|
||||
/**
|
||||
* @param mixed[] $data Variables passed to the template engine
|
||||
*
|
||||
* @return mixed[] Template data after active plugins render_picwall hook execution.
|
||||
*/
|
||||
protected function executeHooks(array $data): array
|
||||
{
|
||||
$this->container->pluginManager->executeHooks(
|
||||
'render_tools',
|
||||
$data
|
||||
);
|
||||
|
||||
return $data;
|
||||
}
|
||||
}
|
||||
|
|
81
application/front/controller/admin/ImportController.php
Normal file
81
application/front/controller/admin/ImportController.php
Normal file
|
@ -0,0 +1,81 @@
|
|||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Shaarli\Front\Controller\Admin;
|
||||
|
||||
use Psr\Http\Message\UploadedFileInterface;
|
||||
use Slim\Http\Request;
|
||||
use Slim\Http\Response;
|
||||
|
||||
/**
|
||||
* Class ImportController
|
||||
*
|
||||
* Slim controller used to display Shaarli data import page,
|
||||
* and import bookmarks from Netscape Bookmarks file.
|
||||
*/
|
||||
class ImportController extends ShaarliAdminController
|
||||
{
|
||||
/**
|
||||
* GET /admin/import - Display import page
|
||||
*/
|
||||
public function index(Request $request, Response $response): Response
|
||||
{
|
||||
$this->assignView(
|
||||
'maxfilesize',
|
||||
get_max_upload_size(
|
||||
ini_get('post_max_size'),
|
||||
ini_get('upload_max_filesize'),
|
||||
false
|
||||
)
|
||||
);
|
||||
$this->assignView(
|
||||
'maxfilesizeHuman',
|
||||
get_max_upload_size(
|
||||
ini_get('post_max_size'),
|
||||
ini_get('upload_max_filesize'),
|
||||
true
|
||||
)
|
||||
);
|
||||
$this->assignView('pagetitle', t('Import') .' - '. $this->container->conf->get('general.title', 'Shaarli'));
|
||||
|
||||
return $response->write($this->render('import'));
|
||||
}
|
||||
|
||||
/**
|
||||
* POST /admin/import - Process import file provided and create bookmarks
|
||||
*/
|
||||
public function import(Request $request, Response $response): Response
|
||||
{
|
||||
$this->checkToken($request);
|
||||
|
||||
$file = ($request->getUploadedFiles() ?? [])['filetoupload'] ?? null;
|
||||
if (!$file instanceof UploadedFileInterface) {
|
||||
$this->saveErrorMessage(t('No import file provided.'));
|
||||
|
||||
return $this->redirect($response, '/admin/import');
|
||||
}
|
||||
|
||||
|
||||
// Import bookmarks from an uploaded file
|
||||
if (0 === $file->getSize()) {
|
||||
// The file is too big or some form field may be missing.
|
||||
$msg = sprintf(
|
||||
t(
|
||||
'The file you are trying to upload is probably bigger than what this webserver can accept'
|
||||
.' (%s). Please upload in smaller chunks.'
|
||||
),
|
||||
get_max_upload_size(ini_get('post_max_size'), ini_get('upload_max_filesize'))
|
||||
);
|
||||
$this->saveErrorMessage($msg);
|
||||
|
||||
return $this->redirect($response, '/admin/import');
|
||||
}
|
||||
|
||||
$status = $this->container->netscapeBookmarkUtils->import($request->getParams(), $file);
|
||||
|
||||
$this->saveSuccessMessage($status);
|
||||
|
||||
return $this->redirect($response, '/admin/import');
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue