diff --git a/typo3/sysext/core/Classes/Database/ReferenceIndex.php b/typo3/sysext/core/Classes/Database/ReferenceIndex.php index 04016ec2276b069e5e85c28f442d605c5bed76a6..93f40a87e0a2c52eeafa16d54c430a0edd18fbfd 100644 --- a/typo3/sysext/core/Classes/Database/ReferenceIndex.php +++ b/typo3/sysext/core/Classes/Database/ReferenceIndex.php @@ -17,6 +17,7 @@ namespace TYPO3\CMS\Core\Database; use TYPO3\CMS\Backend\Utility\BackendUtility; use TYPO3\CMS\Core\Messaging\FlashMessage; use TYPO3\CMS\Core\Utility\GeneralUtility; +use TYPO3\CMS\Core\Utility\StringUtility; /** * Reference index processing and relation extraction @@ -308,7 +309,10 @@ class ReferenceIndex { switch ((string)$el['subst']['type']) { case 'db': list($tableName, $recordId) = explode(':', $el['subst']['recordRef']); - $this->relations[] = $this->createEntryData($table, $uid, $fieldname, $flexpointer, $deleted, $tableName, $recordId, '', -1, $spKey, $subKey); + // Prevent double references for files and file relations + if ($tableName !== 'sys_file' && $tableName !== 'sys_file_reference') { + $this->relations[] = $this->createEntryData($table, $uid, $fieldname, $flexpointer, $deleted, $tableName, $recordId, '', -1, $spKey, $subKey); + } break; case 'file_reference': // not used (see getRelations()), but fallback to file @@ -597,7 +601,7 @@ class ReferenceIndex { $fileArray[] = array('table' => 'sys_file', 'id' => $fileUid['uid_local']); } return $fileArray; - } elseif ($conf['type'] == 'input' && isset($conf['wizards']['link']) && trim($value)) { + } elseif ($conf['type'] == 'input' && isset($conf['wizards']['link']) && StringUtility::beginsWith($value, 'file:')) { try { $file = \TYPO3\CMS\Core\Resource\ResourceFactory::getInstance()->retrieveFileOrFolderObject($value); } catch (\Exception $e) { diff --git a/typo3/sysext/impexp/Tests/Functional/Fixtures/Database/tt_content.xml b/typo3/sysext/impexp/Tests/Functional/Fixtures/Database/tt_content.xml index 6a7a7b69c8b47f09d18592e05347f427c019c716..420f7cbd27eb5c3b95ba88abdc0fbb51c34725a0 100644 --- a/typo3/sysext/impexp/Tests/Functional/Fixtures/Database/tt_content.xml +++ b/typo3/sysext/impexp/Tests/Functional/Fixtures/Database/tt_content.xml @@ -5,7 +5,7 @@ <pid>1</pid> <CType>text</CType> <header>Test content</header> - <header_link>fileadmin/user_upload/typo3_image3.jpg</header_link> + <header_link>file:2</header_link> <deleted>0</deleted> <t3ver_oid>0</t3ver_oid> <t3ver_wsid>0</t3ver_wsid> @@ -15,7 +15,7 @@ <pid>1</pid> <CType>text</CType> <header>Test content 2</header> - <header_link>typo3conf/ext/template_extension/Resources/Public/Templates/Empty.html</header_link> + <header_link>file:4</header_link> <deleted>0</deleted> <t3ver_oid>0</t3ver_oid> <t3ver_wsid>0</t3ver_wsid> diff --git a/typo3/sysext/impexp/Tests/Functional/Fixtures/ImportExportXml/pages-and-ttcontent.xml b/typo3/sysext/impexp/Tests/Functional/Fixtures/ImportExportXml/pages-and-ttcontent.xml index 9c839bae3b5b491ceef3d6a7fb64dd39fff38bc6..2a1be5242cf3658f749919e4aae7572502195e3d 100644 --- a/typo3/sysext/impexp/Tests/Functional/Fixtures/ImportExportXml/pages-and-ttcontent.xml +++ b/typo3/sysext/impexp/Tests/Functional/Fixtures/ImportExportXml/pages-and-ttcontent.xml @@ -29,7 +29,7 @@ <uid>1</uid> <pid>1</pid> <title>Test content</title> - <size>230</size> + <size>197</size> <relations index="rels" type="array"> <element index="sys_file:2" type="array"> <table>sys_file</table> @@ -37,13 +37,24 @@ </element> </relations> <softrefs type="array"> + <softref_element index="header_link:typolink:2487ce518ed56d22f20f259928ff43f1:0" type="array"> + <field>header_link</field> + <spKey>typolink</spKey> + <matchString>file:2</matchString> + <subst type="array"> + <type>db</type> + <recordRef>sys_file:2</recordRef> + <tokenID>2487ce518ed56d22f20f259928ff43f1</tokenID> + <tokenValue>file:2</tokenValue> + </subst> + </softref_element> </softrefs> </rec> <rec index="2" type="array"> <uid>2</uid> <pid>1</pid> <title>Test content 2</title> - <size>264</size> + <size>199</size> <relations index="rels" type="array"> <element index="sys_file:4" type="array"> <table>sys_file</table> @@ -54,7 +65,13 @@ <softref_element index="header_link:typolink:81b8b33df54ef433f1cbc7c3e513e6c4:0" type="array"> <field>header_link</field> <spKey>typolink</spKey> - <matchString>typo3conf/ext/template_extension/Resources/Public/Templates/Empty.html</matchString> + <matchString>file:4</matchString> + <subst type="array"> + <type>db</type> + <recordRef>sys_file:4</recordRef> + <tokenID>81b8b33df54ef433f1cbc7c3e513e6c4</tokenID> + <tokenValue>file:4</tokenValue> + </subst> </softref_element> </softrefs> </rec> @@ -167,7 +184,7 @@ <field index="CType">text</field> <field index="header">Test content</field> <field index="deleted">0</field> - <field index="header_link">fileadmin/user_upload/typo3_image3.jpg</field> + <field index="header_link">file:2</field> </fieldlist> <related index="rels" type="array"> <field index="header_link" type="array"> @@ -178,6 +195,22 @@ <id>2</id> </element> </relations> + <softrefs type="array"> + <keys type="array"> + <softref_key index="typolink" type="array"> + <softref_element index="2487ce518ed56d22f20f259928ff43f1:0" type="array"> + <matchString>file:2</matchString> + <subst type="array"> + <type>db</type> + <recordRef>sys_file:2</recordRef> + <tokenID>2487ce518ed56d22f20f259928ff43f1</tokenID> + <tokenValue>file:2</tokenValue> + </subst> + </softref_element> + </softref_key> + </keys> + <tokenizedContent>{softref:2487ce518ed56d22f20f259928ff43f1}</tokenizedContent> + </softrefs> </field> </related> </tablerow> @@ -190,7 +223,7 @@ <field index="CType">text</field> <field index="header">Test content 2</field> <field index="deleted">0</field> - <field index="header_link">typo3conf/ext/template_extension/Resources/Public/Templates/Empty.html</field> + <field index="header_link">file:4</field> </fieldlist> <related index="rels" type="array"> <field index="header_link" type="array"> @@ -205,10 +238,17 @@ <keys type="array"> <softref_key index="typolink" type="array"> <softref_element index="81b8b33df54ef433f1cbc7c3e513e6c4:0" type="array"> - <matchString>typo3conf/ext/template_extension/Resources/Public/Templates/Empty.html</matchString> + <matchString>file:4</matchString> + <subst type="array"> + <type>db</type> + <recordRef>sys_file:4</recordRef> + <tokenID>81b8b33df54ef433f1cbc7c3e513e6c4</tokenID> + <tokenValue>file:4</tokenValue> + </subst> </softref_element> </softref_key> </keys> + <tokenizedContent>{softref:81b8b33df54ef433f1cbc7c3e513e6c4}</tokenizedContent> </softrefs> </field> </related> diff --git a/typo3/sysext/impexp/Tests/Functional/Import/PagesAndTtContent/DataSet/Assertion/importPagesAndRelatedTtContent.csv b/typo3/sysext/impexp/Tests/Functional/Import/PagesAndTtContent/DataSet/Assertion/importPagesAndRelatedTtContent.csv index 8c3a3dbedf388d53a8adf8aed56c8359a7e46d09..45e833edcd1b5534684d23b2b8ca435acb6ca204 100644 --- a/typo3/sysext/impexp/Tests/Functional/Import/PagesAndTtContent/DataSet/Assertion/importPagesAndRelatedTtContent.csv +++ b/typo3/sysext/impexp/Tests/Functional/Import/PagesAndTtContent/DataSet/Assertion/importPagesAndRelatedTtContent.csv @@ -4,8 +4,8 @@ ,2,1,256,0,"Dummy 1-2" "tt_content" ,"uid","pid","sorting","deleted","header","header_link" -,1,1,256,0,"Test content 2","typo3conf/ext/template_extension/Resources/Public/Templates/Empty.html" -,2,1,128,0,"Test content","fileadmin/user_upload/typo3_image3.jpg" +,1,1,256,0,"Test content 2","file:2" +,2,1,128,0,"Test content","file:1" "sys_file" ,"uid","pid","storage","type","identifier","identifier_hash","folder_hash","extension","mime_type","name","sha1","size" ,1,0,1,2,"/user_upload/typo3_image3.jpg","25777b72e5e1cbed2d1b33e4fe5b737304b5bd28","19669f1e02c2f16705ec7587044c66443be70725","jpg","image/jpeg","typo3_image3.jpg","e873c1e2ffd0f191e183a1057de3eef4d62e782d","5565"