‪TYPO3CMS  10.4
ExportController.php
Go to the documentation of this file.
1 <?php
2 
3 declare(strict_types=1);
4 
5 /*
6  * This file is part of the TYPO3 CMS project.
7  *
8  * It is free software; you can redistribute it and/or modify it under
9  * the terms of the GNU General Public License, either version 2
10  * of the License, or any later version.
11  *
12  * For the full copyright and license information, please read the
13  * LICENSE.txt file that was distributed with this source code.
14  *
15  * The TYPO3 project - inspiring people to share!
16  */
17 
19 
20 use Doctrine\DBAL\Driver\Statement;
21 use Psr\Http\Message\ResponseInterface;
22 use Psr\Http\Message\ServerRequestInterface;
46 
53 {
59  protected ‪$moduleName = 'tx_impexp_export';
60 
64  protected ‪$export;
65 
69  protected ‪$treeHTML = '';
70 
74  protected ‪$excludeDisabledRecords = false;
75 
81  protected ‪$presetRepository;
82 
83  public function ‪__construct()
84  {
85  parent::__construct();
86 
87  $this->presetRepository = GeneralUtility::makeInstance(PresetRepository::class);
88  }
89 
97  public function ‪mainAction(ServerRequestInterface $request): ResponseInterface
98  {
99  if ($this->‪getBackendUser()->isExportEnabled() === false) {
100  throw new \RuntimeException(
101  'Export module is disabled for non admin users and '
102  . 'userTsConfig options.impexp.enableExportForNonAdminUser is not enabled.',
103  1636901978
104  );
105  }
106 
107  $this->lang->includeLLFile('EXT:impexp/Resources/Private/Language/locallang.xlf');
108 
109  $this->pageinfo = ‪BackendUtility::readPageAccess($this->id, $this->perms_clause);
110  if (is_array($this->pageinfo)) {
111  $this->moduleTemplate->getDocHeaderComponent()->setMetaInformation($this->pageinfo);
112  }
113  // Setting up the context sensitive menu:
114  $this->moduleTemplate->getPageRenderer()->loadRequireJsModule('TYPO3/CMS/Backend/ContextMenu');
115  $this->moduleTemplate->getPageRenderer()->loadRequireJsModule('TYPO3/CMS/Impexp/ImportExport');
116  $this->moduleTemplate->addJavaScriptCode(
117  'ImpexpInLineJS',
118  'if (top.fsMod) top.fsMod.recentIds["web"] = ' . (int)$this->id . ';'
119  );
120 
121  // Input data grabbed:
122  $inData = $request->getParsedBody()['tx_impexp'] ?? $request->getQueryParams()['tx_impexp'] ?? [];
123  if (!array_key_exists('excludeDisabled', $inData)) {
124  // flag doesn't exist initially; state is on by default
125  $inData['excludeDisabled'] = 1;
126  }
127  $uriBuilder = GeneralUtility::makeInstance(UriBuilder::class);
128  $this->standaloneView->assign('moduleUrl', (string)$uriBuilder->buildUriFromRoute($this->moduleName));
129  $this->standaloneView->assign('id', $this->id);
130  $this->standaloneView->assign('inData', $inData);
131 
132  $this->shortcutName = $this->lang->getLL('title_export');
133  // Call export interface
134  $this->‪exportData($inData);
135  $this->standaloneView->setTemplate('Export.html');
136 
137  // Setting up the buttons and markers for docheader
138  $this->‪getButtons();
139 
140  $this->moduleTemplate->setContent($this->standaloneView->render());
141  return new HtmlResponse($this->moduleTemplate->renderContent());
142  }
143 
151  protected function ‪exportData(array $inData)
152  {
153  // BUILDING EXPORT DATA:
154  // Processing of InData array values:
155  $inData['filename'] = trim((string)preg_replace('/[^[:alnum:]._-]*/', '', preg_replace('/\\.(t3d|xml)$/', '', $inData['filename'])));
156  if ($inData['filename'] !== '') {
157  $inData['filename'] .= $inData['filetype'] === 'xml' ? '.xml' : '.t3d';
158  }
159  // Set exclude fields in export object:
160  if (!is_array($inData['exclude'])) {
161  $inData['exclude'] = [];
162  }
163  // Saving/Loading/Deleting presets:
164  $this->presetRepository->processPresets($inData);
165  // Create export object and configure it:
166  $this->export = GeneralUtility::makeInstance(Export::class);
167  $this->export->init(0);
168  $this->export->excludeMap = (array)$inData['exclude'];
169  $this->export->softrefCfg = (array)$inData['softrefCfg'];
170  $this->export->extensionDependencies = ($inData['extension_dep'] === '') ? [] : (array)$inData['extension_dep'];
171  $this->export->showStaticRelations = $inData['showStaticRelations'];
172  $this->export->includeExtFileResources = !$inData['excludeHTMLfileResources'];
173  $this->excludeDisabledRecords = (bool)$inData['excludeDisabled'];
174  $this->export->setExcludeDisabledRecords($this->excludeDisabledRecords);
175 
176  // Pagetree tables
177  if (!is_array($inData['pagetree']['tables'])) {
178  $inData['pagetree']['tables'] = [];
179  }
180  // Static tables:
181  if (is_array($inData['external_static']['tables'])) {
182  $this->export->relStaticTables = $inData['external_static']['tables'];
183  }
184  // Configure which tables external relations are included for:
185  if (is_array($inData['external_ref']['tables'])) {
186  $this->export->relOnlyTables = $inData['external_ref']['tables'];
187  }
188  $saveFilesOutsideExportFile = false;
189  if (isset($inData['save_export'], $inData['saveFilesOutsideExportFile']) && $inData['saveFilesOutsideExportFile'] === '1') {
190  $this->export->setSaveFilesOutsideExportFile(true);
191  $saveFilesOutsideExportFile = true;
192  }
193  $this->export->setHeaderBasics();
194  // Meta data setting:
195 
196  $beUser = $this->‪getBackendUser();
197  $this->export->setMetaData(
198  $inData['meta']['title'],
199  $inData['meta']['description'],
200  $inData['meta']['notes'],
201  $beUser->user['username'],
202  $beUser->user['realName'],
203  $beUser->user['email']
204  );
205  // Configure which records to export
206  if (is_array($inData['record'])) {
207  foreach ($inData['record'] as $ref) {
208  $rParts = explode(':', $ref);
209  $this->export->export_addRecord($rParts[0], ‪BackendUtility::getRecord($rParts[0], (int)$rParts[1]));
210  }
211  }
212  // Configure which tables to export
213  if (is_array($inData['list'])) {
214  foreach ($inData['list'] as $ref) {
215  $rParts = explode(':', $ref);
216  if ($beUser->check('tables_select', $rParts[0])) {
217  $statement = $this->‪exec_listQueryPid($rParts[0], (int)$rParts[1]);
218  while ($subTrow = $statement->fetch()) {
219  $this->export->export_addRecord($rParts[0], $subTrow);
220  }
221  }
222  }
223  }
224  // Pagetree
225  if (‪MathUtility::canBeInterpretedAsInteger($inData['pagetree']['id'])) {
226  // Based on click-expandable tree
227  $idH = null;
228  $pid = (int)$inData['pagetree']['id'];
229  $levels = (int)$inData['pagetree']['levels'];
230  if ($levels === -1) {
231  $pagetree = GeneralUtility::makeInstance(ExportPageTreeView::class);
232  if ($this->excludeDisabledRecords) {
233  $pagetree->init(‪BackendUtility::BEenableFields('pages'));
234  }
235  $tree = $pagetree->ext_tree($pid, $this->‪filterPageIds($this->export->excludeMap));
236  $this->treeHTML = $pagetree->printTree($tree);
237  $idH = $pagetree->buffer_idH;
238  } elseif ($levels === -2) {
239  $this->‪addRecordsForPid($pid, $inData['pagetree']['tables']);
240  } else {
241  // Based on depth
242  // Drawing tree:
243  // If the ID is zero, export root
244  if (!$inData['pagetree']['id'] && $beUser->isAdmin()) {
245  $sPage = [
246  'uid' => 0,
247  'title' => 'ROOT'
248  ];
249  } else {
250  $sPage = ‪BackendUtility::getRecordWSOL('pages', $pid, '*', ' AND ' . $this->perms_clause);
251  }
252  if (is_array($sPage)) {
253  $tree = GeneralUtility::makeInstance(PageTreeView::class);
254  $initClause = 'AND ' . $this->perms_clause . $this->‪filterPageIds($this->export->excludeMap);
255  if ($this->excludeDisabledRecords) {
256  $initClause .= ‪BackendUtility::BEenableFields('pages');
257  }
258  $tree->init($initClause);
259  $HTML = $this->iconFactory->getIconForRecord('pages', $sPage, ‪Icon::SIZE_SMALL)->render();
260  $tree->tree[] = ['row' => $sPage, 'HTML' => $HTML];
261  $tree->buffer_idH = [];
262  if ($levels > 0) {
263  $tree->getTree($pid, $levels);
264  }
265  $idH = [];
266  $idH[$pid]['uid'] = $pid;
267  if (!empty($tree->buffer_idH)) {
268  $idH[$pid]['subrow'] = $tree->buffer_idH;
269  }
270  $pagetree = GeneralUtility::makeInstance(ExportPageTreeView::class);
271  $this->treeHTML = $pagetree->printTree($tree->tree);
272  $this->shortcutName .= ' (' . $sPage['title'] . ')';
273  }
274  }
275  // In any case we should have a multi-level array, $idH, with the page structure
276  // here (and the HTML-code loaded into memory for nice display...)
277  if (is_array($idH)) {
278  // Sets the pagetree and gets a 1-dim array in return with the pages (in correct submission order BTW...)
279  $flatList = $this->export->setPageTree($idH);
280  foreach ($flatList as $k => $value) {
281  $this->export->export_addRecord('pages', ‪BackendUtility::getRecord('pages', $k));
282  $this->‪addRecordsForPid((int)$k, $inData['pagetree']['tables']);
283  }
284  }
285  }
286  // After adding ALL records we set relations:
287  for ($a = 0; $a < 10; $a++) {
288  $addR = $this->export->export_addDBRelations($a);
289  if (empty($addR)) {
290  break;
291  }
292  }
293  // Finally files are added:
294  // MUST be after the DBrelations are set so that files from ALL added records are included!
295  $this->export->export_addFilesFromRelations();
296 
297  $this->export->export_addFilesFromSysFilesRecords();
298 
299  // If the download button is clicked, return file
300  if ($inData['download_export'] || $inData['save_export']) {
301  switch ($inData['filetype']) {
302  case 'xml':
303  $out = $this->export->compileMemoryToFileContent('xml');
304  $fExt = '.xml';
305  break;
306  case 't3d':
307  $this->export->dontCompress = 1;
308  // intentional fall-through
309  // no break
310  default:
311  $out = $this->export->compileMemoryToFileContent();
312  $fExt = ($this->export->doOutputCompress() ? '-z' : '') . '.t3d';
313  }
314  // Filename:
315  $dlFile = $inData['filename'];
316  if (!$dlFile) {
317  $exportName = substr(preg_replace('/[^[:alnum:]_]/', '-', $inData['download_export_name']), 0, 20);
318  $dlFile = 'T3D_' . $exportName . '_' . date('Y-m-d_H-i') . $fExt;
319  }
320 
321  // Export for download:
322  if ($inData['download_export']) {
323  $mimeType = 'application/octet-stream';
324  header('Content-Type: ' . $mimeType);
325  header('Content-Length: ' . strlen($out));
326  header('Content-Disposition: attachment; filename=' . ‪PathUtility::basename($dlFile));
327  echo $out;
328  die;
329  }
330 
331  // Export by saving:
332  if ($inData['save_export']) {
333  $saveFolder = $this->‪getDefaultImportExportFolder();
334  ‪$lang = $this->‪getLanguageService();
335  if ($saveFolder instanceof Folder && $saveFolder->checkActionPermission('write')) {
336  $temporaryFileName = GeneralUtility::tempnam('export');
337  ‪GeneralUtility::writeFile($temporaryFileName, $out);
338  $file = $saveFolder->addFile($temporaryFileName, $dlFile, 'replace');
339  if ($saveFilesOutsideExportFile) {
340  $filesFolderName = $dlFile . '.files';
341  $filesFolder = $saveFolder->createFolder($filesFolderName);
342  $temporaryFilesForExport = GeneralUtility::getFilesInDir($this->export->getTemporaryFilesPathForExport(), '', true);
343  foreach ($temporaryFilesForExport as $temporaryFileForExport) {
344  $filesFolder->addFile($temporaryFileForExport);
345  GeneralUtility::unlink_tempfile($temporaryFileForExport);
346  }
347  ‪GeneralUtility::rmdir($this->export->getTemporaryFilesPathForExport());
348  }
349 
351  $flashMessage = GeneralUtility::makeInstance(
352  FlashMessage::class,
353  sprintf(‪$lang->‪getLL('exportdata_savedInSBytes'), $file->getPublicUrl(), GeneralUtility::formatSize(strlen($out))),
354  ‪$lang->‪getLL('exportdata_savedFile'),
356  );
357  } else {
359  $flashMessage = GeneralUtility::makeInstance(
360  FlashMessage::class,
361  sprintf(‪$lang->‪getLL('exportdata_badPathS'), $saveFolder->getPublicUrl()),
362  ‪$lang->‪getLL('exportdata_problemsSavingFile'),
364  );
365  }
366  $flashMessageService = GeneralUtility::makeInstance(FlashMessageService::class);
367  $defaultFlashMessageQueue = $flashMessageService->getMessageQueueByIdentifier();
368  $defaultFlashMessageQueue->enqueue($flashMessage);
369  }
370  }
371 
372  $this->‪makeConfigurationForm($inData);
373 
374  $this->‪makeSaveForm($inData);
375 
376  $this->‪makeAdvancedOptionsForm($inData);
377 
378  $this->standaloneView->assign('errors', $this->export->errorLog);
379 
380  // Generate overview:
381  $this->standaloneView->assign(
382  'contentOverview',
383  $this->export->displayContentOverview()
384  );
385  }
386 
393  protected function ‪addRecordsForPid(int $k, array $tables): void
394  {
395  foreach (‪$GLOBALS['TCA'] as $table => $value) {
396  if ($table !== 'pages'
397  && (in_array($table, $tables, true) || in_array('_ALL', $tables, true))
398  && $this->‪getBackendUser()->check('tables_select', $table)
399  && !‪$GLOBALS['TCA'][$table]['ctrl']['is_static']
400  ) {
401  $statement = $this->‪exec_listQueryPid($table, $k);
402  while ($subTrow = $statement->fetch()) {
403  $this->export->export_addRecord($table, $subTrow);
404  }
405  }
406  }
407  }
408 
416  protected function ‪exec_listQueryPid(string $table, int $pid): Statement
417  {
418  $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable($table);
419 
420  $orderBy = ‪$GLOBALS['TCA'][$table]['ctrl']['sortby'] ?: ‪$GLOBALS['TCA'][$table]['ctrl']['default_sortby'];
421  $queryBuilder->getRestrictions()->add(GeneralUtility::makeInstance(WorkspaceRestriction::class, 0));
422 
423  if ($this->excludeDisabledRecords === false) {
424  $queryBuilder->getRestrictions()
425  ->removeAll()
426  ->add(GeneralUtility::makeInstance(DeletedRestriction::class))
427  ->add(GeneralUtility::makeInstance(WorkspaceRestriction::class, 0));
428  }
429 
430  $queryBuilder->select('*')
431  ->from($table)
432  ->where(
433  $queryBuilder->expr()->eq(
434  'pid',
435  $queryBuilder->createNamedParameter($pid, \PDO::PARAM_INT)
436  )
437  );
438 
439  foreach (‪QueryHelper::parseOrderBy((string)$orderBy) as $orderPair) {
440  [$fieldName, $order] = $orderPair;
441  $queryBuilder->addOrderBy($fieldName, $order);
442  }
443 
444  return $queryBuilder->execute();
445  }
446 
452  protected function ‪makeConfigurationForm(array $inData): void
453  {
454  $nameSuggestion = '';
455  // Page tree export options:
456  if (‪MathUtility::canBeInterpretedAsInteger($inData['pagetree']['id'])) {
457  $this->standaloneView->assign('treeHTML', $this->treeHTML);
458 
459  $opt = [
460  -2 => $this->lang->getLL('makeconfig_tablesOnThisPage'),
461  -1 => $this->lang->getLL('makeconfig_expandedTree'),
462  0 => $this->lang->sL('LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:labels.depth_0'),
463  1 => $this->lang->sL('LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:labels.depth_1'),
464  2 => $this->lang->sL('LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:labels.depth_2'),
465  3 => $this->lang->sL('LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:labels.depth_3'),
466  4 => $this->lang->sL('LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:labels.depth_4'),
467  999 => $this->lang->sL('LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:labels.depth_infi'),
468  ];
469  $this->standaloneView->assign('levelSelectOptions', $opt);
470  $this->standaloneView->assign('tableSelectOptions', $this->‪getTableSelectOptions('pages'));
471  $nameSuggestion .= 'tree_PID' . $inData['pagetree']['id'] . '_L' . $inData['pagetree']['levels'];
472  }
473  // Single record export:
474  if (is_array($inData['record'])) {
475  $records = [];
476  foreach ($inData['record'] as $ref) {
477  $rParts = explode(':', $ref);
478  [$tName, $rUid] = $rParts;
479  $nameSuggestion .= $tName . '_' . $rUid;
480  $rec = ‪BackendUtility::getRecordWSOL((string)$tName, (int)$rUid);
481  if (!empty($rec)) {
482  $records[] = [
483  'icon' => $this->iconFactory->getIconForRecord($tName, $rec, ‪Icon::SIZE_SMALL)->render(),
484  'title' => ‪BackendUtility::getRecordTitle($tName, $rec, true),
485  'tableName' => $tName,
486  'recordUid' => $rUid
487  ];
488  }
489  }
490  $this->standaloneView->assign('records', $records);
491  }
492 
493  // Single tables/pids:
494  if (is_array($inData['list'])) {
495  // Display information about pages from which the export takes place
496  $tableList = [];
497  foreach ($inData['list'] as $reference) {
498  $referenceParts = explode(':', $reference);
499  $tableName = $referenceParts[0];
500  if ($this->‪getBackendUser()->check('tables_select', $tableName)) {
501  // If the page is actually the root, handle it differently
502  // NOTE: we don't compare integers, because the number actually comes from the split string above
503  if ($referenceParts[1] === '0') {
504  $iconAndTitle = $this->iconFactory->getIcon('apps-pagetree-root', ‪Icon::SIZE_SMALL)->render() . ‪$GLOBALS['TYPO3_CONF_VARS']['SYS']['sitename'];
505  } else {
506  $record = ‪BackendUtility::getRecordWSOL('pages', (int)$referenceParts[1]);
507  $iconAndTitle = $this->iconFactory->getIconForRecord('pages', $record, ‪Icon::SIZE_SMALL)->render()
508  . ‪BackendUtility::getRecordTitle('pages', $record, true);
509  }
510 
511  $tableList[] = [
512  'iconAndTitle' => sprintf($this->lang->getLL('makeconfig_tableListEntry'), $tableName, $iconAndTitle),
513  'reference' => $reference
514  ];
515  }
516  }
517  $this->standaloneView->assign('tableList', $tableList);
518  }
519 
520  $this->standaloneView->assign('externalReferenceTableSelectOptions', $this->‪getTableSelectOptions());
521  $this->standaloneView->assign('externalStaticTableSelectOptions', $this->‪getTableSelectOptions());
522  $this->standaloneView->assign('nameSuggestion', $nameSuggestion);
523  }
524 
530  protected function ‪makeAdvancedOptionsForm(array $inData): void
531  {
533  $loadedExtensions = array_combine($loadedExtensions, $loadedExtensions);
534  $this->standaloneView->assign('extensions', $loadedExtensions);
535  $this->standaloneView->assign('inData', $inData);
536  }
537 
543  protected function ‪makeSaveForm(array $inData): void
544  {
545  $opt = $this->presetRepository->getPresets((int)$inData['pagetree']['id']);
546 
547  $this->standaloneView->assign('presetSelectOptions', $opt);
548 
549  $saveFolder = $this->‪getDefaultImportExportFolder();
550  if ($saveFolder) {
551  $this->standaloneView->assign('saveFolder', $saveFolder->getCombinedIdentifier());
552  }
553 
554  // Add file options:
555  $opt = [];
556  $opt['xml'] = $this->lang->getLL('makesavefo_xml');
557  if ($this->export->compress) {
558  $opt['t3d_compressed'] = $this->lang->getLL('makesavefo_t3dFileCompressed');
559  }
560  $opt['t3d'] = $this->lang->getLL('makesavefo_t3dFile');
561 
562  $this->standaloneView->assign('filetypeSelectOptions', $opt);
563 
564  $fileName = '';
565  if ($saveFolder) {
566  $this->standaloneView->assign('saveFolder', $saveFolder->getPublicUrl());
567  $this->standaloneView->assign('hasSaveFolder', true);
568  }
569  $this->standaloneView->assign('fileName', $fileName);
570  }
571 
578  protected function ‪getTableSelectOptions(string $excludeList = ''): array
579  {
580  $optValues = [];
581  if (!GeneralUtility::inList($excludeList, '_ALL')) {
582  $optValues['_ALL'] = '[' . $this->lang->getLL('ALL_tables') . ']';
583  }
584  foreach (‪$GLOBALS['TCA'] as $table => $_) {
585  if (!GeneralUtility::inList($excludeList, $table) && $this->‪getBackendUser()->check('tables_select', $table)) {
586  $optValues[$table] = $table;
587  }
588  }
589  natsort($optValues);
590  return $optValues;
591  }
592 
600  protected function ‪filterPageIds(array $exclude): string
601  {
602  // Get keys:
603  $exclude = array_keys($exclude);
604  // Traverse
605  $pageIds = [];
606  foreach ($exclude as $element) {
607  [$table, $uid] = explode(':', $element);
608  if ($table === 'pages') {
609  $pageIds[] = (int)$uid;
610  }
611  }
612  // Add to clause:
613  if (!empty($pageIds)) {
614  return ' AND uid NOT IN (' . implode(',', $pageIds) . ')';
615  }
616  return '';
617  }
618 
622  protected function ‪getBackendUser(): ‪BackendUserAuthentication
623  {
624  return ‪$GLOBALS['BE_USER'];
625  }
626 }
‪TYPO3\CMS\Core\Imaging\Icon\SIZE_SMALL
‪const SIZE_SMALL
Definition: Icon.php:30
‪TYPO3\CMS\Core\Database\Query\QueryHelper\parseOrderBy
‪static array array[] parseOrderBy(string $input)
Definition: QueryHelper.php:44
‪TYPO3\CMS\Core\Utility\PathUtility
Definition: PathUtility.php:24
‪TYPO3\CMS\Impexp\Controller\ExportController\makeAdvancedOptionsForm
‪makeAdvancedOptionsForm(array $inData)
Definition: ExportController.php:525
‪TYPO3\CMS\Core\Utility\MathUtility\canBeInterpretedAsInteger
‪static bool canBeInterpretedAsInteger($var)
Definition: MathUtility.php:74
‪TYPO3\CMS\Impexp\Controller
Definition: ExportController.php:18
‪TYPO3\CMS\Impexp\Controller\ExportController\$excludeDisabledRecords
‪bool $excludeDisabledRecords
Definition: ExportController.php:70
‪TYPO3\CMS\Impexp\Controller\ExportController\exportData
‪exportData(array $inData)
Definition: ExportController.php:146
‪TYPO3\CMS\Impexp\Controller\ExportController\makeConfigurationForm
‪makeConfigurationForm(array $inData)
Definition: ExportController.php:447
‪TYPO3\CMS\Core\Imaging\Icon
Definition: Icon.php:26
‪TYPO3\CMS\Impexp\View\ExportPageTreeView
Definition: ExportPageTreeView.php:30
‪TYPO3\CMS\Impexp\Controller\ExportController\$treeHTML
‪string $treeHTML
Definition: ExportController.php:66
‪TYPO3\CMS\Impexp\Domain\Repository\PresetRepository
Definition: PresetRepository.php:31
‪TYPO3\CMS\Core\Exception
‪TYPO3\CMS\Impexp\Controller\ExportController\mainAction
‪ResponseInterface mainAction(ServerRequestInterface $request)
Definition: ExportController.php:92
‪TYPO3\CMS\Core\Resource\Exception\ExistingTargetFileNameException
Definition: ExistingTargetFileNameException.php:24
‪TYPO3\CMS\Impexp\Controller\ExportController\$presetRepository
‪PresetRepository $presetRepository
Definition: ExportController.php:76
‪TYPO3\CMS\Backend\Tree\View\PageTreeView
Definition: PageTreeView.php:24
‪TYPO3\CMS\Core\Utility\PathUtility\basename
‪static string basename($path)
Definition: PathUtility.php:165
‪TYPO3\CMS\Impexp\Controller\ExportController\$moduleName
‪string $moduleName
Definition: ExportController.php:58
‪TYPO3\CMS\Impexp\Controller\ExportController\getBackendUser
‪BackendUserAuthentication getBackendUser()
Definition: ExportController.php:617
‪TYPO3\CMS\Core\Utility\ExtensionManagementUtility
Definition: ExtensionManagementUtility.php:43
‪TYPO3\CMS\Impexp\Controller\ExportController\filterPageIds
‪string filterPageIds(array $exclude)
Definition: ExportController.php:595
‪TYPO3\CMS\Impexp\Controller\ImportExportController
Definition: ImportExportController.php:42
‪TYPO3\CMS\Impexp\Controller\ExportController
Definition: ExportController.php:53
‪TYPO3\CMS\Backend\Routing\Exception\RouteNotFoundException
Definition: RouteNotFoundException.php:22
‪TYPO3\CMS\Core\Database\Query\QueryHelper
Definition: QueryHelper.php:32
‪TYPO3\CMS\Backend\Routing\UriBuilder
Definition: UriBuilder.php:38
‪TYPO3\CMS\Impexp\Controller\ExportController\addRecordsForPid
‪addRecordsForPid(int $k, array $tables)
Definition: ExportController.php:388
‪TYPO3\CMS\Impexp\Controller\ImportExportController\$lang
‪LanguageService $lang
Definition: ImportExportController.php:63
‪TYPO3\CMS\Core\Resource\Folder
Definition: Folder.php:37
‪TYPO3\CMS\Impexp\Controller\ImportExportController\getButtons
‪getButtons()
Definition: ImportExportController.php:173
‪TYPO3\CMS\Backend\Utility\BackendUtility\getRecordTitle
‪static string getRecordTitle($table, $row, $prep=false, $forceResult=true)
Definition: BackendUtility.php:1541
‪TYPO3\CMS\Core\Resource\Folder\checkActionPermission
‪bool checkActionPermission($action)
Definition: Folder.php:423
‪TYPO3\CMS\Impexp\Controller\ExportController\__construct
‪__construct()
Definition: ExportController.php:78
‪TYPO3\CMS\Core\Authentication\BackendUserAuthentication
Definition: BackendUserAuthentication.php:62
‪TYPO3\CMS\Impexp\Controller\ImportExportController\getLanguageService
‪LanguageService getLanguageService()
Definition: ImportExportController.php:232
‪TYPO3\CMS\Backend\Utility\BackendUtility\BEenableFields
‪static string BEenableFields($table, $inv=false)
Definition: BackendUtility.php:225
‪TYPO3\CMS\Backend\Utility\BackendUtility
Definition: BackendUtility.php:75
‪TYPO3\CMS\Backend\Utility\BackendUtility\getRecordWSOL
‪static array getRecordWSOL( $table, $uid, $fields=' *', $where='', $useDeleteClause=true, $unsetMovePointers=false)
Definition: BackendUtility.php:139
‪TYPO3\CMS\Backend\Utility\BackendUtility\getRecord
‪static array null getRecord($table, $uid, $fields=' *', $where='', $useDeleteClause=true)
Definition: BackendUtility.php:95
‪TYPO3\CMS\Core\Messaging\AbstractMessage\OK
‪const OK
Definition: AbstractMessage.php:29
‪TYPO3\CMS\Backend\Utility\BackendUtility\readPageAccess
‪static array false readPageAccess($id, $perms_clause)
Definition: BackendUtility.php:597
‪TYPO3\CMS\Core\Messaging\FlashMessage
Definition: FlashMessage.php:24
‪$GLOBALS
‪$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['adminpanel']['modules']
Definition: ext_localconf.php:5
‪TYPO3\CMS\Core\Database\Query\Restriction\DeletedRestriction
Definition: DeletedRestriction.php:28
‪TYPO3\CMS\Impexp\Export
Definition: Export.php:64
‪TYPO3\CMS\Impexp\Controller\ImportExportController\getDefaultImportExportFolder
‪Folder null getDefaultImportExportFolder()
Definition: ImportExportController.php:200
‪TYPO3\CMS\Core\Utility\GeneralUtility\rmdir
‪static bool rmdir($path, $removeNonEmpty=false)
Definition: GeneralUtility.php:2075
‪TYPO3\CMS\Core\Utility\MathUtility
Definition: MathUtility.php:22
‪TYPO3\CMS\Core\Utility\ExtensionManagementUtility\getLoadedExtensionListArray
‪static array getLoadedExtensionListArray()
Definition: ExtensionManagementUtility.php:1852
‪TYPO3\CMS\Impexp\Controller\ExportController\exec_listQueryPid
‪Statement exec_listQueryPid(string $table, int $pid)
Definition: ExportController.php:411
‪TYPO3\CMS\Core\Database\ConnectionPool
Definition: ConnectionPool.php:46
‪TYPO3\CMS\Core\Localization\LanguageService\getLL
‪string getLL($index)
Definition: LanguageService.php:154
‪TYPO3\CMS\Core\Utility\GeneralUtility
Definition: GeneralUtility.php:46
‪TYPO3\CMS\Core\Utility\GeneralUtility\writeFile
‪static bool writeFile($file, $content, $changePermissions=false)
Definition: GeneralUtility.php:1836
‪TYPO3\CMS\Core\Messaging\FlashMessageService
Definition: FlashMessageService.php:27
‪TYPO3\CMS\Impexp\Controller\ExportController\$export
‪Export $export
Definition: ExportController.php:62
‪TYPO3\CMS\Core\Messaging\AbstractMessage\ERROR
‪const ERROR
Definition: AbstractMessage.php:31
‪TYPO3\CMS\Impexp\Controller\ExportController\getTableSelectOptions
‪array getTableSelectOptions(string $excludeList='')
Definition: ExportController.php:573
‪TYPO3\CMS\Core\Http\HtmlResponse
Definition: HtmlResponse.php:26
‪TYPO3\CMS\Impexp\Controller\ExportController\makeSaveForm
‪makeSaveForm(array $inData)
Definition: ExportController.php:538
‪TYPO3\CMS\Core\Database\Query\Restriction\WorkspaceRestriction
Definition: WorkspaceRestriction.php:39