[TASK] Export binary data from sys_file records 64/27364/11
authorMarc Bastian Heinrichs <typo3@mbh-software.de>
Wed, 5 Feb 2014 19:51:34 +0000 (20:51 +0100)
committerAnja Leichsenring <aleichsenring@ab-softlab.de>
Wed, 5 Mar 2014 19:28:52 +0000 (20:28 +0100)
Until now files from TCA type group internal_type
file or file_reference were included as binary data in
the export only. Include also the binary data from
sys_file records in a separate array.

Resolves: #55431
Releases: 6.2
Change-Id: I9a1b1f090705f6a42ff34f98ec95b62a3a79c9c1
Reviewed-on: https://review.typo3.org/27364
Reviewed-by: Bernhard Kraft
Reviewed-by: Wouter Wolters
Tested-by: Wouter Wolters
Reviewed-by: Anja Leichsenring
Tested-by: Anja Leichsenring
14 files changed:
typo3/sysext/impexp/Classes/Controller/ImportExportController.php
typo3/sysext/impexp/Classes/ImportExport.php
typo3/sysext/impexp/Tests/Functional/Export/AbstractExportTestCase.php [new file with mode: 0644]
typo3/sysext/impexp/Tests/Functional/Export/PagesAndTtContent/ExportTest.php [new file with mode: 0644]
typo3/sysext/impexp/Tests/Functional/Export/PagesAndTtContentWithImages/ExportTest.php [new file with mode: 0644]
typo3/sysext/impexp/Tests/Functional/Fixtures/Database/sys_file.xml [new file with mode: 0644]
typo3/sysext/impexp/Tests/Functional/Fixtures/Database/sys_file_metadata.xml [new file with mode: 0644]
typo3/sysext/impexp/Tests/Functional/Fixtures/Database/sys_file_reference.xml [new file with mode: 0644]
typo3/sysext/impexp/Tests/Functional/Fixtures/Database/sys_file_storage.xml [new file with mode: 0644]
typo3/sysext/impexp/Tests/Functional/Fixtures/Database/sys_language.xml [new file with mode: 0644]
typo3/sysext/impexp/Tests/Functional/Fixtures/Database/tt_content-with-image.xml [new file with mode: 0644]
typo3/sysext/impexp/Tests/Functional/Fixtures/Folders/fileadmin/user_upload/typo3_image2.jpg [new file with mode: 0644]
typo3/sysext/impexp/Tests/Functional/Fixtures/ImportExport/pages-and-ttcontent-with-image.xml [new file with mode: 0644]
typo3/sysext/impexp/Tests/Functional/ImportExport/ExportSimpleTest.php [deleted file]

