Skip to content

Commit 38a29e2

Browse files
committed
[Object] optimized bulk import
1 parent ac8a364 commit 38a29e2

File tree

1 file changed

+12
-5
lines changed

1 file changed

+12
-5
lines changed

Diff for: bundles/AdminBundle/Controller/Admin/DataObject/ClassController.php

+12-5
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,11 @@
2424
use Pimcore\Model\Asset;
2525
use Pimcore\Model\DataObject;
2626
use Pimcore\Model\Document;
27+
use Pimcore\Tool\Session;
2728
use Symfony\Component\EventDispatcher\GenericEvent;
2829
use Symfony\Component\HttpFoundation\Request;
2930
use Symfony\Component\HttpFoundation\Response;
31+
use Symfony\Component\HttpFoundation\Session\Attribute\AttributeBagInterface;
3032
use Symfony\Component\HttpKernel\Event\FilterControllerEvent;
3133
use Symfony\Component\HttpKernel\Event\FilterResponseEvent;
3234
use Symfony\Component\Routing\Annotation\Route;
@@ -1347,9 +1349,13 @@ public function bulkImportAction(Request $request)
13471349
$tmpName = $_FILES['Filedata']['tmp_name'];
13481350
$json = file_get_contents($tmpName);
13491351

1350-
$tmpName = PIMCORE_SYSTEM_TEMP_DIRECTORY . '/bulk-import.tmp';
1352+
$tmpName = PIMCORE_SYSTEM_TEMP_DIRECTORY . '/bulk-import-' . uniqid() . '.tmp';
13511353
file_put_contents($tmpName, $json);
13521354

1355+
Session::useSession(function (AttributeBagInterface $session) use ($tmpName) {
1356+
$session->set('class_bulk_import_file', $tmpName);
1357+
}, 'pimcore_objects');
1358+
13531359
$json = json_decode($json, true);
13541360

13551361
foreach ($json as $groupName => $group) {
@@ -1363,7 +1369,7 @@ public function bulkImportAction(Request $request)
13631369
$className = $groupItem['className'];
13641370

13651371
$layoutData = ['className' => $className, 'name' => $groupItem['name']];
1366-
$name = serialize($layoutData);
1372+
$name = json_encode($layoutData);
13671373
$displayName = $className . ' / ' . $groupItem['name'];
13681374
$icon = 'database_lightning';
13691375
} else {
@@ -1382,7 +1388,7 @@ public function bulkImportAction(Request $request)
13821388
}
13831389
}
13841390

1385-
$response = $this->adminJson(['success' => true, 'filename' => $tmpName, 'data' => $result]);
1391+
$response = $this->adminJson(['success' => true, 'data' => $result]);
13861392
$response->headers->set('Content-Type', 'text/html');
13871393

13881394
return $response;
@@ -1404,9 +1410,10 @@ public function bulkImportAction(Request $request)
14041410
*/
14051411
public function bulkCommitAction(Request $request)
14061412
{
1407-
$filename = $request->get('filename');
14081413
$data = json_decode($request->get('data'), true);
14091414

1415+
$session = Session::get('pimcore_objects');
1416+
$filename = $session->get('class_bulk_import_file');
14101417
$json = @file_get_contents($filename);
14111418
$json = json_decode($json, true);
14121419

@@ -1451,7 +1458,7 @@ public function bulkCommitAction(Request $request)
14511458

14521459
return $this->adminJson(['success' => $success !== false]);
14531460
} elseif ($type == 'customlayout') {
1454-
$layoutData = unserialize($data['name']);
1461+
$layoutData = json_decode($data['name'], true);
14551462
$className = $layoutData['className'];
14561463
$layoutName = $layoutData['name'];
14571464

0 commit comments

Comments
 (0)