Bug #38703

Publishing records with IRRE records -> lost relation

Added by Dimitri Koenig over 9 years ago. Updated over 7 years ago.

Status:
Rejected
Priority:
Must have
Assignee:
-
Category:
Workspaces
Target version:
-
Start date:
2012-07-06
Due date:
% Done:

0%

Estimated time:
TYPO3 Version:
4.5
PHP Version:
Tags:
Complexity:
Is Regression:
No
Sprint Focus:

Description

Within my own extension i have a record with an inline record (IRRE) which is versioning too.

Wether this relation is an MM or 1:n (comma separated) doesn't matter:
As soon as i publish my main record or even both records, the relation gets lost.

If i use MM relation, the uids within the MM table won't be updated.
If i use an 1:n relation the field containing the related uid is empty after publishing.

I tried to publish only the main record, i tried to publish both records, nothing works.


Files

patch_20121129_1.diff (632 Bytes) patch_20121129_1.diff Stephan Ude, 2012-11-29 17:47

Related issues

Related to TYPO3 Core - Task #45676: Workspace references are not consideredRejected2013-02-20

Actions
#1

Updated by Tizian Schmidlin over 9 years ago

An ugly but working workaround for this issue is the following:

t3lib/class.t3lib_tcemain.php, line 919:


$query = 'UPDATE _NAME OF YOUR IRRE FIELD_ SET pid=_ORIGINAL PID_ WHERE pid=-1 AND deleted = 0';
$GLOBALS['TYPO3_DB']->sql_query($query);

It could be packed into a separate class as a tcemain hook with the method "hook_processDatamap_afterDatabaseOperations", this would of course improve the readability masively.

#2

Updated by Stephan Ude about 9 years ago

The function t3lib_TCEmain::isReferenceField is causing this issue. It doesn't take care of inline types so they are not recognized as reference fields.

function isReferenceField($conf) {
    return ($conf['type'] == 'group' && $conf['internal_type'] == 'db' || $conf['type'] == 'select' && $conf['foreign_table']);
}

The class t3lib_refindex has got the same function with nearly the same content, but it takes care of inline types.

function isReferenceField($conf) {
    return ($conf['type'] == 'group' && $conf['internal_type'] == 'db') || (($conf['type'] == 'select' || $conf['type'] == 'inline') && $conf['foreign_table']);
}

Attached is a patch for the t3lib_TCEmain with whom the bug can be fixed. Though I'm not quite sure, if every usage of the function isReferenceField in t3lib_TCEmain is taking care of inline types as reference fields.

#3

Updated by Michael Stucki almost 8 years ago

  • Category changed from Bugs to Workspaces
#4

Updated by Michael Stucki almost 8 years ago

  • Project changed from 624 to TYPO3 Core
  • Category changed from Workspaces to Workspaces
#5

Updated by Oliver Hader over 7 years ago

  • Status changed from New to Rejected
  • Is Regression set to No

Please upgrade to TYPO3 CMS 6.2 which got a lot of fixes in that regard.
No backports from 6.2 to 4.5 since the chances are high that some other component breaks.

Please see #54851 and #58282

Also available in: Atom PDF