index d306c2c..0993ac2 100644 (file)
@@ -45,6 +45,16 @@ class ImportExportController extends \TYPO3\CMS\Backend\Module\BaseScriptClass {
        public $pageinfo;
 
        /**
+        * @var \TYPO3\CMS\Impexp\ImportExport
+        */
+       protected $export;
+
+       /**
+        * @var \TYPO3\CMS\Impexp\ImportExport
+        */
+       protected $import;
+
+       /**
         * Main module function
         *
         * @return void
@@ -282,6 +292,9 @@ class ImportExportController extends \TYPO3\CMS\Backend\Module\BaseScriptClass {
                // Finally files are added:
                // MUST be after the DBrelations are set so that files from ALL added records are included!
                $this->export->export_addFilesFromRelations();
+
+               $this->export->export_addFilesFromSysFilesRecords();
+
                // If the download button is clicked, return file
                if ($inData['download_export'] || $inData['save_export']) {
                        switch ((string) $inData['filetype']) {
index f1acc3a..a54ca7e 100644 (file)
@@ -748,7 +748,7 @@ class ImportExport {
                // Traverse all "rels" registered for "records"
                if (is_array($this->dat['records'])) {
                        foreach ($this->dat['records'] as $k => $value) {
-                               if (is_array($this->dat['records'][$k]['rels'])) {
+                               if (isset($this->dat['records'][$k]['rels']) && is_array($this->dat['records'][$k]['rels'])) {
                                        foreach ($this->dat['records'][$k]['rels'] as $fieldname => $vR) {
                                                // For all file type relations:
                                                if ($vR['type'] == 'file') {
@@ -829,6 +829,61 @@ class ImportExport {
        }
 
        /**
+        * This adds all files from sys_file records
+        *
+        * @return void
+        */
+       public function export_addFilesFromSysFilesRecords() {
+               if (!isset($this->dat['header']['records']['sys_file']) || !is_array($this->dat['header']['records']['sys_file'])) {
+                       return;
+               }
+               foreach (array_keys($this->dat['header']['records']['sys_file']) as $sysFileUid) {
+                       $recordData = $this->dat['records']['sys_file:' . $sysFileUid]['data'];
+                       $file = \TYPO3\CMS\Core\Resource\ResourceFactory::getInstance()->createFileObject($recordData);
+                       $this->export_addSysFile($file);
+               }
+       }
+
+       /**
+        * Adds a files content from a sys file record to the export memory
+        *
+        * @param \TYPO3\CMS\Core\Resource\File $file
+        * @return void
+        */
+       public function export_addSysFile(\TYPO3\CMS\Core\Resource\File $file) {
+               if ($file->getProperty('size') >= $this->maxFileSize) {
+                       $this->error('File ' . $file->getPublicUrl() . ' was larger (' . GeneralUtility::formatSize($file->getProperty('size')) . ') than the maxFileSize (' . GeneralUtility::formatSize($this->maxFileSize) . ')! Skipping.');
+                       return;
+               }
+               try {
+                       $fileContent = $file->getContents();
+               } catch (\TYPO3\CMS\Core\Resource\Exception\InsufficientFileAccessPermissionsException $e) {
+                       $this->error('File ' . $file->getPublicUrl() . ': ' . $e->getMessage());
+                       return;
+               } catch (\TYPO3\CMS\Core\Resource\Exception\IllegalFileExtensionException $e) {
+                       $this->error('File ' . $file->getPublicUrl() . ': ' . $e->getMessage());
+                       return;
+               }
+               $fileRec = array();
+               $fileRec['filesize'] = $file->getProperty('size');
+               $fileRec['filename'] = $file->getProperty('name');
+               $fileRec['filemtime'] = $file->getProperty('modification_date');
+
+               // build unique id based on the storage and the file identifier
+               $fileId = md5($file->getStorage()->getUid() . ':' . $file->getProperty('identifier_hash'));
+
+               // Setting this data in the header
+               $this->dat['header']['files_fal'][$fileId] = $fileRec;
+
+               // ... and finally add the heavy stuff:
+               $fileRec['content'] = $fileContent;
+               $fileRec['content_sha1'] = $file->getProperty('sha1');
+
+               $this->dat['files_fal'][$fileId] = $fileRec;
+       }
+
+
+       /**
         * Adds a files content to the export memory
         *
         * @param array $fI File information with three keys: "filename" = filename without path, "ID_absFile" = absolute filepath to the file (including the filename), "ID" = md5 hash of "ID_absFile". "relFileName" is optional for files attached to records, but mandatory for soft referenced files (since the relFileName determines where such a file should be stored!)
@@ -1067,6 +1122,8 @@ class ImportExport {
                        $out .= $this->addFilePart(serialize($this->dat['records']), $compress);
                        // adding files:
                        $out .= $this->addFilePart(serialize($this->dat['files']), $compress);
+                       // adding files_fal:
+                       $out .= $this->addFilePart(serialize($this->dat['files_fal']), $compress);
                }
                return $out;
        }
@@ -1086,6 +1143,7 @@ class ImportExport {
                                        'clearStackPath' => TRUE,
                                        'parentTagMap' => array(
                                                'files' => 'file',
+                                               'files_fal' => 'file',
                                                'records' => 'table',
                                                'table' => 'rec',
                                                'rec:rels' => 'relations',
@@ -1151,6 +1209,12 @@ class ImportExport {
                                        'parentTagMap' => array(
                                                'files' => 'file'
                                        )
+                               ),
+                               '/files_fal' => array(
+                                       'disableTypeAttrib' => TRUE,
+                                       'parentTagMap' => array(
+                                               'files_fal' => 'file'
+                                       )
                                )
                        )
                );
@@ -2233,6 +2297,7 @@ class ImportExport {
                                        if ($all) {
                                                $this->dat['records'] = $this->getNextFilePart($fd, 1, 'records');
                                                $this->dat['files'] = $this->getNextFilePart($fd, 1, 'files');
+                                               $this->dat['files_fal'] = $this->getNextFilePart($fd, 1, 'files_fal');
                                        }
                                        $this->loadInit();
                                        return TRUE;
diff --git a/typo3/sysext/impexp/Tests/Functional/Export/AbstractExportTestCase.php b/typo3/sysext/impexp/Tests/Functional/Export/AbstractExportTestCase.php
new file mode 100644 (file)
index 0000000..79e59b2
--- /dev/null
@@ -0,0 +1,89 @@
+<?php
+namespace TYPO3\CMS\Impexp\Tests\Functional\Export;
+
+/***************************************************************
+ * Copyright notice
+ *
+ * (c) 2014 Marc Bastian Heinrichs <typo3@mbh-software.de>
+ * All rights reserved
+ *
+ * This script is part of the TYPO3 project. The TYPO3 project is
+ * free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * The GNU General Public License can be found at
+ * http://www.gnu.org/copyleft/gpl.html.
+ *
+ * This script is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * This copyright notice MUST APPEAR in all copies of the script!
+ ***************************************************************/
+
+use TYPO3\CMS\Core\Utility\GeneralUtility;
+
+/**
+ * Functional test for the ImportExport
+ */
+abstract class AbstractExportTestCase extends \TYPO3\CMS\Core\Tests\FunctionalTestCase {
+
+       /**
+        * @var array
+        */
+       protected $coreExtensionsToLoad = array('impexp');
+
+       /**
+        * @var \TYPO3\CMS\Impexp\ImportExport
+        */
+       protected $export;
+
+       /**
+        * Set up for set up the backend user, initialize the language object
+        * and creating the ImportExport instance
+        *
+        * @return void
+        */
+       public function setUp() {
+               parent::setUp();
+
+               $this->setUpBackendUserFromFixture(1);
+               // Needed to avoid PHP Warnings
+               $GLOBALS['TBE_STYLES']['spriteIconApi']['iconsAvailable'] = array();
+
+               \TYPO3\CMS\Core\Core\Bootstrap::getInstance()->initializeLanguageObject();
+
+               $this->export = GeneralUtility::makeInstance('TYPO3\\CMS\\Impexp\\ImportExport');
+               $this->export->init(0, 'export');
+       }
+
+       /**
+        * Builds a flat array containing the page tree with the PageTreeView
+        * based on given start pid and depth and set it in the ImportExport object.
+        *
+        * @param int $pidToStart
+        * @param int $depth
+        * @return void
+        */
+       protected function setPageTree($pidToStart, $depth = 1) {
+
+               $permsClause = $GLOBALS['BE_USER']->getPagePermsClause(1);
+
+               /** @var $tree \TYPO3\CMS\Backend\Tree\View\PageTreeView */
+               $tree = GeneralUtility::makeInstance('TYPO3\\CMS\\Backend\\Tree\\View\\PageTreeView');
+               $tree->init('AND ' . $permsClause);
+               $tree->tree[] = array('row' => $pidToStart);
+               $tree->buffer_idH = array();
+               $tree->getTree($pidToStart, $depth, '');
+
+               $idH[$pidToStart]['uid'] = $pidToStart;
+               if (count($tree->buffer_idH)) {
+                       $idH[$pidToStart]['subrow'] = $tree->buffer_idH;
+               }
+
+               $this->export->setPageTree($idH);
+       }
+}
\ No newline at end of file
diff --git a/typo3/sysext/impexp/Tests/Functional/Export/PagesAndTtContent/ExportTest.php b/typo3/sysext/impexp/Tests/Functional/Export/PagesAndTtContent/ExportTest.php
new file mode 100644 (file)
index 0000000..6a4b615
--- /dev/null
@@ -0,0 +1,88 @@
+<?php
+namespace TYPO3\CMS\Impexp\Tests\Functional\Export\PagesAndTtContent;
+
+/***************************************************************
+ * Copyright notice
+ *
+ * (c) 2014 Marc Bastian Heinrichs <typo3@mbh-software.de>
+ * All rights reserved
+ *
+ * This script is part of the TYPO3 project. The TYPO3 project is
+ * free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * The GNU General Public License can be found at
+ * http://www.gnu.org/copyleft/gpl.html.
+ *
+ * This script is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * This copyright notice MUST APPEAR in all copies of the script!
+ ***************************************************************/
+
+use TYPO3\CMS\Backend\Utility\BackendUtility;
+
+require_once __DIR__ . '/../AbstractExportTestCase.php';
+
+/**
+ * Functional test for the ImportExport
+ */
+class ExportTest extends \TYPO3\CMS\Impexp\Tests\Functional\Export\AbstractExportTestCase {
+
+       public function setUp() {
+               parent::setUp();
+
+               $this->importDataSet(__DIR__ . '/../../Fixtures/Database/pages.xml');
+               $this->importDataSet(__DIR__ . '/../../Fixtures/Database/tt_content.xml');
+       }
+
+       /**
+        * @test
+        */
+       public function exportSimplePagesAndRelatedTtContent() {
+
+               $this->export->setRecordTypesIncludeFields(
+                       array(
+                               'pages' => array(
+                                       'title',
+                                       'deleted',
+                                       'doktype',
+                                       'hidden',
+                                       'perms_everybody'
+                               ),
+                               'tt_content' => array(
+                                       'CType',
+                                       'header',
+                                       'deleted',
+                                       'hidden',
+                                       't3ver_oid'
+                               )
+                       )
+               );
+
+               $this->export->export_addRecord('pages', BackendUtility::getRecord('pages', 1));
+               $this->export->export_addRecord('pages', BackendUtility::getRecord('pages', 2));
+               $this->export->export_addRecord('tt_content', BackendUtility::getRecord('tt_content', 1));
+
+               $this->setPageTree(1, 1);
+
+               // After adding ALL records we set relations:
+               for ($a = 0; $a < 10; $a++) {
+                       $addR = $this->export->export_addDBRelations($a);
+                       if (!count($addR)) {
+                               break;
+                       }
+               }
+
+               $this->export->export_addFilesFromRelations();
+
+               $out = $this->export->compileMemoryToFileContent('xml');
+
+               $this->assertXmlStringEqualsXmlFile(__DIR__ . '/../../Fixtures/ImportExport/pages-and-ttcontent.xml', $out);
+       }
+
+}
diff --git a/typo3/sysext/impexp/Tests/Functional/Export/PagesAndTtContentWithImages/ExportTest.php b/typo3/sysext/impexp/Tests/Functional/Export/PagesAndTtContentWithImages/ExportTest.php
new file mode 100644 (file)
index 0000000..3ea1c71
--- /dev/null
@@ -0,0 +1,165 @@
+<?php
+namespace TYPO3\CMS\Impexp\Tests\Functional\Export\PagesAndTtContentWithImages;
+
+/***************************************************************
+ * Copyright notice
+ *
+ * (c) 2014 Marc Bastian Heinrichs <typo3@mbh-software.de>
+ * All rights reserved
+ *
+ * This script is part of the TYPO3 project. The TYPO3 project is
+ * free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * The GNU General Public License can be found at
+ * http://www.gnu.org/copyleft/gpl.html.
+ *
+ * This script is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * This copyright notice MUST APPEAR in all copies of the script!
+ ***************************************************************/
+
+use TYPO3\CMS\Backend\Utility\BackendUtility;
+
+require_once __DIR__ . '/../AbstractExportTestCase.php';
+
+/**
+ * Functional test for the ImportExport
+ */
+class ExportTest extends \TYPO3\CMS\Impexp\Tests\Functional\Export\AbstractExportTestCase {
+
+
+
+       protected $pathsToLinkInTestInstance = array(
+               'typo3/sysext/impexp/Tests/Functional/Fixtures/Folders/fileadmin/user_upload' => 'fileadmin/user_upload'
+       );
+
+       public function setUp() {
+               parent::setUp();
+
+               $this->importDataSet(__DIR__ . '/../../Fixtures/Database/pages.xml');
+               $this->importDataSet(__DIR__ . '/../../Fixtures/Database/tt_content-with-image.xml');
+               $this->importDataSet(__DIR__ . '/../../Fixtures/Database/sys_language.xml');
+               $this->importDataSet(__DIR__ . '/../../Fixtures/Database/sys_file.xml');
+               $this->importDataSet(__DIR__ . '/../../Fixtures/Database/sys_file_metadata.xml');
+               $this->importDataSet(__DIR__ . '/../../Fixtures/Database/sys_file_reference.xml');
+               $this->importDataSet(__DIR__ . '/../../Fixtures/Database/sys_file_storage.xml');
+
+       }
+
+       /**
+        * @test
+        */
+       public function exportPagesAndRelatedTtContentWithImages() {
+
+               $this->export->setRecordTypesIncludeFields(
+                       array(
+                               'pages' => array(
+                                       'title',
+                                       'deleted',
+                                       'doktype',
+                                       'hidden',
+                                       'perms_everybody'
+                               ),
+                               'tt_content' => array(
+                                       'CType',
+                                       'header',
+                                       'deleted',
+                                       'hidden',
+                                       'image',
+                                       't3ver_oid'
+                               ),
+                               'sys_language' => array(
+                                       'uid',
+                                       'pid',
+                                       'hidden',
+                                       'title',
+                                       'flag'
+                               ),
+                               'sys_file_reference' => array(
+                                       'uid_local',
+                                       'uid_foreign',
+                                       'tablenames',
+                                       'fieldname',
+                                       'sorting_foreign',
+                                       'table_local',
+                                       'title',
+                                       'description',
+                                       'alternative',
+                                       'link',
+                               ),
+                               'sys_file' => array(
+                                       'storage',
+                                       'type',
+                                       'metadata',
+                                       'identifier',
+                                       'identifier_hash',
+                                       'folder_hash',
+                                       'mime_type',
+                                       'name',
+                                       'sha1',
+                                       'size',
+                                       'creation_date',
+                                       'modification_date',
+                               ),
+                               'sys_file_storage' => array(
+                                       'name',
+                                       'description',
+                                       'driver',
+                                       'configuration',
+                                       'is_default',
+                                       'is_browsable',
+                                       'is_public',
+                                       'is_writable',
+                                       'is_online'
+                               ),
+                               'sys_file_metadata' => array(
+                                       'title',
+                                       'width',
+                                       'height',
+                                       'description',
+                                       'alternative',
+                                       'file',
+                                       'sys_language_uid',
+                                       'l10n_parent'
+                               )
+                       )
+               );
+
+               $this->export->relOnlyTables = array(
+                       'sys_file',
+                       'sys_file_metadata',
+                       'sys_file_storage',
+                       'sys_language'
+               );
+
+               $this->export->export_addRecord('pages', BackendUtility::getRecord('pages', 1));
+               $this->export->export_addRecord('pages', BackendUtility::getRecord('pages', 2));
+               $this->export->export_addRecord('tt_content', BackendUtility::getRecord('tt_content', 1));
+               $this->export->export_addRecord('sys_language', BackendUtility::getRecord('sys_language', 1));
+               $this->export->export_addRecord('sys_file_reference', BackendUtility::getRecord('sys_file_reference', 1));
+
+               $this->setPageTree(1, 1);
+
+               // After adding ALL records we set relations:
+               for ($a = 0; $a < 10; $a++) {
+                       $addR = $this->export->export_addDBRelations($a);
+                       if (!count($addR)) {
+                               break;
+                       }
+               }
+
+               $this->export->export_addFilesFromRelations();
+               $this->export->export_addFilesFromSysFilesRecords();
+
+               $out = $this->export->compileMemoryToFileContent('xml');
+
+               $this->assertXmlStringEqualsXmlFile(__DIR__ . '/../../Fixtures/ImportExport/pages-and-ttcontent-with-image.xml', $out);
+       }
+
+}
\ No newline at end of file
diff --git a/typo3/sysext/impexp/Tests/Functional/Fixtures/Database/sys_file.xml b/typo3/sysext/impexp/Tests/Functional/Fixtures/Database/sys_file.xml
new file mode 100644 (file)
index 0000000..fa76c6b
--- /dev/null
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<dataset>
+       <sys_file>
+               <uid>1</uid>
+               <pid>0</pid>
+               <storage>1</storage>
+               <type>2</type>
+               <identifier>/user_upload/typo3_image2.jpg</identifier>
+               <identifier_hash>f90bb9a35622f35b5279195e324eddbaec8164b2</identifier_hash>
+               <folder_hash>19669f1e02c2f16705ec7587044c66443be70725</folder_hash>
+               <extension>jpg</extension>
+               <mime_type>image/jpeg</mime_type>
+               <name>typo3_image2.jpg</name>
+               <sha1>da9acdf1e105784a57bbffec9520969578287797</sha1>
+               <size>7958</size>
+               <creation_date>1389878273</creation_date>
+               <modification_date>1389878273</modification_date>
+       </sys_file>
+</dataset>
\ No newline at end of file
diff --git a/typo3/sysext/impexp/Tests/Functional/Fixtures/Database/sys_file_metadata.xml b/typo3/sysext/impexp/Tests/Functional/Fixtures/Database/sys_file_metadata.xml
new file mode 100644 (file)
index 0000000..103f57c
--- /dev/null
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<dataset>
+       <sys_file_metadata>
+               <uid>1</uid>
+               <pid>0</pid>
+               <file>1</file>
+               <title>Dummy image</title>
+               <width>400</width>
+               <height>300</height>
+               <description>This is a dummy image.</description>
+               <alternative>Photo of program code</alternative>
+               <sys_language_uid>0</sys_language_uid>
+               <l10n_parent>0</l10n_parent>
+       </sys_file_metadata>
+       <sys_file_metadata>
+               <uid>2</uid>
+               <pid>0</pid>
+               <file>1</file>
+               <title>Beispiel Bild</title>
+               <width>0</width>
+               <height>0</height>
+               <description>Nur ein Beispielbild.</description>
+               <alternative>Foto von Programmcode</alternative>
+               <sys_language_uid>1</sys_language_uid>
+               <l10n_parent>1</l10n_parent>
+       </sys_file_metadata>
+</dataset>
\ No newline at end of file
diff --git a/typo3/sysext/impexp/Tests/Functional/Fixtures/Database/sys_file_reference.xml b/typo3/sysext/impexp/Tests/Functional/Fixtures/Database/sys_file_reference.xml
new file mode 100644 (file)
index 0000000..d13d3ad
--- /dev/null
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<dataset>
+       <sys_file_reference>
+               <uid>1</uid>
+               <pid>1</pid>
+               <uid_local>1</uid_local>
+               <uid_foreign>1</uid_foreign>
+               <tablenames>tt_content</tablenames>
+               <fieldname>image</fieldname>
+               <table_local>sys_file</table_local>
+       </sys_file_reference>
+</dataset>
\ No newline at end of file
diff --git a/typo3/sysext/impexp/Tests/Functional/Fixtures/Database/sys_file_storage.xml b/typo3/sysext/impexp/Tests/Functional/Fixtures/Database/sys_file_storage.xml
new file mode 100644 (file)
index 0000000..b9a212e
--- /dev/null
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<dataset>
+       <sys_file_storage>
+               <uid>1</uid>
+               <pid>0</pid>
+               <name>fileadmin/ (auto-created)</name>
+               <driver>Local</driver>
+               <configuration><![CDATA[<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<T3FlexForms>
+       <data>
+               <sheet index="sDEF">
+                       <language index="lDEF">
+                               <field index="basePath">
+                                       <value index="vDEF">fileadmin/</value>
+                               </field>
+                               <field index="pathType">
+                                       <value index="vDEF">relative</value>
+                               </field>
+                               <field index="caseSensitive">
+                                       <value index="vDEF">1</value>
+                               </field>
+                       </language>
+               </sheet>
+       </data>
+</T3FlexForms>]]></configuration>
+               <is_browsable>1</is_browsable>
+               <is_public>1</is_public>
+               <is_writable>1</is_writable>
+               <is_online>1</is_online>
+       </sys_file_storage>
+</dataset>
\ No newline at end of file
diff --git a/typo3/sysext/impexp/Tests/Functional/Fixtures/Database/sys_language.xml b/typo3/sysext/impexp/Tests/Functional/Fixtures/Database/sys_language.xml
new file mode 100644 (file)
index 0000000..cdea9af
--- /dev/null
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<dataset>
+       <sys_language>
+               <uid>1</uid>
+               <pid>0</pid>
+               <hidden>0</hidden>
+               <title>Deutsch</title>
+               <flag>de</flag>
+               <static_lang_isocode>0</static_lang_isocode>
+       </sys_language>
+</dataset>
\ No newline at end of file
diff --git a/typo3/sysext/impexp/Tests/Functional/Fixtures/Database/tt_content-with-image.xml b/typo3/sysext/impexp/Tests/Functional/Fixtures/Database/tt_content-with-image.xml
new file mode 100644 (file)
index 0000000..2e6ebcd
--- /dev/null
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<dataset>
+       <tt_content>
+               <uid>1</uid>
+               <pid>1</pid>
+               <CType>textpic</CType>
+               <header>Test content</header>
+               <image>1</image>
+               <deleted>0</deleted>
+               <t3ver_oid>0</t3ver_oid>
+               <t3ver_wsid>0</t3ver_wsid>
+       </tt_content>
+</dataset>
\ No newline at end of file
diff --git a/typo3/sysext/impexp/Tests/Functional/Fixtures/Folders/fileadmin/user_upload/typo3_image2.jpg b/typo3/sysext/impexp/Tests/Functional/Fixtures/Folders/fileadmin/user_upload/typo3_image2.jpg
new file mode 100644 (file)
index 0000000..bfb572b
Binary files /dev/null and b/typo3/sysext/impexp/Tests/Functional/Fixtures/Folders/fileadmin/user_upload/typo3_image2.jpg differ
diff --git a/typo3/sysext/impexp/Tests/Functional/Fixtures/ImportExport/pages-and-ttcontent-with-image.xml b/typo3/sysext/impexp/Tests/Functional/Fixtures/ImportExport/pages-and-ttcontent-with-image.xml
new file mode 100644 (file)
index 0000000..a121cd8
--- /dev/null
@@ -0,0 +1,593 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<T3RecordDocument>
+       <header type="array">
+               <records type="array">
+                       <table index="pages" type="array">
+                               <rec index="1" type="array">
+                                       <uid>1</uid>
+                                       <pid>0</pid>
+                                       <title>Root</title>
+                                       <size>162</size>
+                                       <relations index="rels" type="array">
+                                       </relations>
+                                       <softrefs type="array">
+                                       </softrefs>
+                               </rec>
+                               <rec index="2" type="array">
+                                       <uid>2</uid>
+                                       <pid>1</pid>
+                                       <title>Dummy 1-2</title>
+                                       <size>167</size>
+                                       <relations index="rels" type="array">
+                                       </relations>
+                                       <softrefs type="array">
+                                       </softrefs>
+                               </rec>
+                       </table>
+                       <table index="tt_content" type="array">
+                               <rec index="1" type="array">
+                                       <uid>1</uid>
+                                       <pid>1</pid>
+                                       <title>Test content</title>
+                                       <size>188</size>
+                                       <relations index="rels" type="array">
+                                               <element index="sys_file_reference:1" type="array">
+                                                       <id>1</id>
+                                                       <table>sys_file_reference</table>
+                                               </element>
+                                       </relations>
+                                       <softrefs type="array">
+                                       </softrefs>
+                               </rec>
+                       </table>
+                       <table index="sys_language" type="array">
+                               <rec index="1" type="array">
+                                       <uid>1</uid>
+                                       <pid>0</pid>
+                                       <title>Deutsch</title>
+                                       <size>109</size>
+                                       <relations index="rels" type="array">
+                                       </relations>
+                                       <softrefs type="array">
+                                       </softrefs>
+                               </rec>
+                       </table>
+                       <table index="sys_file_reference" type="array">
+                               <rec index="1" type="array">
+                                       <uid>1</uid>
+                                       <pid>1</pid>
+                                       <title>1</title>
+                                       <size>292</size>
+                                       <relations index="rels" type="array">
+                                               <element index="sys_file:1" type="array">
+                                                       <id>1</id>
+                                                       <table>sys_file</table>
+                                               </element>
+                                       </relations>
+                                       <softrefs type="array">
+                                       </softrefs>
+                               </rec>
+                       </table>
+                       <table index="sys_file" type="array">
+                               <rec index="1" type="array">
+                                       <uid>1</uid>
+                                       <pid>0</pid>
+                                       <title>typo3_image2.jpg</title>
+                                       <size>532</size>
+                                       <relationLevel>1</relationLevel>
+                                       <relations index="rels" type="array">
+                                               <element index="sys_file_storage:1" type="array">
+                                                       <id>1</id>
+                                                       <table>sys_file_storage</table>
+                                               </element>
+                                               <element index="sys_file_metadata:1" type="array">
+                                                       <id>1</id>
+                                                       <table>sys_file_metadata</table>
+                                               </element>
+                                               <element index="sys_file_metadata:2" type="array">
+                                                       <id>2</id>
+                                                       <table>sys_file_metadata</table>
+                                               </element>
+                                       </relations>
+                                       <softrefs type="array">
+                                       </softrefs>
+                               </rec>
+                       </table>
+                       <table index="sys_file_storage" type="array">
+                               <rec index="1" type="array">
+                                       <uid>1</uid>
+                                       <pid>0</pid>
+                                       <title>fileadmin/ (auto-created)</title>
+                                       <size>722</size>
+                                       <relationLevel>2</relationLevel>
+                                       <relations index="rels" type="array">
+                                       </relations>
+                                       <softrefs type="array">
+                                       </softrefs>
+                               </rec>
+                       </table>
+                       <table index="sys_file_metadata" type="array">
+                               <rec index="1" type="array">
+                                       <uid>1</uid>
+                                       <pid>0</pid>
+                                       <title>typo3_image2.jpg</title>
+                                       <size>294</size>
+                                       <relationLevel>2</relationLevel>
+                                       <relations index="rels" type="array">
+                                               <element index="sys_file:1" type="array">
+                                                       <id>1</id>
+                                                       <table>sys_file</table>
+                                               </element>
+                                       </relations>
+                                       <softrefs type="array">
+                                       </softrefs>
+                               </rec>
+                               <rec index="2" type="array">
+                                       <uid>2</uid>
+                                       <pid>0</pid>
+                                       <title>typo3_image2.jpg</title>
+                                       <size>291</size>
+                                       <relationLevel>2</relationLevel>
+                                       <relations index="rels" type="array">
+                                               <element index="sys_language:1" type="array">
+                                                       <id>1</id>
+                                                       <table>sys_language</table>
+                                               </element>
+                                               <element index="sys_file_reference:1" type="array">
+                                                       <id>1</id>
+                                                       <table>sys_file_reference</table>
+                                               </element>
+                                               <element index="sys_file:1" type="array">
+                                                       <id>1</id>
+                                                       <table>sys_file</table>
+                                               </element>
+                                       </relations>
+                                       <softrefs type="array">
+                                       </softrefs>
+                               </rec>
+                       </table>
+               </records>
+               <pid_lookup type="array">
+                       <page_contents index="0" type="array">
+                               <table index="pages" type="array">
+                                       <item index="1">1</item>
+                               </table>
+                               <table index="sys_language" type="array">
+                                       <item index="1">1</item>
+                               </table>
+                               <table index="sys_file" type="array">
+                                       <item index="1">1</item>
+                               </table>
+                               <table index="sys_file_storage" type="array">
+                                       <item index="1">1</item>
+                               </table>
+                               <table index="sys_file_metadata" type="array">
+                                       <item index="1">1</item>
+                                       <item index="2">1</item>
+                               </table>
+                       </page_contents>
+                       <page_contents index="1" type="array">
+                               <table index="pages" type="array">
+                                       <item index="2">1</item>
+                               </table>
+                               <table index="tt_content" type="array">
+                                       <item index="1">1</item>
+                               </table>
+                               <table index="sys_file_reference" type="array">
+                                       <item index="1">1</item>
+                               </table>
+                       </page_contents>
+               </pid_lookup>
+               <pagetree type="array">
+                       <node index="1" type="array">
+                               <uid>1</uid>
+                               <node index="subrow" type="array">
+                                       <node index="2" type="array">
+                                               <uid>2</uid>
+                                       </node>
+                               </node>
+                       </node>
+               </pagetree>
+               <files_fal type="array">
+                       <file index="4a705ca3ef43b53dc00de861ba2c86af" type="array">
+                               <filesize>7958</filesize>
+                               <filename>typo3_image2.jpg</filename>
+                               <filemtime>1389878273</filemtime>
+                       </file>
+               </files_fal>
+       </header>
+       <records type="array">
+               <tablerow index="pages:1" type="array">
+                       <fieldlist index="data" type="array">
+                               <field index="uid">1</field>
+                               <field index="pid">0</field>
+                               <field index="deleted">0</field>
+                               <field index="perms_everybody">15</field>
+                               <field index="hidden">0</field>
+                               <field index="title">Root</field>
+                               <field index="doktype">1</field>
+                       </fieldlist>
+                       <related index="rels" type="array">
+                       </related>
+               </tablerow>
+               <tablerow index="pages:2" type="array">
+                       <fieldlist index="data" type="array">
+                               <field index="uid">2</field>
+                               <field index="pid">1</field>
+                               <field index="deleted">0</field>
+                               <field index="perms_everybody">15</field>
+                               <field index="hidden">0</field>
+                               <field index="title">Dummy 1-2</field>
+                               <field index="doktype">1</field>
+                       </fieldlist>
+                       <related index="rels" type="array">
+                       </related>
+               </tablerow>
+               <tablerow index="tt_content:1" type="array">
+                       <fieldlist index="data" type="array">
+                               <field index="uid">1</field>
+                               <field index="pid">1</field>
+                               <field index="t3ver_oid">0</field>
+                               <field index="hidden">0</field>
+                               <field index="CType">textpic</field>
+                               <field index="header">Test content</field>
+                               <field index="image">1</field>
+                               <field index="deleted">0</field>
+                       </fieldlist>
+                       <related index="rels" type="array">
+                               <field index="image" type="array">
+                                       <type>db</type>
+                                       <relations index="itemArray" type="array">
+                                               <element index="0" type="array">
+                                                       <id>1</id>
+                                                       <table>sys_file_reference</table>
+                                               </element>
+                                       </relations>
+                               </field>
+                       </related>
+               </tablerow>
+               <tablerow index="sys_language:1" type="array">
+                       <fieldlist index="data" type="array">
+                               <field index="uid">1</field>
+                               <field index="pid">0</field>
+                               <field index="hidden">0</field>
+                               <field index="title">Deutsch</field>
+                               <field index="flag">de</field>
+                       </fieldlist>
+                       <related index="rels" type="array">
+                       </related>
+               </tablerow>
+               <tablerow index="sys_file_reference:1" type="array">
+                       <fieldlist index="data" type="array">
+                               <field index="uid">1</field>
+                               <field index="pid">1</field>
+                               <field index="uid_local">1</field>
+                               <field index="uid_foreign">1</field>
+                               <field index="tablenames">tt_content</field>
+                               <field index="fieldname">image</field>
+                               <field index="sorting_foreign">0</field>
+                               <field index="table_local">sys_file</field>
+                               <field index="title" type="NULL"></field>
+                               <field index="description" type="NULL"></field>
+                               <field index="alternative" type="NULL"></field>
+                               <field index="link" type="NULL"></field>
+                       </fieldlist>
+                       <related index="rels" type="array">
+                               <field index="uid_local" type="array">
+                                       <type>db</type>
+                                       <relations index="itemArray" type="array">
+                                               <element index="0" type="array">
+                                                       <id>1</id>
+                                                       <table>sys_file</table>
+                                               </element>
+                                       </relations>
+                               </field>
+                       </related>
+               </tablerow>
+               <tablerow index="sys_file:1" type="array">
+                       <fieldlist index="data" type="array">
+                               <field index="uid">1</field>
+                               <field index="pid">0</field>
+                               <field index="storage">1</field>
+                               <field index="type">2</field>
+                               <field index="metadata">0</field>
+                               <field index="identifier">/user_upload/typo3_image2.jpg</field>
+                               <field index="identifier_hash">f90bb9a35622f35b5279195e324eddbaec8164b2</field>
+                               <field index="folder_hash">19669f1e02c2f16705ec7587044c66443be70725</field>
+                               <field index="mime_type">image/jpeg</field>
+                               <field index="name">typo3_image2.jpg</field>
+                               <field index="sha1">da9acdf1e105784a57bbffec9520969578287797</field>
+                               <field index="size">7958</field>
+                               <field index="creation_date">1389878273</field>
+                               <field index="modification_date">1389878273</field>
+                       </fieldlist>
+                       <related index="rels" type="array">
+                               <field index="storage" type="array">
+                                       <type>db</type>
+                                       <relations index="itemArray" type="array">
+                                               <element index="0" type="array">
+                                                       <id>1</id>
+                                                       <table>sys_file_storage</table>
+                                               </element>
+                                       </relations>
+                               </field>
+                               <field index="metadata" type="array">
+                                       <type>db</type>
+                                       <relations index="itemArray" type="array">
+                                               <element index="0" type="array">
+                                                       <id>1</id>
+                                                       <table>sys_file_metadata</table>
+                                               </element>
+                                               <element index="1" type="array">
+                                                       <id>2</id>
+                                                       <table>sys_file_metadata</table>
+                                               </element>
+                                       </relations>
+                               </field>
+                       </related>
+               </tablerow>
+               <tablerow index="sys_file_storage:1" type="array">
+                       <fieldlist index="data" type="array">
+                               <field index="uid">1</field>
+                               <field index="pid">0</field>
+                               <field index="name">fileadmin/ (auto-created)</field>
+                               <field index="description" type="NULL"></field>
+                               <field index="driver">Local</field>
+                               <field index="configuration">&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot; standalone=&quot;yes&quot; ?&gt;
+&lt;T3FlexForms&gt;
+       &lt;data&gt;
+               &lt;sheet index=&quot;sDEF&quot;&gt;
+                       &lt;language index=&quot;lDEF&quot;&gt;
+                               &lt;field index=&quot;basePath&quot;&gt;
+                                       &lt;value index=&quot;vDEF&quot;&gt;fileadmin/&lt;/value&gt;
+                               &lt;/field&gt;
+                               &lt;field index=&quot;pathType&quot;&gt;
+                                       &lt;value index=&quot;vDEF&quot;&gt;relative&lt;/value&gt;
+                               &lt;/field&gt;
+                               &lt;field index=&quot;caseSensitive&quot;&gt;
+                                       &lt;value index=&quot;vDEF&quot;&gt;1&lt;/value&gt;
+                               &lt;/field&gt;
+                       &lt;/language&gt;
+               &lt;/sheet&gt;
+       &lt;/data&gt;
+&lt;/T3FlexForms&gt;</field>
+                               <field index="is_default">0</field>
+                               <field index="is_browsable">1</field>
+                               <field index="is_public">1</field>
+                               <field index="is_writable">1</field>
+                               <field index="is_online">1</field>
+                       </fieldlist>
+                       <related index="rels" type="array">
+                               <field index="configuration" type="array">
+                                       <type>flex</type>
+                                       <flexform index="flexFormRels" type="array">
+                                               <db_relations index="db" type="array">
+                                               </db_relations>
+                                               <file_relations index="file" type="array">
+                                               </file_relations>
+                                               <softref_relations index="softrefs" type="array">
+                                               </softref_relations>
+                                       </flexform>
+                               </field>
+                       </related>
+               </tablerow>
+               <tablerow index="sys_file_metadata:1" type="array">
+                       <fieldlist index="data" type="array">
+                               <field index="uid">1</field>
+                               <field index="pid">0</field>
+                               <field index="sys_language_uid">0</field>
+                               <field index="l10n_parent">0</field>
+                               <field index="file">1</field>
+                               <field index="title">Dummy image</field>
+                               <field index="width">400</field>
+                               <field index="height">300</field>
+                               <field index="description">This is a dummy image.</field>
+                               <field index="alternative">Photo of program code</field>
+                       </fieldlist>
+                       <related index="rels" type="array">
+                               <field index="file" type="array">
+                                       <type>db</type>
+                                       <relations index="itemArray" type="array">
+                                               <element index="0" type="array">
+                                                       <id>1</id>
+                                                       <table>sys_file</table>
+                                               </element>
+                                       </relations>
+                               </field>
+                       </related>
+               </tablerow>
+               <tablerow index="sys_file_metadata:2" type="array">
+                       <fieldlist index="data" type="array">
+                               <field index="uid">2</field>
+                               <field index="pid">0</field>
+                               <field index="sys_language_uid">1</field>
+                               <field index="l10n_parent">1</field>
+                               <field index="file">1</field>
+                               <field index="title">Beispiel Bild</field>
+                               <field index="width">0</field>
+                               <field index="height">0</field>
+                               <field index="description">Nur ein Beispielbild.</field>
+                               <field index="alternative">Foto von Programmcode</field>
+                       </fieldlist>
+                       <related index="rels" type="array">
+                               <field index="sys_language_uid" type="array">
+                                       <type>db</type>
+                                       <relations index="itemArray" type="array">
+                                               <element index="0" type="array">
+                                                       <id>1</id>
+                                                       <table>sys_language</table>
+                                               </element>
+                                       </relations>
+                               </field>
+                               <field index="l10n_parent" type="array">
+                                       <type>db</type>
+                                       <relations index="itemArray" type="array">
+                                               <element index="0" type="array">
+                                                       <id>1</id>
+                                                       <table>sys_file_reference</table>
+                                               </element>
+                                       </relations>
+                               </field>
+                               <field index="file" type="array">
+                                       <type>db</type>
+                                       <relations index="itemArray" type="array">
+                                               <element index="0" type="array">
+                                                       <id>1</id>
+                                                       <table>sys_file</table>
+                                               </element>
+                                       </relations>
+                               </field>
+                       </related>
+               </tablerow>
+       </records>
+       <files_fal type="array">
+               <file index="4a705ca3ef43b53dc00de861ba2c86af" type="array">
+                       <filesize>7958</filesize>
+                       <filename>typo3_image2.jpg</filename>
+                       <filemtime>1389878273</filemtime>
+                       <content base64="1">
+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
+</content>
+                       <content_sha1>da9acdf1e105784a57bbffec9520969578287797</content_sha1>
+               </file>
+       </files_fal>
+</T3RecordDocument>
\ No newline at end of file
diff --git a/typo3/sysext/impexp/Tests/Functional/ImportExport/ExportSimpleTest.php b/typo3/sysext/impexp/Tests/Functional/ImportExport/ExportSimpleTest.php
deleted file mode 100644 (file)
index 23358b3..0000000
+++ /dev/null
@@ -1,112 +0,0 @@
-<?php
-namespace TYPO3\CMS\Impexp\Tests\Functional\ImportExport;
-
-/***************************************************************
- * Copyright notice
- *
- * (c) 2014 Marc Bastian Heinrichs <typo3@mbh-software.de>
- * All rights reserved
- *
- * This script is part of the TYPO3 project. The TYPO3 project is
- * free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * The GNU General Public License can be found at
- * http://www.gnu.org/copyleft/gpl.html.
- *
- * This script is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * This copyright notice MUST APPEAR in all copies of the script!
- ***************************************************************/
-
-use TYPO3\CMS\Core\Utility\GeneralUtility;
-use TYPO3\CMS\Backend\Utility\BackendUtility;
-
-/**
- * Functional test for the ImportExport
- */
-class ExportSimpleTest extends \TYPO3\CMS\Core\Tests\FunctionalTestCase {
-
-       /**
-        * @var array
-        */
-       protected $coreExtensionsToLoad = array('impexp');
-
-       public function setUp() {
-               parent::setUp();
-               $this->setUpBackendUserFromFixture(1);
-               // Needed to avoid PHP Warnings
-               $GLOBALS['TBE_STYLES']['spriteIconApi']['iconsAvailable'] = array();
-               $this->importDataSet(__DIR__ . '/../Fixtures/Database/pages.xml');
-               $this->importDataSet(__DIR__ . '/../Fixtures/Database/tt_content.xml');
-       }
-
-       /**
-        * @test
-        */
-       public function canExportSimplePagesAndRelatedTtContent() {
-               $permsClause = $GLOBALS['BE_USER']->getPagePermsClause(1);
-
-               /** @var $export \TYPO3\CMS\Impexp\ImportExport */
-               $export = GeneralUtility::makeInstance('TYPO3\\CMS\\Impexp\\ImportExport');
-               $export->init(0, 'export');
-
-               $export->setRecordTypesIncludeFields(
-                       array(
-                               'pages' => array(
-                                       'title',
-                                       'deleted',
-                                       'doktype',
-                                       'hidden',
-                                       'perms_everybody'
-                               ),
-                               'tt_content' => array(
-                                       'CType',
-                                       'header',
-                                       'deleted',
-                                       'hidden',
-                                       't3ver_oid'
-                               )
-                       )
-               );
-
-               $export->export_addRecord('pages', BackendUtility::getRecord('pages', 1));
-               $export->export_addRecord('pages', BackendUtility::getRecord('pages', 2));
-               $export->export_addRecord('tt_content', BackendUtility::getRecord('tt_content', 1));
-
-               $pidToStart = 1;
-               /** @var $tree \TYPO3\CMS\Backend\Tree\View\PageTreeView */
-               $tree = GeneralUtility::makeInstance('TYPO3\\CMS\\Backend\\Tree\\View\\PageTreeView');
-               $tree->init('AND ' . $permsClause);
-               $tree->tree[] = array('row' => $pidToStart);
-               $tree->buffer_idH = array();
-               $tree->getTree(1, 1, '');
-
-               $idH = array();
-               $idH[$pidToStart]['uid'] = $pidToStart;
-               if (count($tree->buffer_idH)) {
-                       $idH[$pidToStart]['subrow'] = $tree->buffer_idH;
-               }
-               $export->setPageTree($idH);
-
-               // After adding ALL records we set relations:
-               for ($a = 0; $a < 10; $a++) {
-                       $addR = $export->export_addDBRelations($a);
-                       if (!count($addR)) {
-                               break;
-                       }
-               }
-
-               $export->export_addFilesFromRelations();
-
-               $out = $export->compileMemoryToFileContent('xml');
-
-               $this->assertXmlStringEqualsXmlFile(__DIR__ . '/../Fixtures/ImportExport/pages-and-ttcontent.xml', $out);
-       }
-
-}